C++ 如何将击键发送到其他进程(例如记事本)?
我有一个记事本的PID:2860C++ 如何将击键发送到其他进程(例如记事本)?,c++,windows,winapi,sendmessage,sendkeys,C++,Windows,Winapi,Sendmessage,Sendkeys,我有一个记事本的PID:2860 #include <iostream> #include <windows.h> #include <psapi.h> using namespace std; HWND SendIt (DWORD dwProcessID){ HWND hwnd = NULL; do { hwnd = FindWindowEx(NULL, hwnd, NULL, NULL); DWORD d
#include <iostream>
#include <windows.h>
#include <psapi.h>
using namespace std;
HWND SendIt (DWORD dwProcessID){
HWND hwnd = NULL;
do {
hwnd = FindWindowEx(NULL, hwnd, NULL, NULL);
DWORD dwPID = 0;
GetWindowThreadProcessId(hwnd, &dwPID);
if (dwPID == dwProcessID) {
cout<<"yay:"<<hwnd<<":pid:"<<dwPID<<endl;//debug
PostMessage(hwnd,WM_KEYDOWN,'A',1); //send
}
} while (hwnd != 0);
return hwnd; //Ignore that
}
int main()
{
SendIt(2680); //notepad ID
return 0;
}
#包括
#包括
#包括
使用名称空间std;
HWND SendIt(DWORD dwProcessID){
HWND HWND=NULL;
做{
hwnd=FindWindowEx(NULL,hwnd,NULL,NULL);
DWORD dwPID=0;
GetWindowThreadProcessId(hwnd和dwPID);
if(dwPID==dwProcessID){
应该使用PostThreadMessage
hThread = GetWindowThreadProcessId(hwnd,&dwPID);
if (dwPID == dwProcessID && hThread!= NULL ) {
PostThreadMessage( hThread, WM_KEYDOWN,'A',1);
}
两个进程必须由同一用户创建。否则,函数将失败并返回错误\u无效\u线程\u ID
如果另一个进程是正在捕获键盘输入的活动窗口,则SendInput或keybd_事件也可用于发送击键事件
我有一个记事本的PID:2860
我忍不住注意到你说的是2860,打的是2680
SendIt(2680);//记事本ID
可能重复,以及无数其他。尝试使用SendInput您正在向记事本窗口发送假输入,而您应该将其发送到其中包含的编辑框。另请参阅