簡體   English   中英

如何確定來自其他應用程序的窗口是否可見?

[英]How can I determine whether a window from another application is visible?

我最近獲得了WinX DVD Ripper Platinum的許可證,我很惱火的是,當它翻錄DVD時,它並沒有告訴我。 沒有彈出窗口,沒有系統“嘟嘟” - 沒什么。 進度對話框只是關閉。 主窗口甚至不會集中注意力......

為了加快我的DVD翻錄過程,我正在制作一個簡單的控制台應用程序(使用C#和VS2010):

  1. 查找名為“WinX_DVD_Ripper_Platinum”的進程句柄(WinX DVD Ripper Platinum軟件的進程名稱)
  2. 使用此示例中在pinvoke.net中定義的GetChildWindows方法查找該進程上的進度對話框的句柄
  3. 啟動一個System.Timers.Timer實例,該實例檢查(或應該檢查)進度對話框是否每5秒關閉一次(使用GetWindowLong函數 ,以及
  4. 使用System.Console.Beep方法發出一些嗶聲,告訴用戶rip已完成。 定時器自動重置,每5秒執行一次檢查(或在對話框關閉時重復發出蜂鳴聲),直到用戶按下控制台窗口中的某個鍵。

第1步,第2步和第4步工作正常,但我遇到第3步的問題,我的問題是,我應該使用哪種窗口樣式常量來檢查窗口是否可見? (WS_VISIBLE沒有工作......)

有關更多詳細信息,這是我用來檢查對話框可見性的函數:

private static bool IsWindowVisible(IntPtr hwnd)
{
    var style = GetWindowLong(hwnd, GWL.GWL_EXSTYLE);
    var visible = style & (WS flag goes here);
    return visible != 0;
}

您是否嘗試過使用IsWindowVisible()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM