如何将密钥发送到另一个应用程序
本文关键字:另一个 应用程序 密钥 | 更新日期: 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 +" "));
使用转换为字符串的过程
您可以通过首先复制到剪贴板,然后粘贴发送键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}");
}