跳轉到內容

Windows 程式設計/程式設計 Shell 擴充套件

來自華夏公益教科書

Windows Shell 主要由 explorer.exe 組成,這是一個圖形使用者介面,用於顯示資料夾、圖示和桌面。Explorer.exe 主要用 C++ 編寫,因此編寫擴充套件模組將需要面向物件程式設計。但是,在 <windows.h> 中,有一些 C 程式可以使用來與 shell 互動以執行一些基本任務。首先,我們將描述 shell 的一些基本區域。

explorer.exe,Windows shell 程式,具有許多不同的功能,可以用來讓你的程式執行 shell 應該執行的任務。這裡我們將簡單介紹其中一些。

ShellExecute

[編輯 | 編輯原始碼]

ShellExecute 函式以檔案和路徑名作為引數,它基本上執行 shell 在雙擊該檔案時所執行的任何任務。例如,對“MyFile.txt”呼叫 ShellExecute 將開啟記事本,並顯示 MyFile.txt。類似地,對超連結呼叫 ShellExecute 將自動開啟 Internet Explorer(或你的預設瀏覽器)並開啟指定的 URL。

HINSTANCE ShellExecute(HWND hwnd,
                       LPCTSTR lpOperation,
                       LPCTSTR lpFile,
                       LPCTSTR lpParameters,
                       LPCTSTR lpDirectory,
                       INT nShowCmd);
hwnd
操作的父視窗的控制代碼
lpOperation
操作的文字名稱。這些是當你右鍵單擊圖示時出現在選單中的字串。一些常見的數值是“edit”、“run”或“execute”。
lpFile
目標檔案的名稱
lpParameters
如果 lpFile 指定了一個可執行檔案,則 lpParameters 欄位包含可執行檔案的命令列引數(如果有)
lpDirectory
指定在哪個目錄中執行操作
nShowCmd

工作列

[編輯 | 編輯原始碼]

系統托盤

[編輯 | 編輯原始碼]

系統托盤是螢幕右下角的區域,包含時鐘和許多不同的圖示。可以使用簡單的 API 呼叫將圖示新增到系統托盤。要使用的函式呼叫是 Shell_NotifyIcon 函式,我們將在下面解釋它。

WINSHELLAPI BOOL WINAPI Shell_NotifyIcon(DWORD dwMessage, PNOTIFYICONDATA pnid);

此函式接受 2 個引數。第一個引數是一個訊息,第二個引數包含有關該訊息的更多資訊。共有 3 種可能的郵件

NIM_ADD    Add a new icon to the system tray
NIM_DELETE Delete an icon from the system tray
NIM_MODIFY Modify an existing icon in the system tray

我們可以看到第二個引數是指向 NOTIFYICONDATA 結構的指標。該結構包含以下欄位

typedef struct _NOTIFYICONDATA { 
 DWORD cbSize;
 HWND hWnd; 
 UINT uID; 
 UINT uFlags; 
 UINT uCallbackMessage; 
 HICON hIcon; 
 WCHAR szTip[64]; 
} NOTIFYICONDATA, *PNOTIFYICONDATA;
cbSize
這應該反映 NOTIFYICON 結構的大小。如果我們有一個名為“nid”的結構,我們通常按以下方式分配此成員
nid.cbSize = sizeof(NOTIFYICONDATA);
hWnd
此欄位包含父視窗的控制代碼。當單擊通知圖示時,將向該視窗傳送相應的郵件。
uID
這是所討論圖示的數字識別符號。一個程式最多可以同時擁有 12 個不同的圖示。
uCallbackMessage
這是將傳送到你的視窗的郵件。此郵件應為 WM_USER 或更大。郵件的 WPARAM 欄位將包含所討論圖示的 uID。
uFlags
此成員告訴 shell 哪些欄位是有效欄位。如果某個欄位不包含任何資訊,或者你不想使用某個欄位來設定或修改數值,請不要在 uFlags 成員中列出它們。可能的數值為 NIF_ICON、NIF_MESSAGE 和 NIF_TIP。
hIcon
要顯示在系統托盤中的圖示的控制代碼。必須是 16x16 的圖示。
szTip
一個簡短的字串,包含圖示的“工具提示”。當滑鼠懸停在圖示上時,將顯示工具提示。如果你不希望顯示工具提示,請將其留空。

回收站

[編輯 | 編輯原始碼]
華夏公益教科書