简单的工作室

当前位置: 主页>编程技巧>VC++编程>

VC通过窗口句柄获取应用程序路径

时间:2014-07-25 09:27来源:未知 作者:admin 点击:
int GetExePathFromHWND(HWND hwnd, CString ExePath) { TCHAR szPath[MAX_PATH]; int ErrorCode = 0; DWORD idProcess; GetWindowThreadProcessId(hwnd, idProcess); HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, idProcess ); if(
int GetExePathFromHWND(HWND hwnd, CString& ExePath) 

    TCHAR szPath[MAX_PATH]; 
    int ErrorCode = 0; 
    DWORD idProcess; 
    GetWindowThreadProcessId(hwnd, &idProcess); 
    HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, idProcess ); 
    if( NULL != hProcess ) 
    { 
        HMODULE hMod; 
        DWORD cbNeeded; 
        if( EnumProcessModules( hProcess, &hMod, sizeof( hMod ), &cbNeeded ) ) 
        { 
            DWORD dw = GetModuleFileNameEx( hProcess, hMod, szPath, MAX_PATH ); 
            if(dw > 0) 
            { 
                //printf("szPath:   %S   \n",   szPath); 
                //MsgBox(szPath); 
                ExePath = szPath; 
            } 
            else 
            { 
                //printf("GetLastError:%d   \n",   GetLastError()); 
                ErrorCode = GetLastError(); 
            } 
        } 
        CloseHandle( hProcess ); 
    } 

    return ErrorCode; 


'EnumProcessModules' : undeclared identifier

解决办法

#include <Psapi.h>
#pragma comment(lib,"Psapi.lib")

error C2664: 'GetModuleFileNameExW' : cannot convert parameter 3 from 'char [260]' to 'unsigned short *'

解决办法

改成函数GetModuleFileNameExA

(责任编辑:简单的工作室)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容