如题,比如我现在得到了一个对话框的窗口句柄,但是我不知道它是MSN的对话框还是QQ的聊天对话框。我想通过获得这个对话框所属进程的进程名来判断,该如何实现呢? 在线```````````````

解决方案 »

  1.   

    使用 GetWindowThreadProcessId 可以获取进程的 ID 值,然后使用 ID 值来获取进程的文件名。
      

  2.   


    WindowHandle=::FindWindow("#32770",NULL);//取得一个对话框的窗口句柄。
    //判断该窗口是否是QQ的聊天窗口
    DWORD   lpdwProcessId;
    ::GetWindowThreadProcessId(QQWindowHandle,&lpdwProcessId);
    if(lpdwProcessId !=NULL)
    {
    HANDLE QQprocessHandle = OpenProcess(PROCESS_CREATE_PROCESS,TRUE,lpdwProcessId);
                            //下面应该怎么做了呢?我不懂了
    }
      

  3.   

    哦,上面写错了一点        QQWindowHandle=::FindWindow("#32770",NULL);//取得一个对话框的窗口句柄。
            //判断该窗口是否是QQ的聊天窗口
            DWORD   lpdwProcessId;
            ::GetWindowThreadProcessId(QQWindowHandle,&lpdwProcessId);
            if(lpdwProcessId !=NULL)
            {
                HANDLE QQprocessHandle = OpenProcess(PROCESS_CREATE_PROCESS,TRUE,lpdwProcessId);
                //下面应该怎么做了呢?我不懂了
            }
      

  4.   

    GetWindowThreadProcessId 获得对应的进程ID,然后遍历EnumProcess,对比PID,得到进程名
      

  5.   

    GetWindowThreadProcessId
    OpenProcess
    调用 psapi.dll 中的 EnumProcessModules 和 GetModuleFileNameEx。
      

  6.   

    看看这个贴:大侠帮忙,获取外部程序路径及文件名的方法
    http://topic.csdn.net/u/20080808/17/a5b8136d-6c26-4050-bb4c-55bb481ff523.html