WinCC中通過腳本禁用或啟用Windows快捷鍵


 

有些項目要求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
通過“uiKey”參數指定Windows組合鍵,可使用以下常數:
#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
注意CTRL+ESC等同於Windows鍵。

pbEnable
pbEnable參數是一個指向BOOL或DWORD類型的指針,如果所指的變量值為TRUE,則組合鍵被使能,如果為FALSE則禁止。

dwSize
dwSize參數為pbEnable指針所指向的變量的字節數。

 

禁用快捷鍵的腳本如下,將以下代碼寫在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; 
}

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM