2010-02-01 109 views
2

我聽說過(詳細閱讀,http://www.ddj.com/windows/184416861),可以在Win32窗口上設置自定義屬性。win32窗口上的自定義屬性

麻煩的是,下載的上述文章是一個FTP服務器,不會讓我在。

其位的背景資料上,我有一個.net應用程序。主窗口被註冊以處理自定義窗口消息。從一個單獨的應用程序,我需要發佈消息到這個窗口。標題更改時,我無法通過標題找到窗口。我無法通過窗口類找到它,因爲窗口類對於該應用程序域中的所有窗體都是相同的。

理想情況下,我想在主窗體(Form1)的Win32窗口上設置一個自定義屬性,它表示,是的,這是form1。然後當我枚舉這個應用程序的窗口時,我可以通過查看這個自定義屬性是否存在來判斷這是必需的形式。

乾杯,

史蒂夫

回答

2

的窗口屬性的概述見here。基本上,您可以調用Win32 API函數SetProp來設置窗口屬性,並調用GetProp來檢索它。還有一些枚舉屬性等的函數,但聽起來好像SetProp和GetProp是你所需要的。

+0

感謝馬丁。我實際上搜索pinvoke.net與「SetProperty」和「GetProperty」,它什麼都沒有返回! – 2010-02-01 13:54:13

2

正如Martin所說,答案是Win32 API的GetProp和SetProp。

這就是我現在做的,當我創建的主要形式有:

[DllImport("user32.dll", SetLastError=true)] 
static extern bool SetProp(IntPtr hWnd, string lpString, IntPtr hData); 

SetProp(this.Handle, @"foo", new IntPtr(1)) ; 

現在,枚舉窗口時,我可以檢查此屬性:

[DllImport("user32.dll")] 
private static extern IntPtr GetProp(IntPtr hWnd, string lpString); 

IntPtr result = GetProp((IntPtr) hWnd, @"foo") ; 
相關問題