ACustomApp
処理手順
- スペースバーが押される
- ACustomApp が Seer のハンドルを検索
c++
HWND seer = FindWindowEx(nullptr, nullptr, SEER_CLASS_NAME, nullptr);
- ACustomApp が選択したファイルのフルパスを準備
- パスを 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 がパスのプレビューを表示
ACustomExplorer
処理手順
- ACustomExplorer: 新しいテキストファイルを作成して classname を保存
- Seer: このパス内のすべての json ファイルは、Seer 起動後に読み込まれます。ユーザーがスペースを押すと、Seer は GetForegroundWindow を通じてハンドルを取得し、classname と照合します。ACustomExplorer と一致した場合、Seer はそのハンドルに WM_COPYDATA メッセージを送信します。dwData の値は SEER_REQUEST_PATH です。
- ACustomExplorer: WM_COPYDATA を受信後、dwData の SEER_REQUEST_PATH と照合し、選択したファイルのフルパスをできるだけ早くメッセージで返送します。
- Seer: Seer がメッセージを受信すると、ファイルをプレビューして処理が終了します。
- ロジックコードはすべて Win32 であり、UI の Qt コードからは完全に独立しています。Qt フレームワークがなくても読み取りに影響しません。
