有些項目要求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;
}
