一网络程序 通过多开软件 进入后 分为四个窗口 由于4个窗口的title是变化的 所以我选择用进程名来达到想要的目的 但这4个窗口的进程名都是一样的 csdn高手告诉我用进程id区分 但是 进程id是变化的 我该怎么知道哪个进程id是对应哪个窗口的呢? 
我是想通过进程id来对那个窗口进行控制 但是有四个窗口 怎么区分这些进程id所对应的窗口 以避免模拟鼠标点击到另外一个窗口 请给个伪代码明示吧 谢谢 一定要代码哦 否则不明白哦 

解决方案 »

  1.   

    可以用CreateProcess来创建进程...这样就可以得到进程的ID
      

  2.   

    4个窗口的类名是相同的,可以用SPY++查出类名。
    在程序中,根据类名用FindWindowEx可以找出这4个窗口的句柄,根据窗口句柄用GetWindowThreadProcessId可以得到进程ID。
      

  3.   

    可以使用共享数据段来存储4个进程的ID和/或主窗口的句柄,这样每个进程实例都能知道所有实例的进程ID和/或窗口句柄
      

  4.   

    #include <PSAPI.H>
    #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;
    }