我想从上下文菜单条向应用程序发送一个字符串。例如,我打开记事本,打开我的应用程序,单击任务栏中的通知图标,然后选择一个项目,我希望它向当前打开的应用程序发送文本 (sendkeys.send)。
这样做的最佳方法是什么?
谢谢。
编辑:只需发送 %{TAB} 即可在除 Windows 8 之外的所有 Windows 版本中使用,并且必须兼容。
如果 W8 未经 Microsoft 或自签名认证,则根本不允许对其他应用程序进行击键。
下面将通过其名称找到一个应用程序(进程)。如果应用程序正在运行,它将收到文本。您只需要使用 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 之前工作”问题的解决方案是将进程设置为以管理员身份运行。就我而言,我使用的是 perl Win32::GuiTest 中的 SendKeys。该程序运行并将焦点设置在右侧窗口上,但拒绝发送任何密钥,除非我将其设置为以管理员身份运行。这可能是因为我发送给的进程是以管理员身份运行的,不知道。