ボタンにホットキー (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.
}