从contextmenustrip发送密钥
本文关键字:密钥 contextmenustrip | 更新日期: 2023-09-27 18:02:53
我想从contextmenustrip发送一个字符串到应用程序。例如,我打开记事本,我打开我的应用程序,我点击任务栏上的通知图标,然后选择一个项目,我想让它发送文本(sendkeys.send)到当前打开的应用程序。
做这件事的最好方法是什么?
谢谢。
编辑:简单地发送%{TAB}在除windows 8之外的所有windows版本中都有效,并且它必须是兼容的。
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。该程序运行并将焦点设置在右侧窗口,但拒绝发送任何密钥,除非我将其设置为以管理员身份运行。这可能是因为我要发送给的进程正在以管理员身份运行,不知道。