Winforms win32窗口上的自定义属性

Winforms win32窗口上的自定义属性,winforms,winapi,Winforms,Winapi,我听说(读得很好,在),可以在Win32窗口上设置自定义属性 问题是,上面文章的下载是在一个ftp服务器上进行的,该服务器不允许我进入 作为一点背景信息,我有一个.NET应用程序。主窗口已注册以处理自定义窗口消息。从一个单独的应用程序,我需要发布消息到这个窗口。由于标题更改,我无法按标题找到窗口。我无法仅按窗口类找到它,因为该应用程序域中的所有窗体的窗口类都是相同的 理想情况下,我希望在主窗体(Form1)的Win32窗口上设置一个自定义属性,即是,这是Form1。然后,当我枚举此应用程序的窗口

我听说(读得很好,在),可以在Win32窗口上设置自定义属性

问题是,上面文章的下载是在一个ftp服务器上进行的,该服务器不允许我进入

作为一点背景信息,我有一个.NET应用程序。主窗口已注册以处理自定义窗口消息。从一个单独的应用程序,我需要发布消息到这个窗口。由于标题更改,我无法按标题找到窗口。我无法仅按窗口类找到它,因为该应用程序域中的所有窗体的窗口类都是相同的

理想情况下,我希望在主窗体(Form1)的Win32窗口上设置一个自定义属性,即是,这是Form1。然后,当我枚举此应用程序的窗口时,我可以通过查看此自定义属性是否存在来判断这是必需的表单

干杯


Steve

有关窗口属性的概述,请参阅。基本上,您可以调用Win32 API函数来设置窗口属性并检索它。还有一些用于枚举属性等的函数,但听起来SetProp和GetProp就是您所需要的。

正如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" ) ;

谢谢你,马丁。事实上,我用“SetProperty”和“GetProperty”搜索了pinvoke.net,结果什么也没有返回!