得到一个窗口的句柄后,怎么才能得到这个可执行文件的路径?

解决方案 »

  1.   

    DWORD GetModuleFileName(
      HMODULE hModule,    // handle to module to find filename for
      LPTSTR lpFilename,  // pointer to buffer to receive module path
      DWORD nSize         // size of buffer, in characters
    );
     
    TCHAR szPath[MAX_PATH];
    GetModuleFileName(handle, szPath, MAX_PATH);
      

  2.   

    用GetWindowThreadProcessId得到进程id,再OpenProcess得到进程句柄再GetModuleFileName,得到路径。
      

  3.   

    GetModuleFileNameEx
    The GetModuleFileNameEx function retrieves the fully qualified path for the specified module. DWORD GetModuleFileNameEx(
      HANDLE hProcess,    // handle to the process
      HMODULE hModule,    // handle to the module
      LPTSTR lpFilename,  // buffer that receives the path
      DWORD nSize         // size of the buffer
    );
     
      

  4.   

    如果获得的窗口是进程的主窗口,可以这样做
    1。GetWindowThreadProcessId()//获得进程ID
    2。OpenProcess()//获得进程句柄
    3。EnumProcessModules()//获得模块把柄
    4。GetModuleFileNameEx()//获得应用程序路径
      

  5.   

    如果获得的窗口是进程的主窗口,可以这样做
    1。GetWindowThreadProcessId()//获得进程ID
    2。OpenProcess()//获得进程句柄
    3。EnumProcessModules()//获得模块把柄
    4。GetModuleFileNameEx()//获得应用程序路径
      

  6.   

    我已经通过HWND ahwnd=FindWindow(NULL,szWindowName);得到了窗口的句柄了,但是DWORD GetModuleFileNameEx(
      HANDLE hProcess,    // handle to the process
      HMODULE hModule,    // handle to the module
      LPTSTR lpFilename,  // buffer that receives the path
      DWORD nSize         // size of the buffer
    );
    需要的是进程的句柄,怎么办呢??怎么把窗口句柄转换成进程句柄??
      

  7.   

    1。GetWindowThreadProcessId()//获得进程ID
    2。OpenProcess()//获得进程句柄
    3。EnumProcessModules()//获得模块把柄
    4。GetModuleFileNameEx()//获得应用程序路径写的不是很详细吗?
      

  8.   

    按照上述四步,就可以了,看看msdn怎么说,
      

  9.   

    char buff[MAX_PATH];
    GetModuleFileName(GetModuleHandle(NULL), buff, MAX_PATH);
      

  10.   

    Agree with ajn_sailing(ajn_sailing) .
      

  11.   

    搞了半天需要PSAPI,那不是在9X下用不了??!!!
      

  12.   

    //查找窗口句柄为hwnd的窗口对应的文件的文件说明符
     clp:bool; 
      WinProcID:DWORD; 
      fp32:tprocessentry32; 
      fshandle:thandle; ...
        GetWindowThreadProcessId(hwnd, @WinProcID); 
        fshandle:=CreateToolhelp32Snapshot(th32cs_snapprocess,0); 
        fp32.dwsize:=sizeof(fp32); 
        clp:=process32first(fshandle,fp32); 
        while (integer(clp)<>0) and (fp32.th32processid<>WinProcId) do 
        begin 
          clp:=process32next(fshandle,fp32); 
        end; 
        closehandle(fshandle); 
    ...fp32.szexefile就是窗口(句柄为hwnd)对应的文件的文件说明符。祥见:
    http://www.csdn.net/expert/topic/955/955153.xml?temp=.1657678