Disabilitare i tasti speciali di Windows

E’ sempre noioso dovere abilitare e disabilitare i tasti speciali tipo CTRL+AL+CANC oppure CTRL+ESC

Se è molto utile che siano bloccati nell’uso quotidiano con il runtime a tutto schermo e’ altrettanto disagevole averli bloccati durante una sessione di teleassistenza o quando si pretende di avere il controllo totale sel Sistema Operativo per manutenzione.

Copio di seguito un frammento di codice che permette di abilitare e disabilitare queste combinazioni di tasti tramite una Action triggherata su tag interna globale @CurrentUser

#pragma code (”UseAdmin.DLL”)
#include “pwrt_api.h”
#pragma code()
#pragma code (”ALMXGINA.DLL”)
BOOL SetXGinaValue(unsigned int uiKey, BOOL *pbEnable, DWORD dwSize);
#pragma code()
BOOL bEnable;
BOOL bOK;
#define XGINA_ALLOW_SHUTDOWN 1
#define XGINA_ALLOW_LOGOUT 2
#define XGINA_ALLOW_CTL_ALT_DEL 3
#define XGINA_ALLOW_CTL_ESC 4
#define XGINA_ALLOW_ALT_ESC 5
#define XGINA_ALLOW_ALT_TAB 6

bEnable = PWRTCheckPermission(36, TRUE);
bOK = SetXGinaValue(XGINA_ALLOW_SHUTDOWN , &bEnable , sizeof(bEnable ));
bOK = SetXGinaValue(XGINA_ALLOW_LOGOUT , &bEnable , sizeof(bEnable ));
bOK = SetXGinaValue(XGINA_ALLOW_CTL_ALT_DEL , &bEnable , sizeof(bEnable ));
bOK = SetXGinaValue(XGINA_ALLOW_CTL_ESC , &bEnable , sizeof(bEnable ));
bOK = SetXGinaValue(XGINA_ALLOW_ALT_ESC , &bEnable , sizeof(bEnable ));
bOK = SetXGinaValue(XGINA_ALLOW_ALT_TAB , &bEnable , sizeof(bEnable ));

Quando l’utente si loggherà nella security di WinCC se ha il pallino rosso di abilitazione nella riga 36 i tasti speciali vengono abilitati, altrimenti vengono diabilitati.

Prestare attenzione alla riga seguente

bEnable = PWRTCheckPermission(36, TRUE);

ritorna lo stato dell’abilitazione 36 (in questo esempio).

Utile anche per sapere da codice se l’utente ha una determinata abilitazione (per esempio per nascondere determinati pulsanti in funzione delle abilitazioni)

Invia l'articolo in formato PDF a PDF Free

Comments

Leave a Reply