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

善用 Shell.Application 控制 Windows 系統:視窗排列、關機、資源管理器操作全攻略

     編輯:關於C++

初始化環境與 COM 物件

#include 
#include 

CoInitialize(NULL); // 初始化 COM 程式庫
Variant vShellOLE = Variant::CreateObject("Shell.Application"); // 建立 Shell 物件

視窗管理操作

功能方法呼叫說明
層疊視窗vShellOLE.Exec(CascadeWindows("CascadeWindows"))將所有開啟視窗層疊顯示
橫向平鋪vShellOLE.Exec(TileHorizontally("TileHorizontally"))視窗水平分割平鋪
縱向平鋪vShellOLE.Exec(TileVertically("TileVertically"))視窗垂直分割平鋪
最小化全部vShellOLE.Exec(MinimizeAll("MinimizeAll"))最小化所有視窗
撤銷最小化vShellOLE.Exec(UndoMinimizeALL("UndoMinimizeALL"))還原最小化前狀態

系統控制功能

功能程式碼範例備註
設定系統時間vShellOLE.Exec(SetTime("SetTime"))彈出時間屬性對話框
查找電腦vShellOLE.Exec(FindComputer("FindComputer"))開啟網路尋找電腦對話框
查找檔案vShellOLE.Exec(FindFiles("FindFiles"))開啟檔案搜尋對話框
Windows 說明vShellOLE.Exec(Help("Help"))開啟系統說明
執行命令vShellOLE.Exec(FileRun("FileRun"))開啟「執行」對話框
工作列屬性vShellOLE.Exec(TrayProperties("TrayProperties"))開啟工作列與開始選單屬性
系統待機vShellOLE.Exec(Suspend("Suspend"))進入待機/休眠模式
關閉 WindowsvShellOLE.Exec(ShutdownWindows("ShutdownWindows"))顯示關機對話框

資源管理器操作

瀏覽資料夾對話框


// 系統特殊資料夾常數陣列
int SpecFolder[17] = {
    ssfDESKTOP, ssfPROGRAMS, ssfCONTROLS, ssfPRINTERS, ssfPERSONAL, ssfFAVORITES,
    ssfSTARTUP, ssfRECENT, ssfSENDTO, ssfBITBUCKET, ssfSTARTMENU, ssfDESKTOPDIRECTORY,
    ssfDRIVES, ssfNETWORK, ssfNETHOOD, ssfFONTS, ssfTEMPLATES
};

Function BrowseForFolder("BrowseForFolder");
Variant ppsdf;
int nIndex = 2; // ssfCONTROLS (控制台)

// 以系統特殊資料夾為根目錄
ppsdf = vShellOLE.Exec(BrowseForFolder << short(Handle) << "BrowseForFolder method" 
    << BIF_BROWSEINCLUDEFILES << Variant(SpecFolder[nIndex]));

// 以指定路徑為根目錄
String strPath("C:\\123");
ppsdf = vShellOLE.Exec(BrowseForFolder << short(Handle) << "BrowseForFolder method" 
    << BIF_BROWSEINCLUDEFILES << Variant(strPath));

開啟資源管理器瀏覽指定目錄


Function Explore("Explore");
// 瀏覽系統特殊目錄
vShellOLE.Exec(Explore << Variant(SpecFolder[nIndex]));

// 瀏覽指定磁碟目錄
String strPath("C:\\123");
vShellOLE.Exec(Explore << Variant(strPath));

啟動控制台項目


Function ControlPanelItem("ControlPanelItem");
String strCplFile("D:\\Winnt\\System32\\appwiz.cpl"); // 新增/移除程式
BSTR FPath = TStringConverter::AnsiToOLESTR(strCplFile.c_str());
vShellOLE.Exec(ControlPanelItem << FPath);

資源釋放


vShellOLE = Unassigned; // 釋放 Shell 物件
CoUninitialize();       // 釋放 COM 程式庫

應用場景

此技術適用於系統管理工具、自動化測試腳本、桌面增強軟體等需要程式化控制 Windows Shell 行為的場合。透過 Shell.Application 介面,可避免直接呼叫複雜的 Shell API,大幅簡化開發難度。

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