如果按钮有热键(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.
}