首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

檢測 Windows 活動桌面是否啟用的簡易方法

     編輯:關於C++

Windows 98/2000 引入的 Active Desktop 將桌面整合為 Web 內容容器(實質為 Internet Explorer_Server 視窗)。本文提供一個簡潔的 C++ Builder 函數,透過視窗類別名稱層級查找,快速判斷 Active Desktop 是否處於啟用狀態。

實作代碼


bool __fastcall TWallFrm::ActiveDesktop() {
    // 檢測是否啟用了 Active Desktop
    // 是則返回 true,否則返回 false
    HWND hwnd;
    hwnd = FindWindow("Progman", NULL);                 // 1. 程式管理員 (桌面背景)
    hwnd = FindWindowEx(hwnd, NULL, "SHELLDLL_DefView", NULL); // 2. Shell 資料夾檢視
    hwnd = FindWindowEx(hwnd, NULL, "Internet Explorer_Server", NULL); // 3. IE 渲染引擎視窗
    return (hwnd > 0); // 找到 IE_Server 視窗即表示 Active Desktop 啟用
}

原理解析

層級視窗類別名稱說明
1ProgmanProgram Manager,經典桌面主視窗(Win9x/NT4)
2SHELLDLL_DefViewShell 資料夾預設檢視,負責桌面圖示顯示
3Internet Explorer_ServerActive Desktop 核心:嵌入式 IE 渲染引擎,負責顯示 HTML 桌面內容

若第 3 層視窗存在(hwnd > 0),表示 Active Desktop 已啟用;否則為傳統桌面模式。

適用環境與驗證

  • 開發工具:C++ Builder 5
  • 測試平台:Windows 98 Second Edition
  • 編譯通過,實測準確判斷 Active Desktop 狀態

應用場景

  • 桌面工具軟體:根據桌面模式調整繪圖/互動邏輯。
  • 系統資訊收集:記錄使用者環境配置。
  • 相容性處理:Active Desktop 啟用時可能影響特定 GDI 繪圖操作,需調整策略。

此方法無需 COM 介面或登錄檔查詢,純 API 呼叫,效能極佳且程式碼極簡。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved