Как я могу программно использовать функции Aero Snap из кода C#

У меня простой вопрос. Как я могу получить доступ к Aero Snap программно из моего кода C#. Например, если я нажму кнопку "Привязать влево", я хочу, чтобы окно моей программы щелкнуло влево, точно так же, как когда его лекарство появилось вручную. Я посмотрел по всему SO, но все вопросы, похоже, касаются того, как aero snap не работает с формой и не дает ей снимать форму. Не программно привязывать форму. Я счастлив использовать взаимосвязь. Спасибо

2 ответа

Решение

Если вы работаете в Windows 7, вы можете отправить нажатие клавиши AreoSnap в текущее активное окно.

Этот кодпроект имеет очень хорошую статью о том, как это сделать.

Также проверьте этот ТАК вопрос.

Кажется, что один из способов сделать это - использовать 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);
    }
}

Я также должен был сделать это и нашел, что Windows Input Simulator очень полезен.

Другие вопросы по тегам