为了账号安全,请及时绑定邮箱和手机立即绑定

C#使用Sendkey函数将密钥发送到另一个应用程序

C#使用Sendkey函数将密钥发送到另一个应用程序

C#
catspeake 2019-09-24 16:43:45
我想将一个特定的密钥(例如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身份启动而不是您的应用程序启动时。


查看完整回答
反对 回复 2019-09-24
  • 2 回答
  • 0 关注
  • 716 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信