我想从contextmenustrip向应用程序发送一个字符串。例如,我打开记事本,打开我的应用程序,从任务栏中单击notifyicon,然后选择一个项目,我希望它将文本(sendkeys.send)发送到当前打开的应用程序。
这样做的最佳方式是什么?
感谢。
编辑:只需发送%{TAB}即可在除Windows 8之外的所有Windows版本中使用,并且必须具有可比性。
答案 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。