一网络程序 通过多开软件 进入后 分为四个窗口 由于4个窗口的title是变化的 所以我选择用进程名来达到想要的目的 但这4个窗口的进程名都是一样的 csdn高手告诉我用进程id区分 但是 进程id是变化的 我该怎么知道哪个进程id是对应哪个窗口的呢?
我是想通过进程id来对那个窗口进行控制 但是有四个窗口 怎么区分这些进程id所对应的窗口 以避免模拟鼠标点击到另外一个窗口 请给个伪代码明示吧 谢谢 一定要代码哦 否则不明白哦
我是想通过进程id来对那个窗口进行控制 但是有四个窗口 怎么区分这些进程id所对应的窗口 以避免模拟鼠标点击到另外一个窗口 请给个伪代码明示吧 谢谢 一定要代码哦 否则不明白哦
在程序中,根据类名用FindWindowEx可以找出这4个窗口的句柄,根据窗口句柄用GetWindowThreadProcessId可以得到进程ID。
#pragma comment (lib, "psapi.lib")BOOL CALLBACK EnumWindowsProc(HWND hwnd, DWORD lParam ) {
bool continueEnum=true;
char exeName[256];
DWORD pid;
GetWindowThreadProcessId(hwnd, &pid);
HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ, false, pid);
if ( hProcess ) {
DWORD cbReturned;
HMODULE hModule;
EnumProcessModules( hProcess, &hModule, sizeof(hModule), &cbReturned );
GetModuleBaseName(hProcess, hModule, exeName, sizeof(exeName));
printf("pid: %d, name=%s\n", pid, exeName);
if(exeName和你的进程名一样) {
记下该进程号和hwnd
}
}
return continueEnum;
}int main(int argc, char* argv[]) {
EnumWindows(WNDENUMPROC(EnumWindowsProc), NULL);
return 0;
}