Seer-IPC

ACustomApp

Processo

  1. Viene attivata la Barra spaziatrice
  2. ACustomApp trova l'handle di Seer c++ HWND seer = FindWindowEx(nullptr, nullptr, SEER_CLASS_NAME, nullptr);
  3. ACustomApp prepara il percorso completo del file selezionato
  4. Invia il percorso all'handle di 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 visualizza l'anteprima del percorso


ACustomExplorer

Processo

  1. ACustomExplorer: crea un nuovo file di testo per memorizzare il tuo classname
  2. Seer: tutti i file json in questo percorso verranno caricati all'avvio di Seer. Quando l'utente preme la barra spaziatrice, Seer ottiene l'handle per abbinare il classname tramite GetForegroundWindow. Se corrisponde a ACustomExplorer, Seer invia un messaggio WM_COPYDATA all'handle e il valore di dwData è SEER_REQUEST_PATH.
  3. ACustomExplorer: dopo aver ricevuto WM_COPYDATA, abbina SEER_REQUEST_PATH di dwData e invia un messaggio di ritorno il prima possibile con il percorso completo del file selezionato.
  4. Seer: quando Seer riceve il messaggio, visualizza l'anteprima del file e il processo termina.
    • Il codice logico è tutto Win32, che è completamente indipendente dal codice Qt dell'interfaccia; anche senza framework Qt, la lettura non viene influenzata.

esempio