从contextmenustrip发送密钥

时间:2013-03-08 16:10:09

标签: c# sendkeys

我想从contextmenustrip向应用程序发送一个字符串。例如,我打开记事本,打开我的应用程序,从任务栏中单击notifyicon,然后选择一个项目,我希望它将文本(sendkeys.send)发送到当前打开的应用程序。

这样做的最佳方式是什么?

感谢。

编辑:只需发送%{TAB}即可在除Windows 8之外的所有Windows版本中使用,并且必须具有可比性。

3 个答案:

答案 0 :(得分:1)

如果未经Microsoft或自签名认证,W8根本不允许对其他应用程序进行击键。

答案 1 :(得分:0)

以下内容将按名称查找应用程序(进程)。如果应用程序正在运行,它将收到文本。您只需要使用ContextMenuStrip的代码。如果有什么我可能会遗失,请告诉我:

public partial class Form1 : Form
{
    [DllImport("User32")]
    private static extern int SetForegroundWindow(IntPtr hwnd);

    public Form1()
    {
        InitializeComponent();

        Process notepad = Process.GetProcessesByName("notepad").FirstOrDefault();

        if (notepad != null)
        {
            SetForegroundWindow(notepad.MainWindowHandle);
            SendKeys.SendWait("test");
        }

    }

}

答案 2 :(得分:0)

几乎所有“它始终在Windows 8之前工作”问题的解决方案是将进程设置为以管理员身份运行。在我的情况下,我使用perl Win32 :: GuiTest的SendKeys。该程序运行并将焦点设置在右侧窗口,但拒绝发送任何密钥,除非我将其设置为以管理员身份运行。这可能是因为我发送的进程正在以管理员身份运行,dunno。