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 على المقبض لمطابقة classname من خلال GetForegroundWindow. إذا تطابق مع ACustomExplorer، ترسل Seer رسالة WM_COPYDATA إلى المقبض، وتكون قيمة dwData هي SEER_REQUEST_PATH.
  3. ACustomExplorer: بعد استلام WM_COPYDATA، يطابق SEER_REQUEST_PATH لـ dwData، ويرسل رسالة مرة أخرى في أسرع وقت ممكن بالمسار الكامل للملف المحدد.
  4. Seer: عندما تستلم Seer الرسالة، تقوم بمعاينة الملف وتنتهي العملية.
    • الشيفرة البرمجية للمنطق تعتمد بالكامل على Win32، ولا علاقة لها بشيفرة Qt الخاصة بالواجهة، وحتى في حال عدم وجود إطار عمل Qt، فلن يؤثر ذلك على القراءة.

مثال