to micony:
; ; 我不是想通过进程来得到程序的文件名,这个我会
; ; 我就是想通过窗口名来得到文件名(和路径)
to bbkxjy
; ;你的程序初看原理是对的,为什么调试结果却是很奇怪,你能回答我吗?
我是这样做的:
procedure TForm1.Button1Click(Sender: TObject);
var ;hCurWindow: HWnd; ;// 窗口句柄
; ; ;filename,s:string;
; ; ;WinText: array [0..255] of char;
begin
// 获取第一个窗口的句柄
; hCurWindow := GetWindow(Handle, GW_HWNDFIRST);
; ; ; while hCurWindow <> 0 do
; ; ; ; ; begin
; ; ; ; ; ;// 获取窗口的名称
; ; ; ; ; ;if GetWindowText(hCurWindow, @WinText, 255)>0 then
; ; ; ; ; ; ; begin
; ; ; ; ; ; ; ;s:=StrPas(@WinText);
; ; ; ; ; ; ; ;if AnsiStrPos(PChar(s),pchar('记事本'))<>nil//如果窗口名包含有'记事本'
; ; ; ; ; ; ; ; ; then
; ; ; ; ; ; ; ; ; ; ;begin
; ; ; ; ; ; ; ; ; ; ; label1.caption:=s;
; ; ; ; ; ; ; ; ; ; ; filename:=HWndToFileName(hCurWindow);//这个就是你给出的函数
; ; ; ; ; ; ; ; ; ; ; label2.caption:=filenameff;
; ; ; ; ; ; ; ; ; ; ;end;
; ; ; ; ; ; ; ;end;
; ; ; ; ; ;// 获取下一个窗口的句柄
; ; ; ; ; ;hCurWindow:=GetWindow(hCurWindow, GW_HWNDNEXT);
; ; ; ; ;end;
; ; ; end;
结果label2.caption显示的是的:d:/borland/delphi5/project/project1.exe
即就是这个正在运行的delphi程序!不是想要的‘记事本’的文件路径!为何??谢谢!