2010-02-01 64 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") ; 
相关问题