Если у кнопки есть горячая клавиша (Alt + ...), вы можете использовать отправку сообщения о нажатии клавиш клавиатуры:
//Presses virtual key in active window.
void PressVK(UINT vk)
{
//Down Alt.
keybd_event(VK_MENU, MapVirtualKey(VK_MENU, 0), 0, 0);
//Press key.
keybd_event(vk, MapVirtualKey(vk, 0), 0, 0);
keybd_event(vk, MapVirtualKey(vk, 0), KEYEVENTF_KEYUP, 0);
//Up Alt.
keybd_event(VK_MENU, MapVirtualKey(VK_MENU, 0), KEYEVENTF_KEYUP, 0);
}
Это код C ++.Но вы можете импортировать все эти функции в C # и использовать их.Все, что вам нужно: активируйте целевое окно и вызовите эту функцию с правильным ключом в качестве параметра.
Если у вас есть ручка кнопки, тогда вызовите GetWindowRect
.Он вернет указатель на структуру RECT
, которая получает экранные координаты левого верхнего и правого нижнего углов окна.Таким образом, вы сможете выполнять эмуляцию клика независимо от размера основного окна.
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool GetWindowRect(HandleRef hWnd, out RECT lpRect);
[StructLayout(LayoutKind.Sequential)]
public struct RECT
{
public int Left;
public int Top;
public int Right;
public int Bottom;
}
Используя его:
RECT rect;
if (!GetWindowRect(new HandleRef(this, this.Handle), out rect))
{
//Error.
}