如何知道一个窗口的类?(一个Api的小问题)(20分)

  • 主题发起人 主题发起人 zanpen2001
  • 开始时间 开始时间
Z

zanpen2001

Unregistered / Unconfirmed
GUEST, unregistred user!
如何知道一个窗口的类?我知道ie窗口的类名是ieFrame,那名这个类名是怎样得到的?

请高手指点!最后有例子,因为我对Api了解不多。
 
用GetClassName可以从一个窗口handle得到它的类名
 
我知道是用GetClassName得到,但问题是这个函数怎么用,有具体例子吗?

忘了说我是菜花了。。。呵呵。。
 
var
; PClassName: PChar;
; ClassName: String;

begin
; StrAlloc(PClassName,100);
; GetClassName(Handle,PClassName,100);
; ClassName:=StrPas(PClassName);// 这个函数是不是这样用一下忘了,看看Help吧
; showmessage(ClassName);
; StrDispose(PClassName); ; ; ; //
end;
 
unit Unit1;

interface

uses
; Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
; StdCtrls, ExtCtrls;

type
; TForm1 = class(TForm)
; ; Edit1: TEdit;
; ; Timer1: TTimer;
; ; Label_ClassName: TLabel;
; ; StaticText1: TStaticText;
; ; procedure Timer1Timer(Sender: TObject);
; private
; ; { Private declarations }
; public
; ; { Public declarations }
; end;

var
; Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Timer1Timer(Sender: TObject);
var
; ClassName: PChar;
; atCursor: TPoint;
; hWndMouseOver: HWND;
; Text: PChar;
begin
; GetCursorPos(atCursor);
; hWndMouseOver:=WindowFromPoint(atCursor);
; GetMem(ClassName, 100);
; GetMem(Text, 255);
; try
; ; GetClassName(hWndMouseOver, ClassName, 100);
; ; SendMessage(hWndMouseOver, WM_GETTEXT, 255, LongInt(Text));
; ; Label_ClassName.Caption:='类名(Classname): '+String(ClassName);
; ; Edit1.Text:=String(Text);
; finally
; ; FreeMem(ClassName);
; ; FreeMem(Text);
; end;
end;

end.
其中Timer控件的interval值为100最佳。在DELPHI5中调试通过。
 
上面的实现了。
 
多人接受答案了。
 
后退
顶部