使用EnumWindows函数可以枚举所有顶层窗口,并且可以得到这些窗口的句柄,但我无法得到每个程序所在的路径,下面是我的代码,请指点。
function EnumWndProc(hwnd:Thandle;param:Cardinal):Boolean;stdcall;
var
strWinMoudleName:string;
iNumOfRunningProgram:integer;
iLeiJi:integer;
iWinInstance:integer;
begin
iLeiJi:=0;
iNumOfRunningProgram:=FrmMain.GetNumOfRunningProgram(ByNumsOfProgram);
Result:=true;
iWinInstance:=GetWindowLong(Hwnd,GWL_HINSTANCE);
setlength(strWinMoudleName,100);
GetModuleFileName(iWinInstance,pchar(strWinMoudleName),length (strWinMoudleName));
strWinMoudleName:=pchar(strWinMoudleName);//为什么这里总是工程的路径
end;
function EnumWndProc(hwnd:Thandle;param:Cardinal):Boolean;stdcall;
var
strWinMoudleName:string;
iNumOfRunningProgram:integer;
iLeiJi:integer;
iWinInstance:integer;
begin
iLeiJi:=0;
iNumOfRunningProgram:=FrmMain.GetNumOfRunningProgram(ByNumsOfProgram);
Result:=true;
iWinInstance:=GetWindowLong(Hwnd,GWL_HINSTANCE);
setlength(strWinMoudleName,100);
GetModuleFileName(iWinInstance,pchar(strWinMoudleName),length (strWinMoudleName));
strWinMoudleName:=pchar(strWinMoudleName);//为什么这里总是工程的路径
end;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货