使用AttachThreadInput函數可以將當前進程的輸入與指定進程的輸入關聯起來,從而實現改變其他進程的輸入法狀態。
具體步驟如下:
HWND hwndTarget = FindWindow(NULL, "目標進程窗口標題");
DWORD dwThreadId = GetWindowThreadProcessId(hwndTarget, NULL);
DWORD dwCurrentThreadId = GetCurrentThreadId();
AttachThreadInput(dwCurrentThreadId, dwThreadId, TRUE);
SetForegroundWindow(hwndTarget);
INPUT input[2] = { 0 };
input[0].type = input[1].type = INPUT_KEYBOARD;
input[0].ki.wVk = input[1].ki.wVk = VK_MENU; // ALT鍵的虛擬鍵碼
input[1].ki.dwFlags = KEYEVENTF_KEYUP; // 釋放ALT鍵
SendInput(2, input, sizeof(INPUT));
AttachThreadInput(dwCurrentThreadId, dwThreadId, FALSE);
注意事項: