猿问

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

我想将一个特定的密钥(例如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”,记事本位于背景中,这意味着向后台应用程序发送密钥)


catspeake
浏览 779回答 2
2回答

ITMISS

如果记事本已经启动,则应输入:// 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身份启动而不是您的应用程序启动时。
随时随地看视频慕课网APP
我要回答