2015-06-09 71 views
7

Ho creato un'applicazione desktop Flex con Adobe Air. Ho bisogno di proteggere l'applicazione dall'essere catturata. Modificando l'affinità di visualizzazione della finestra dell'applicazione, l'applicazione può essere protetta dalla cattura. Come usare win API in flex? C'è qualche altro modo per proteggere la finestra dall'essere catturata?chiama Win32 API in flex per impostare Affinità visualizzazione finestra

+0

Ti dispiace se la mia risposta dice che devi costruire una DLL C, come "Air Extension" (per Air 3)? – manuell

+0

Se si chiama setwindowdisplayaffinity da un altro processo, si restituisce ACCESS NEGATO. Allora sarà inutile. – Vishnu

+0

La Dll sarebbe un'estensione AIR, in esecuzione nel processo dell'applicazione. Nessun "accesso negato" qui. – manuell

risposta

1

Per prima cosa è necessario assicurarsi che la finestra principale non disponga dello stile di Windows WS_EX_LAYERED. Questo stile rende SetWindowDisplayAffinity non riuscito con il codice 8 (ERROR_NOT_ENOUGH_MEMORY), almeno sulla mia macchina (Seven Pro 64 bit). Nello -app.xml file, impostare il valore su false per il nodo <transparent> in <initialWindow>.

In secondo luogo, è necessario scegliere come iniettare una normale DLL C nel processo dell'applicazione, poiché l'API non riuscirà con l'errore 5 (ERROR_ACCESS_DENIED) se si tenta di modificare l'affinità di una finestra che non si trova nel processo del chiamante.

Un possibile metodo di iniezione utilizza l'API SetWindowsHookEx. Google ti darà molti successi su questo. Sentiti libero di chiedere alcuni dettagli. Ovviamente hai bisogno della cooperazione di un altro processo, qui (e alcune pratiche API Win32).

Un altro modo possibile è la codifica di 'ACTIONSCRIPT® Extensions for ADOBE® AIR®' (PDF).

Il seguito sembra preferibile:

  • No collaborazione da un processo esterno necessario.
  • Adobe AIR esegue il caricamento della DLL.
  • codice C/C++ molto più semplice.

ho usato la prima tecnica, come io sono più fluente in Win32 API prime su DLL, di me con l'aria e Action Script ...

ho testato con successo che prima tecnica con un semplice " Hello World "Applicazione AIR Desktop e ottieni una bella immagine" All Black "dopo la schermata di stampa.