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: створює новий текстовий файл для зберігання назви свого класу
  2. Seer: всі json-файли в цьому шляху завантажуються після запуску Seer. Коли користувач натискає пробіл, Seer отримує дескриптор для зіставлення назви класу через GetForegroundWindow. Якщо назва збігається з ACustomExplorer, Seer надсилає повідомлення WM_COPYDATA на дескриптор, а значення dwData дорівнює SEER_REQUEST_PATH.
  3. ACustomExplorer: після отримання WM_COPYDATA він зіставляє SEER_REQUEST_PATH з dwData та надсилає повідомлення назад якомога швидше з повним шляхом вибраного файлу.
  4. Seer: коли Seer отримує повідомлення, він показує попередній перегляд файлу, і процес завершується.
    • Логічний код повністю Win32, який не залежить від Qt коду інтерфейсу. Навіть без Qt framework це не впливає на читання.

example