ACustomApp encuentra el manejador (handle) de Seer
c++
HWND seer = FindWindowEx(nullptr, nullptr, SEER_CLASS_NAME, nullptr);
ACustomApp prepara la ruta completa del archivo seleccionado
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);
}
Seer muestra la previsualización de la ruta
ACustomExplorer
Proceso
ACustomExplorer: crea un nuevo archivo de texto para almacenar tu classname
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.
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.
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.