我听说(好的,在http://www.ddj.com/windows/184416861阅读),可以在Win32窗口上设置自定义属性。
麻烦的是,上面文章的下载是在一个不允许我进入的ftp服务器上。
作为一些背景信息,我有一个.NET应用程序。注册主窗口以处理自定义窗口消息。从单独的应用程序,我需要将消息发布到此窗口。随着标题的变化,我无法通过标题找到窗口。我无法通过窗口类找到它,因为窗口类对于该app域中的所有窗体都是相同的。
理想情况下,我想在主窗体(Form1)的Win32窗口上设置一个自定义属性,即是,这是form1。然后,当我枚举这个应用程序的窗口时,我可以通过查看此自定义属性是否存在来判断这是必需的表单。
干杯,
史蒂夫
答案 0 :(得分:2)
有关窗口属性的概述,请参阅here。基本上,您调用Win32 API函数SetProp来设置窗口属性,并调用GetProp来检索它。还有一些用于枚举属性等的函数,但听起来好像只需要SetProp和GetProp。
答案 1 :(得分: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" ) ;