2011-08-17 29 views
2

許多程序(真Transparancy和其他人)能得到所有活動或背景窗口類名像跑步這一項:收集所有活動的窗口類名

德爾福7 Object Inspector中的名字是tpropertyinspector
歌劇院主窗口類名稱是operawindowclass

那麼如何在Delphi中獲取任何打開的窗口類名?

回答

7

致電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); 
+0

林小白,所以請給一些代碼。 –

+0

@Robrok我相信在VCL源代碼中甚至有一個EnumWindows的例子。 –

+3

@羅布羅克:請原諒我自己的號角,但看看:http://stackoverflow.com/questions/6806911/main-window-handle-by-process-name/6808215#6808215搜索「[德爾福] EnumWindows「在SO上將它列在第三個問題的列表中... –

3

只需使用Windows API中的GetClassName函數(在Delphi中與使用任何語言相同的方法)。

+0

您輕鬆地說 –