ACustomApp encontra o handle do Seer
c++
HWND seer = FindWindowEx(nullptr, nullptr, SEER_CLASS_NAME, nullptr);
ACustomApp prepara o caminho completo do arquivo selecionado
Envia o caminho para o handle do 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 exibe a visualização do caminho
ACustomExplorer
processo
ACustomExplorer: cria um novo arquivo de texto para armazenar seu classname
Seer: todos os arquivos json neste caminho serão carregados após o Seer ser iniciado. Quando o usuário pressiona espaço, o Seer obtém o handle para corresponder ao classname através do GetForegroundWindow. Se corresponder a ACustomExplorer, o Seer envia uma mensagem WM_COPYDATA para o handle, e o valor de dwData é SEER_REQUEST_PATH .
ACustomExplorer: após receber WM_COPYDATA, ele corresponde ao SEER_REQUEST_PATH de dwData, e envia uma mensagem de volta assim que possível com o caminho completo do arquivo selecionado.
Seer: quando o Seer recebe a mensagem, ele visualiza o arquivo e o processo termina.
O código lógico é todo Win32, sendo completamente independente do código Qt da UI, mesmo que não haja framework Qt, isso não afetará a leitura.