FindWindow在当前上下文中不存在

时间:2012-11-14 01:40:19

标签: c#

我是WindowsForms的新手,正在构建一个小型示例应用程序。

我正在尝试构建一个将文本键入记事本窗口的应用程序,当从dll导入时,我收到错误FindWindow does not exist in current context

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void MenuAbout_Click(object sender, System.EventArgs e)
        {
            Form1 frm = new Form1();
            frm.ShowDialog();
        }

        private void Launch_Click(object sender, System.EventArgs e)
        {

            // find window handle of Notepad
            IntPtr handle = FindWindow("Notepad", "Untitled - Notepad");
            if (!handle.Equals(IntPtr.Zero))
            {
                // activate Notepad window
                if (SetForegroundWindow(handle))
                {
                    // send "Hello World!"
                    SendKeys.Send("Hello World!");
                    // send key "Tab"
                    SendKeys.Send("{TAB}");
                    // send key "Enter"
                    SendKeys.Send("{ENTER}");
                }
            }
            //Process.Start(@"D:\\32-Bit Programs\\StarCraft II\\Support\\SC2Switcher.exe");
        }


        [DllImport("user32.dll", EntryPoint = "FindWindow")]
        private extern IntPtr FindWindow(string lp1, string lp2);

        [DllImport("user32.dll", ExactSpelling = true, CharSet = CharSet.Auto)]
        [return: MarshalAs(UnmanagedType.Bool)]
        private extern bool SetForegroundWindow(IntPtr hWnd);
    }
}

1 个答案:

答案 0 :(得分:11)

导入的方法must also be static

    [DllImport("user32.dll", EntryPoint = "FindWindow")]
    private static extern IntPtr FindWindow(string lp1, string lp2);

    [DllImport("user32.dll", ExactSpelling = true, CharSet = CharSet.Auto)]
    [return: MarshalAs(UnmanagedType.Bool)]
    private static extern bool SetForegroundWindow(IntPtr hWnd);