ACustomApp tìm handle của Seer
c++
HWND seer = FindWindowEx(nullptr, nullptr, SEER_CLASS_NAME, nullptr);
ACustomApp chuẩn bị đường dẫn đầy đủ của tệp đã chọn
Gửi đường dẫn đến handle của 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 hiển thị bản xem trước của đường dẫn
ACustomExplorer
quy trình
ACustomExplorer: tạo một tệp văn bản mới để lưu trữ classname của bạn
Seer: tất cả tệp json trong đường dẫn này sẽ được tải sau khi Seer khởi động. Khi người dùng nhấn space, Seer lấy handle để khớp classname thông qua GetForegroundWindow. Nếu khớp với ACustomExplorer, Seer gửi thông báo WM_COPYDATA đến handle và giá trị của dwData là SEER_REQUEST_PATH.
ACustomExplorer: sau khi nhận WM_COPYDATA, nó khớp SEER_REQUEST_PATH của dwData và gửi lại thông báo ngay khi có thể với đường dẫn đầy đủ của tệp đã chọn.
Seer: khi Seer nhận được thông báo, nó xem trước tệp và quy trình kết thúc.
Mã logic đều là Win32, hoàn toàn độc lập với mã Qt của giao diện, ngay cả khi không có framework Qt, nó sẽ không ảnh hưởng đến việc đọc.