小编use*_*444的帖子

通过它的把手获得一个窗口的界限

我试图获取当前活动窗口的高度和宽度.

[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
public static extern IntPtr GetForegroundWindow();

[DllImport("user32.dll")]
private static extern bool GetWindowRect(IntPtr hWnd, Rectangle rect);

Rectangle bonds = new Rectangle();
GetWindowRect(handle, bonds);
Bitmap bmp = new Bitmap(bonds.Width, bonds.Height);
Run Code Online (Sandbox Code Playgroud)

此代码不起作用,因为我需要使用RECT,我不知道如何.

c# graphics winapi

11
推荐指数
1
解决办法
2万
查看次数

将字符转换为键

我有一个特殊的字符(/ @)我想转换为Keys.

我目前正在使用这个:

Keys k = (Keys)'/';
Run Code Online (Sandbox Code Playgroud)

在调试时,我得到k等于:

LButton | RButton | MButton | 返回| 空间类型 - System.Windows.Forms.Keys

k的键码假设是111.

注意:代码适用于大写字母,例如:

Keys k = (Keys)'Z';
Run Code Online (Sandbox Code Playgroud)

在这种情况下,k的密钥代码是90,这没关系.

我正试图找到一种方法将特殊字符转换为键.(或正确的密钥代码)

尝试使用以下方式全局发送密钥:

public static void SendKey(byte keycode)
    {
        const int KEYEVENTF_EXTENDEDKEY = 0x1;
        const int KEYEVENTF_KEYUP = 0x2;
        keybd_event(keycode, 0x45, KEYEVENTF_EXTENDEDKEY, (UIntPtr)0);
        keybd_event(keycode, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, (UIntPtr)0);
    }

SendKey((byte)Keys.{SomethingHere});
Run Code Online (Sandbox Code Playgroud)

c# key char special-characters

7
推荐指数
2
解决办法
2万
查看次数

C#备份和恢复剪贴板

我有一个使用剪贴板的程序,但我希望在完成后将剪贴板恢复到以前的状态.

这是我的代码:

IDataObject temp = Clipboard.GetDataObject();

//Some stuff that change Cliboard here
Clipboard.SetText("Hello");
//Some stuff that change Cliboard here

Clipboard.SetDataObject(temp);
Run Code Online (Sandbox Code Playgroud)

但是,如果我复制一个文本,并运行此代码,我在记事本上什么也得不到.

注意:我不能使用Clipboard.Contains,因为我想保留剪贴板EXACLY之前的状态,即使用户复制了一个文件.

c# clipboard winforms

7
推荐指数
1
解决办法
3566
查看次数

使用没有实际文件的FileStream

我想使用FileStream类来避免在客户端的计算机上保存任何文件.但是FileStream的每个构造函数都需要一个文件路径.

如何从流创建FileStream而不必将其保存在硬盘上?

编辑:我已经在使用memorystream来存储我的信息.但在某些时候我需要将文件压缩到另一个流中.问题是zip命令(我看过GZipStream - 它将FILES拉到STREAM)需要一个源文件路径(FileStream).

如果我不能通过从流创建FileStream来超越,是否有其他方式来压缩流?

c# file filestream

7
推荐指数
1
解决办法
4804
查看次数

C#?:表达

我有一个多个if的功能(这不是实际代码)

if(n == 1)
   m = 1;
if(n == 2)
   m = 2;
if(n == 3)
   m = 3;
Run Code Online (Sandbox Code Playgroud)

而不是我想把它们全部变成?:表达式:

(n == 1) ? m = 1;
Run Code Online (Sandbox Code Playgroud)

但它说它期待':'

我熟悉C++中的?:表达式,你可以简单地写:

(n == 1) ? m = 1 : 0;
Run Code Online (Sandbox Code Playgroud)

但是0不会在这里.这是一个荒谬的问题,我甚至无法在谷歌中找到答案,因为它忽略了'?:'作为一个单词.

答案:答案在评论中太糟糕了.在这个表达式中无法"无所事事",我应该使用if-else或switch.谢谢.

c# if-statement

6
推荐指数
2
解决办法
7036
查看次数

jQuery - 当焦点离开一组控件时引发事件

我在div中有3个文本框,当焦点离开其中一个输入而不转到这3个输入中的另一个时,我需要引发一个事件.

只要用户正在编辑这3个控件中的一个,事件就不会引发.只有当焦点变为不是这些输入之一的控件时,才会引发该事件.

我尝试使用focusout所有3个输入并检查是否document.ActiveElement是3个输入中focusout的一个,但是一个控件focusin在另一个之前发生,因此document.ActiveElement总是为空.

任何人都知道如何解决这个问题?

html javascript jquery jquery-focusout

6
推荐指数
1
解决办法
1669
查看次数

C#扫描某个块的图像

我有一张照片:

尺寸为1000x1000白色,带有随机黑点.(它可能包含黑色方块(尺寸50x50))

有没有一种简单的方法可以知道图片是否包含黑色方块(尺寸为50x50)?我想扫描图片的每个像素,如果找到一个黑色像素,扫描他旁边的那个,直到我得到一个50x50的方格,或者直到我得到一个白色像素并继续扫描.但它必须扫描超过一百万像素(如果他没有找到方块).

这基本上是代码(不需要完成它,正如我之前所说,它将花费太多时间来扫描它.如果整个图片是白色而且根据黑色像素的数量要多得多,则会花费数百万次.)

        for (int i = 0; i < pic.Width; i++)
        {
            for (int j = 0; j < pic.Height; j++)
            {
                if (pic.GetPixel(i, j) == Color.Black)
                {
                    //Search for the entire square at that area
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)

是的,时间很重要(这就是为什么我不想让像素超过一百万次).有任何想法吗?

c# image pixel

5
推荐指数
1
解决办法
2493
查看次数

C#让光标消失

我有一个全屏c#应用程序,我希望当用户在应用程序中时,光标将不可见.(仅使用键盘控制应用程序)

谁知道怎么做这样的事情?

PS:我更喜欢光标完全不可用而不是"隐形"或"透明"

c# j# cursor winforms

4
推荐指数
1
解决办法
3852
查看次数

C#垃圾收集器Ressurection NullRefException

我有这个代码(用于一个非常好的和友好的网站)

public class B
{
    static public A IntA;
}

public class A
{
    private int x;

    public A(int num)
    {
        x = num;
    }

    public void Print()
    {
        Console.WriteLine("Value : {0}", x);
    }

    ~A()
    {
        B.IntA = this;
    }
}

class RessurectionExample
{
    // Ressurection
    static void Main()
    {
        // Create A instance and print its value
        A a = new A(50);
        a.Print();

        // Strand the A object (have nothing point to it)
        a = null;

        // Activate the …
Run Code Online (Sandbox Code Playgroud)

c# garbage-collection

4
推荐指数
1
解决办法
97
查看次数

C++在数学方程中使用E.

我正在尝试解决aX 2 + bX + c = 0但我似乎无法使用数学标题(我不应该使用它).

printf("%E",(-b+(b*b-4*a*c)E0.5)/2a);
Run Code Online (Sandbox Code Playgroud)

c++ math

2
推荐指数
1
解决办法
699
查看次数