Seer-IPC

ACustomApp

流程

  1. 按下 空白鍵
  2. ACustomApp 找到 Seer 的控制代碼 c++ HWND seer = FindWindowEx(nullptr, nullptr, SEER_CLASS_NAME, nullptr);
  3. ACustomApp 準備選取檔案的完整路徑
  4. 將路徑傳送到 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); }
  5. Seer 顯示該路徑的預覽


ACustomExplorer

流程

  1. ACustomExplorer:建立一個新的文字檔來儲存您的 classname
  2. Seer:此路徑下的所有 json 檔案會在 Seer 啟動後載入。當使用者按下空白鍵時,Seer 透過 GetForegroundWindow 取得控制代碼比對 classname。如果符合 ACustomExplorer,Seer 會發送 WM_COPYDATA 訊息到該控制代碼,dwData 的值為 SEER_REQUEST_PATH。
  3. ACustomExplorer:收到 WM_COPYDATA 後,比對 dwData 的 SEER_REQUEST_PATH,並盡快回傳包含所選檔案完整路徑的訊息。
  4. Seer:收到訊息後,Seer 預覽該檔案,流程結束。
    • 邏輯程式碼皆為 Win32,與 UI 的 Qt 程式碼完全獨立,即使沒有 Qt 框架也不會影響讀取。

example