收集所有活动的窗口类名称

Lit*_*per 3 windows delphi winapi window delphi-7

许多程序(True Transparancy和其他程序)都可以在后台窗口类名中运行或运行,如下所示:

Delphi 7 Object Inspector名称是tpropertyinspector
Opera主窗口类名operawindowclass
等.

那么如何在Delphi中获取任何打开的窗口类名?

Dav*_*nan 8

打电话EnumWindows来获得所有顶级窗口.然后调用GetClassName以找出每个窗口的窗口类名称.如果您还想探测子窗口,请调用EnumChildWindows每个顶级窗口.

像这样调用GetClassName:

var
  ClassName: string;
  len: Integer;
...
SetLength(ClassName, 256);
len := GetClassName(window, PChar(ClassName), Length(ClassName));
if len=0 then
  RaiseLastOSError;
SetLength(ClassName, len);
Run Code Online (Sandbox Code Playgroud)

  • @RobRok:请原谅我自己的号角,但看看:http://stackoverflow.com/questions/6806911/main-window-handle-by-process-name/6808215#6808215正在搜索"[Delphi] EnumWindows"on SO会在列表的第三个问题中提出来...... (3认同)
  • [lpszClassName的最大长度为256](http://msdn.microsoft.com/en-us/library/ms633576%28v=vs.85%29.aspx),但我对666没有问题.. :) (2认同)