有些項目要求WinCC全屏運行,並禁止通過操作系統快捷鍵切換到桌面,這時只需要在WinCC的計算機屬性中勾選“禁用用於進行操作系統訪問的快捷鍵”。此后當WinCC運行時,按Win鍵或Ctrl+Alt+Delete等快捷鍵都不會起作用。
然而某些情況下要求管理員在不關閉WinCC進入到桌面進行系統維護,可以通過WinCC中的C腳本啟用操作系統快捷鍵,當完成維護后再用腳本禁用快捷鍵。
禁用/啟用操作系統快捷鍵通過C函數“SetXGinaValue()”來實現,該函數由"ALMXGINA.DLL"提供。
函數原型 | BOOL SetXGinaValue(unsigned int uiKey, BOOL *pbEnable, DWORD dwSize); |
函數描述 | 本函數通過“uiKey”參數指定Windows組合鍵,通過“pbEnable”參數控制組合鍵被禁止或使能。 |
返回值 | 函數運行成功返回TRUE,函數運行失敗返回FALSE。 |
參數 | uiKey pbEnable dwSize |
禁用快捷鍵的腳本如下,將以下代碼寫在WinCC的全局C腳本的項目模塊中,在畫面中調用managekeys()函數,給函數傳遞TRUE則使能組合鍵,傳遞FALSE則禁用組合鍵。
//傳遞TRUE則啟動按鍵,傳遞FALSE禁用按鍵 int managekeys( BOOL bEnable ) { #pragma option(mbcs) #pragma code ("ALMXGINA.DLL") BOOL SetXGinaValue(unsigned int uiKey, BOOL *pbEnable, DWORD dwSize); #pragma code() 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 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 )); return bOK; }