如何得到一個正在運行程序(或系統)的窗體類名(50分)

  • 主题发起人 主题发起人 江林勝
  • 开始时间 开始时间

江林勝

Unregistered / Unconfirmed
GUEST, unregistred user!
請教各位大哥,
如何得到一個正在運行程序(或系統)的窗體類名
 
請問yifeng, EnumWindows() 這個函數,該如何使用呢.
 
enumwindows是一个callback函数
先声明一个callback function (不要放在类声明区)
function EnumWindowsProc(AHWnd: HWnd;
LPARAM: lParam): boolean;
stdcall;
var
WndCaption: array[0..254] of char;
WndClassName: array[0..254] of char;
begin
if pos('Microsoft Internet',wndcaption)<>0 then
//指定窗口的title
begin
GetWindowText(AHWnd, @WndCaption, 254);
GetClassName(AHWnd, @WndClassName, 254);
with Form1.Memo1.Linesdo
begin
Add(StrPas(WndCaption));
Add(StrPas(WndClassName));
add(inttostr(ahwnd));
Add('-------');
end;
Result := True;
end;

调用:
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.Clear;
EnumWindows(@EnumWindowsProc, 0);
//传指针
end;

 
findwindow(nil,'name of windows')
 
hehe,看来我用笨办法了
不过改一改:
findwindow(nil, pchar('window's caption'));
 
如果可以手工得到它,而不需要编程实现的话,用delphi或者bcb带来的
winsight32可以干这活
 
不需要编程实现的话,感觉还是用Spy++的条目比winsight32较清楚一点。
 
用spy++很容易就得到正在运行程序的类名。
 
多人接受答案了。
 
后退
顶部