2014-09-29 72 views
0

我想枚舉使用user32.dll窗口內的所有控件,但我不知道我需要做什麼。枚舉窗口內的所有控件

我使用EnumWindowsEnumChildWindows,但它不檢索窗口內的所有控件。

我想在Delphi應用程序中獲取一些標籤的文本。

我嘗試過使用Spy ++,但是它也沒有列出。

+0

Delphi使用自定義控件的範圍EnumChildWindows將無法工作。不幸的是,我不知道是否有解決方案。 – 2014-09-29 18:40:23

回答

0
IList<IntPtr> childern = new List<IntPtr>(); 
    WNDENUMPROC enumChildProc = delegate(IntPtr hwnd, IntPtr param) 
    { 
     childern.Add(hwnd); 
     return true; 
    }; 
    EnumChildWindows(Hwnd, enumChildProc, IntPtr.Zero); 
    return childern; 

Hwnd是父窗口句柄

+0

我正在做這樣的事情,但不檢索窗體內的所有控件。 – 2014-09-29 15:36:52

+0

@Alexandre Vicenzi:你確定這個控件真的是窗戶嗎? – Xearinox 2014-09-29 17:43:04

+0

我認爲這是組件。我在C#中創建了一個小應用程序,並且正常工作。 – 2014-09-29 20:11:04

0

Delphi的標記物是不加窗。這意味着你不可能希望爲他們獲得窗口句柄,因爲他們不是窗口。

如果Delphi VCL正確支持自動化,那麼您將能夠使用UI Automation來檢查這些控件的文本。但是VCL只支持底層Win32控件的自動化操作。由於標籤不是窗口控件,因此您運氣不佳。

唯一可以切實希望閱讀此文本的是Delphi代碼。聽起來好像這對你不可行。