首頁 >後端開發 >C++ >如何將金鑰傳送到 .NET 中的後台應用程式?

如何將金鑰傳送到 .NET 中的後台應用程式?

Susan Sarandon
Susan Sarandon原創
2025-01-04 09:52:35669瀏覽

How Can I Send Keys to a Background Application in .NET?

將金鑰傳送到後台應用程式:綜合指南

將特定金鑰(例如「k」)傳送到另一個應用程序的任務,例如記事本,需要對.NET中的進程處理有更深入的了解。讓我們深入研究這個問題及其潛在的解決方案。

要將密鑰發送到另一個應用程序,該應用程式需要位於前台。在給定的程式碼中,正在嘗試使用 SetForegroundWindow 執行此步驟。但是,實作可能需要進一步完善。

為了在發送金鑰之前確保記事本確實是活動窗口,我們應該:

  • 使用 Process.MainWindowHandle 來擷取記事本視窗。
  • 使用此句柄呼叫 SetForegroundWindow讓記事本成為前台

這是程式碼的增強版本:

[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");
}

如果記事本尚未運行,我們需要啟動它並等待它準備好,然後再發送key :

Process p = Process.Start("notepad.exe");
p.WaitForInputIdle();
IntPtr h = p.MainWindowHandle;
SetForegroundWindow(h);
SendKeys.SendWait("k");

值得注意的是,如果記事本以提升的權限啟動(例如,以管理員身份)並且您的應用程式不是,SetForegroundWindow調用可能無法正常工作。在這種情況下,請探索替代方法或相應調整應用程式權限。

以上是如何將金鑰傳送到 .NET 中的後台應用程式?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn