2

我有一个简单的问题。如何从我的 C# 代码以编程方式访问 aero snap。就像,如果我单击一个“向左对齐”按钮,我希望我的程序窗口向左对齐,就像手动在那里药物一样。我查看了所有内容,但所有问题似乎都是关于 aero snap 不使用表单,并防止它捕捉表单。不是以编程方式捕捉表单。我很高兴使用 interloping。谢谢

4

2 回答 2

5

假设您使用的是 Windows 7,您可以做的是将 AreoSnap Keypress 发送到当前活动窗口。

这个代码项目有一篇非常好的文章来说明这一点。

另请查看这个SO question。

似乎一种方法是sendmessage在 User32.dll 中使用。

这是一个示例,假设“记事本”是您想要将击键发送到的程序:

[DllImport("user32.dll", EntryPoint = "FindWindowEx")]
public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
[DllImport("User32.dll")]
public static extern int SendMessage(IntPtr hWnd, int uMsg, int wParam, string lParam);
private void button1_Click(object sender, EventArgs e)
{
    Process [] notepads=Process.GetProcessesByName("notepad");
    if(notepads.Length==0)return;            
    if (notepads[0] != null)
    {
        IntPtr child= FindWindowEx(notepads[0].MainWindowHandle, new IntPtr(0), "Edit", null);
        SendMessage(child, 0x000C, 0, textBox1.Text);
    }
}
于 2012-11-11T22:03:03.593 回答
1

我也需要这样做,并发现Windows 输入模拟器非常有用。

于 2014-02-18T16:36:32.870 回答