Seer-IPC

ACustomApp

Proceso

  1. Se presiona la Barra espaciadora
  2. ACustomApp encuentra el manejador (handle) de Seer c++ HWND seer = FindWindowEx(nullptr, nullptr, SEER_CLASS_NAME, nullptr);
  3. ACustomApp prepara la ruta completa del archivo seleccionado
  4. Envía la ruta al manejador (handle) de 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 muestra la previsualización de la ruta


ACustomExplorer

Proceso

  1. ACustomExplorer: crea un nuevo archivo de texto para almacenar tu classname
  2. Seer: todos los archivos json en esta ruta se cargarán después de iniciar Seer. Cuando el usuario presiona la barra espaciadora, Seer obtiene el manejador (handle) para coincidir con el classname a través de GetForegroundWindow. Si coincide con ACustomExplorer, Seer envía un mensaje WM_COPYDATA al manejador, y el valor de dwData es SEER_REQUEST_PATH.
  3. ACustomExplorer: después de recibir WM_COPYDATA, coincide con el SEER_REQUEST_PATH de dwData, y envía un mensaje de vuelta tan pronto como sea posible con la ruta completa del archivo seleccionado.
  4. Seer: cuando Seer recibe el mensaje, previsualiza el archivo y el proceso termina.
    • El código lógico es todo Win32, el cual es completamente independiente del código Qt de la interfaz de usuario, incluso si no hay framework Qt, no afectará la lectura.

ejemplo