头文件:
- #pragma comment(lib,"coredll.lib")
- #pragma comment(lib,"Psapi.lib")
- #include <Psapi.h>
- #include "winbase.h"
第一种通过EnumProcessModules函数和GetModuleFileNameEx函数
GetModuleFileNameEx函数在64位系统下,获取不到64位进程的可执行文件路径
EnumProcessModules据说xp系统不支持 未验证
一个单击按钮事件中的代码实现
void CEXCELtestDlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
HWND hWnd = ::FindWindow(_T("XLMAIN"), NULL);
// 获取进程路径
CString sPath;
DWORD idProcess = NULL;
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 = Ge