由于需要,要寫一個程式,滑鼠點擊已經打開的excel檔案或者TXT檔案,MFC程式可以獲取此檔案的路徑
首先SetCapture();捕獲程式之外的滑鼠單擊程式。
然后在
LRESULT CDragListCtrlDemoDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
case WM_LBUTTONDOWN:
GetCursorPos(&point);
HWND hWnd=::WindowFromPoint(point);
WCHAR buf[MAX_PATH]={0};
DWORD dProcessId;
GetWindowThreadProcessId(hWnd,&dProcessId);
bool flag=GetProcessFullPathByPID(dProcessId,buf);
buf就是路徑,但我獲得的不是檔案路徑,而是excel對應的exe的路徑。
現在還可以用函式GetWindowLong(hWnd,GWL_HINSTANCE)獲取excel檔案的實體句柄
請問,該怎么做,才能獲取檔案路徑,比如D:\Test.xlsx ???
非常感謝
}
uj5u.com熱心網友回復:
GetPathName();uj5u.com熱心網友回復:
HANDLE proc = OpenProcess(PROCESS_ALL_ACCESS , FALSE, dProcessId );EnumProcessModules(proc, module, sizeof(module), &needed);
GetModuleFileNameEx(proc,module[nn],drpath,MAX_PATH);
我這樣寫的,我滑鼠點擊的WPS表格,檔案是Test.xlsx,得到的是一些DLL模塊的路徑,獲取不到Test.xlsx的路徑,檔案和模塊好像不是一個概念
uj5u.com熱心網友回復:
GetWindowTextuj5u.com熱心網友回復:
GetWindowText可以獲取檔案名,比如,Test.xlsx,但獲取不了檔案路徑轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/115439.html
標籤:進程/線程/DLL
上一篇:VC++ MFC 中用List Control控制元件顯示ACCESS資料庫中整張表內容出錯
下一篇:crt detected that the application wrote to memory after end of heap buffer什么原因導致
