【发布时间】:2015-08-13 11:59:11
【问题描述】:
我需要创建隐藏表单并获取它的句柄以通过我的控制台应用程序接收消息。所以,我尝试了这个(不确定实际表单是否正在运行):
HiddenForm form = new HiddenForm();
并定义形式:
public partial class HiddenForm : Form
{
public HiddenForm()
{
InitializeComponent();
this.Text = System.DateTime.Now.Ticks.ToString();
int currentWindowHandle = (int)FindWindow(null, title);
}
}
currentWindowHandle 正在获取 0。
我做错了什么?什么是正确的方法?
由于某种原因,这不起作用(新表单实际上是可见的):
HiddenForm form = new HiddenForm();
Application.Run(form);
form.Visible = false;
如果我在 HiddenForm 构造函数中添加这个:
this.Visible = false;
【问题讨论】:
-
只需添加
this.CreateHandle();就足以强制创建本机窗口。也许,各种搞砸的方法,当你不解释为什么需要这个时,你就无法得到很好的帮助。 -
@HansPassant,在问题的开头解释了。
-
嗯,你真正解释的是你应该使用命名管道或套接字或 WCF 而不是窗口。
-
嗯...谢谢。但是出于紧急原因(这是紧急教育项目)窗口是最快速和最简单的解决方案(可能),因为它只需要定义接收方法。
-
另外,
this.CreateHandle();有效!您可以创建与解决问题相同的答案。
标签: c# forms window-handles