如何创建隐藏的表单并获得它的处理?

时间:2015-08-13 11:59:12

标签: c# forms window-handles

我需要创建隐藏的表单并获取它的句柄以通过我的控制台应用程序接收消息。所以,我试过这个(不确定实际的表格是否正在运行):

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;

2 个答案:

答案 0 :(得分:1)

我做过一次。像这样。

[DllImport("user32.dll")]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

string title = "Microsoft Visual SourceSafe";
IntPtr hWnd = FindWindow(null, title);

我正确掌握了窗户的句柄。 如果要查看有关表单的更多信息,可以使用Spy ++。

希望它有所帮助。

答案 1 :(得分:0)

正如@HansPassant提到的那样,只要做到这一点就可以做到一切:

if r.user.image.present?
   = image_tag r.user.image_url :thumbnail
else
   = image_tag 'your default image path'
end