从contextmenustrip发送密钥

本文关键字:密钥 contextmenustrip | 更新日期: 2023-09-27 18:02:53

我想从contextmenustrip发送一个字符串到应用程序。例如,我打开记事本,我打开我的应用程序,我点击任务栏上的通知图标,然后选择一个项目,我想让它发送文本(sendkeys.send)到当前打开的应用程序。

做这件事的最好方法是什么?

谢谢。

编辑:简单地发送%{TAB}在除windows 8之外的所有windows版本中都有效,并且它必须是兼容的。

从contextmenustrip发送密钥

W8如果没有经过Microsoft或Self-Signing认证,则不允许对其他应用程序进行按键操作。

下面将根据应用程序(进程)的名称查找应用程序(进程)。如果应用程序正在运行,它将接收文本。您只需要利用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");
        }
    }
}

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