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는 GetForegroundWindow를 통해 classname과 일치하는 핸들을 가져옵니다. _ACustomExplorer_와 일치하면 Seer는 해당 핸들로 WM_COPYDATA 메시지를 보내고 dwData 값은 SEER_REQUEST_PATH입니다.
  3. ACustomExplorer: WM_COPYDATA를 수신한 후 dwData의 SEER_REQUEST_PATH와 일치하는지 확인하고, 선택된 파일의 전체 경로와 함께 가능한 빨리 메시지를 다시 보냅니다.
  4. Seer: Seer가 메시지를 수신하면 파일을 미리보고 프로세스가 종료됩니다.
    • 로직 코드는 모두 Win32이며, UI의 Qt 코드와는 완전히 독립적이므로 Qt 프레임워크가 없어도 읽기에 영향을 주지 않습니다.

example