我想将一个特定的密钥(例如k)发送到另一个名为notepad的程序,下面是我使用的代码:void sendkey (){ [DllImport ("User32.dll")] static extern int SetForegroundWindow(IntPtr point); Process p = Process.GetProcessesByName("notepad")[0]; IntPtr pointer = p.Handle; SetForegroundWindow(pointer); SendKeys.Send("k");}但是代码不起作用,代码怎么了?编辑:是否可以将没有记事本的“ K”发送到记事本作为活动窗口?(例如,活动窗口=“ Google chrome”,记事本位于背景中,这意味着向后台应用程序发送密钥)
2 回答
ITMISS
TA贡献1871条经验 获得超8个赞
如果记事本已经启动,则应输入:
// import the function in your class
[DllImport ("User32.dll")]
static extern int SetForegroundWindow(IntPtr point);
//...
Process p = Process.GetProcessesByName("notepad").FirstOrDefault();
if( p != null)
{
IntPtr h = p.MainWindowHandle;
SetForegroundWindow(h);
SendKeys.SendWait("k");
}
GetProcessesByName 返回一个进程数组,因此您应该获得第一个进程(或找到所需的进程)。
如果要启动notepad并发送密钥,应输入:
Process p = Process.Start("notepad.exe");
p.WaitForInputIdle();
IntPtr h = p.MainWindowHandle;
SetForegroundWindow(h);
SendKeys.SendWait("k");
代码可能无法正常工作的唯一情况是,当notepad以Administrator身份启动而不是您的应用程序启动时。
- 2 回答
- 0 关注
- 778 浏览
添加回答
举报
0/150
提交
取消