2015-06-09 23 views
7

Ich habe eine Flex-Desktop-Anwendung mit Adobe Air erstellt. Ich muss die Anwendung vor der Erfassung geschützt werden. Durch Ändern der Fensteranzeigeaffinität der Anwendung kann die Anwendung davor geschützt werden, erfasst zu werden. Wie Win API in Flex zu verwenden? Gibt es eine andere Möglichkeit, das Fenster vor der Erfassung zu schützen?Win32-API in Flex aufrufen, um Fenster-Display-Affinität festzulegen

+0

Stört es dich, wenn meine Antwort besagt, dass Sie eine C DLL erstellen müssen, als "Air Extension" (für Air 3)? – manuell

+0

Wenn Sie die setwindowdisplayaffinity von einem anderen Prozess aufrufen, wird ACCESS DENIED zurückgegeben. Dann wird es nichts nützen. – Vishnu

+0

Die DLL wäre eine AIR-Erweiterung, die im Anwendungsprozess ausgeführt wird. Kein "Zugriff verweigert" hier. – manuell

Antwort

1

Zuerst müssen Sie sicherstellen, dass das Hauptfenster nicht den WS_EX_LAYERED Windows-Stil hat. Dieser Stil macht SetWindowDisplayAffinity schlägt mit Code 8 (ERROR_NOT_ENOUGH_MEMORY), zumindest auf meinem Rechner (Seven Pro 64 Bit). Setzen Sie in Ihrem -app.xml file den Wert false für den Knoten <transparent> unter <initialWindow>.

Zweitens müssen Sie auswählen, wie eine reguläre C DLL in den Anwendungsprozess injiziert werden, da die API mit Fehler 5 (ERROR_ACCESS_DENIED) fehlschlägt, wenn Sie versuchen, die Affinität eines Fensters im nicht aufrufenden Prozess zu ändern.

Eine mögliche Injektionsmethode ist die SetWindowsHookEx API. Google wird Ihnen viele Treffer dazu geben. Fühlen Sie sich frei, nach einigen Details zu fragen. Sie benötigen offensichtlich die Zusammenarbeit eines anderen Prozesses (hier und einige Win32-APIs).

Eine andere Möglichkeit ist die Codierung eines 'ACTIONSCRIPT® Extensions for ADOBE® AIR®' (PDF).

Das scheint später zu bevorzugen:

  • Keine Zusammenarbeit von einem externen Prozess benötigt.
  • Adobe AIR lädt die DLL für Sie.
  • C/C++ Code viel einfacher.

verwenden ich die erste Technik, wie ich in rohem Win32-APIs über DLL fließender bin, als ich mit AIR und Action Script bin ...

ich, dass erste Technik mit einem sehr einfachen erfolgreich getestet " Hallo Welt "AIR Desktop-Anwendung, und erhalten Sie eine schöne" All Black "-Bild nach dem Bildschirm drucken.

Verwandte Themen