例如,我已经知道notepad.exe的窗口句柄,怎么通过HWND,得到“notepad.exe”这个名字?
我是枚举打开的窗口得到的句柄,得到后想判断是不是我想要的程序的窗口。
谢谢打侠们!

解决方案 »

  1.   

    DWORD GetModuleFileName(
      HMODULE hModule,    // handle to module
      LPTSTR lpFilename,  // path buffer
      DWORD nSize         // size of buffer
    );或发送WM_GETWINDOWTEXT消息
      

  2.   

    #include <windows.h>
    #include <tlhelp32.h>
    #include <stdio.h>DWORD dwProcessID;
    GetWindowThreadProcessId(hWnd, &dwProcessID); 
    MODULEENTRY32 me32        = {0}; 
       HANDLE hModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwPID); 
           // Fill the size of the structure before using it.     me32.dwSize = sizeof(MODULEENTRY32); 
     
        Module32First(hModuleSnap, &me32);      
        printf( "Full Path\t\t%s\n\n", me32.szExePath);
      

  3.   


    char AppName[256];
    ::SendMessage(hWnd, WM_GETTEXT,256, (LPARAM)AppName);
    //hWnd 为楼主获得的窗口句柄
      

  4.   

    纠正以下:
    WM_GETWINDOWTEXT=====》
    WM_GETTEXT
      

  5.   

    GetWindowThreadProcessId
    =>
    OpenProcess
    =>
    GetModuleFIleName
      

  6.   

    遍历所有进程-〉线程-〉窗口,一个个的匹配看看是不是这个窗口句柄。
    到msdn看这几个函数CreateToolhelp32Snapshot,Process32First,Process32Next。
      

  7.   

    遍历的方法不太好,通过HWND是可以通过一个API获得进程的句柄(进程ID?!),然后再取其EXE名.那个API记不清了,可能叫GetProcessThread????.