如何将密钥发送到另一个应用程序

本文关键字:另一个 应用程序 密钥 | 更新日期: 2023-09-27 18:02:50

我想向另一个名为notepad的程序发送一个特定的密钥(例如k(,下面是我使用的代码:

private void SendKey()
{
    [DllImport ("User32.dll")]
    static extern int SetForegroundWindow(IntPtr point);
    var p = Process.GetProcessesByName("notepad")[0];
    var pointer = p.Handle;
    SetForegroundWindow(pointer);
    SendKeys.Send("k");
}
            

但是代码不起作用,代码出了什么问题?

我是否可以发送";K〃;将不带记事本的记事本设置为活动窗口?(例如,活动窗口="谷歌铬",记事本在后台,这意味着向后台应用程序发送密钥(?

如何将密钥发送到另一个应用程序

如果记事本已经启动,您应该写:

// 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以管理员身份启动,而您的应用程序不起作用。

    public string h1;
    public string h2;
    public string m1;
    public string m2;
    public string s1;
    public string s2;
   public partial class Form1 
    hours hour = new hours();
Sendkeys.SendWait(Convert.ToString(hour.h1+hour.h2+hour.m1+hour.m2+hour.s1+hour.s2              +" "));   

使用转换为字符串的过程

将已分类的字符串发送到sendkey进程是一个简单的问题

您可以通过首先复制到剪贴板,然后粘贴发送键ctrl+v:来发送任何内容

Process p = Process.GetProcessesByName("notepad").FirstOrDefault();
if (p != null)
{
    IntPtr h = p.MainWindowHandle;
    SetForegroundWindow(h);
    Clipboard.Clear();
    Clipboard.SetText(txtCode.Text); 
    string strClip = Clipboard.GetText();
    SendKeys.Send("^{v}");
}
相关文章: