Seer-IPC

ACustomApp

Proces

  1. Naciśnięto Spację
  2. ACustomApp znajduje uchwyt Seera c++ HWND seer = FindWindowEx(nullptr, nullptr, SEER_CLASS_NAME, nullptr);
  3. ACustomApp przygotowuje pełną ścieżkę zaznaczonego pliku
  4. Wysyła ścieżkę do uchwytu Seera 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 wyświetla podgląd ścieżki


ACustomExplorer

Proces

  1. ACustomExplorer: tworzy nowy plik tekstowy do przechowywania Twojej nazwy klasy
  2. Seer: wszystkie pliki json w tej ścieżce zostaną załadowane po uruchomieniu Seera. Gdy użytkownik naciśnie spację, Seer pobiera uchwyt do dopasowania nazwy klasy przez GetForegroundWindow. Jeśli pasuje do ACustomExplorer, Seer wysyła wiadomość WM_COPYDATA do uchwytu, a wartość dwData to SEER_REQUEST_PATH.
  3. ACustomExplorer: po odebraniu WM_COPYDATA dopasowuje SEER_REQUEST_PATH w dwData i wysyła wiadomość zwrotną tak szybko, jak to możliwe, z pełną ścieżką zaznaczonego pliku.
  4. Seer: gdy Seer otrzyma wiadomość, wyświetla podgląd pliku i proces się kończy.
    • Kod logiki to czysty Win32, który jest całkowicie niezależny od kodu Qt interfejsu, więc nawet bez frameworka Qt nie wpłynie to na działanie.

przykład