ACustomApp
流程
- 按下
空白鍵
- ACustomApp 找到 Seer 的控制代碼
c++
HWND seer = FindWindowEx(nullptr, nullptr, SEER_CLASS_NAME, nullptr);
- ACustomApp 準備選取檔案的完整路徑
- 將路徑傳送到 Seer 的控制代碼
c++
void sendPath2Seer(HWND seer, LPCWSTR path)
{
COPYDATASTRUCT cd;
cd.cbData = (_tcslen(path) + 1) * sizeof(TCHAR);
cd.lpData = (LPVOID)path;
cd.dwData = SEER_INVOKE_W32;
SendMessage(seer, WM_COPYDATA, 0, (LPARAM)&cd);
}
- Seer 顯示該路徑的預覽
ACustomExplorer
流程
- ACustomExplorer:建立一個新的文字檔來儲存您的 classname
- Seer:此路徑下的所有 json 檔案會在 Seer 啟動後載入。當使用者按下空白鍵時,Seer 透過 GetForegroundWindow 取得控制代碼比對 classname。如果符合 ACustomExplorer,Seer 會發送 WM_COPYDATA 訊息到該控制代碼,dwData 的值為 SEER_REQUEST_PATH。
- ACustomExplorer:收到 WM_COPYDATA 後,比對 dwData 的 SEER_REQUEST_PATH,並盡快回傳包含所選檔案完整路徑的訊息。
- Seer:收到訊息後,Seer 預覽該檔案,流程結束。
- 邏輯程式碼皆為 Win32,與 UI 的 Qt 程式碼完全獨立,即使沒有 Qt 框架也不會影響讀取。
