我想將一個特定的密鑰(例如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 關注
- 832 瀏覽
添加回答
舉報
0/150
提交
取消