Seer-IPC

ACustomApp

Процесс

  1. Нажата клавиша Spacebar
  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 получает дескриптор для сопоставления classname через GetForegroundWindow. Если он совпадает с ACustomExplorer, Seer отправляет сообщение WM_COPYDATA этому дескриптору, а значение dwData равно SEER_REQUEST_PATH.
  3. ACustomExplorer: после получения WM_COPYDATA сопоставляет SEER_REQUEST_PATH из dwData и отправляет ответное сообщение как можно скорее с полным путём выбранного файла.
  4. Seer: когда Seer получает сообщение, он отображает предпросмотр файла, и процесс завершается.
    • Логика кода полностью на Win32, которая полностью независима от Qt-кода UI, поэтому даже без Qt Framework это не повлияет на чтение.

example