首頁 > 後端開發 > C++ > 如何可靠地將金鑰傳送到記事本等外部應用程式?

如何可靠地將金鑰傳送到記事本等外部應用程式?

Mary-Kate Olsen
發布: 2025-01-03 22:09:46
原創
406 人瀏覽過

How Can I Reliably Send Keys to External Applications Like Notepad?

將金鑰傳送到外部應用程式

當嘗試將特定金鑰傳送到另一個應用程式(例如記事本)時,程式設計師可能會遇到阻止程式碼無法如預期運作。本文旨在透過探索程式碼並提供替代解決方案來解決這些挑戰。

提供的程式碼包含以下問題:

  • 缺乏流程驗證:程式碼假設記事本已經在運行,但情況可能並非如此。
  • Lack of Wait for輸入穩定:代碼立即發送按鍵,無需等待目標應用程式穩定其輸入處理。

要解決這些問題,建議進行以下程式碼修改:

對於已經運行的記事本:

using System.Diagnostics;

...

// Get the first running instance of Notepad
Process p = Process.GetProcessesByName("notepad").FirstOrDefault();
if (p != null)
{
    // Get the main window handle
    IntPtr h = p.MainWindowHandle;
    SafeNativeMethods.SetForegroundWindow(h);
    SendKeys.SendWait("k");
}
登入後複製

對於啟動記事本並發送金鑰:

...

// Start Notepad
Process p = Process.Start("notepad.exe");
// Wait for the input queue to stabilize
p.WaitForInputIdle();
// Get the main window handle
IntPtr h = p.MainWindowHandle;
SafeNativeMethods.SetForegroundWindow(h);
SendKeys.SendWait("k");
登入後複製

透過實作這些變更,程式碼將首先驗證記事本是否正在運行,並且在啟動記事本的情況下,將等待應用程式完全運行在發送金鑰之前初始化。

非活動視窗注意事項:

雖然不可能直接將密鑰發送到後台應用程序,但有一些方法可以將目標應用程式帶到前台,然後發送密鑰。 SetForegroundWindow 函數允許此功能,如第一個範例中提供的程式碼所示。

以上是如何可靠地將金鑰傳送到記事本等外部應用程式?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板