搬家第42天-wincc7.3使用脚本启用禁用windows热键

在实际项目中,我们需要禁用windows热键,但有时候需要在不退出wincc项目的情况下启用windows热键,这个时候需要使用脚本来操作。
在wincc项目使用c脚本新建一个项目模块,完整代码如下:
#pragma code ("UseAdmin.DLL")
#include "pwrt_api.h"
#pragma code()
#pragma code ("ALMXGINA.DLL")
#pragma option(mbcs)
int  hotkey_manage(BOOL bEnable )
{
BOOL SetXGinaValue(unsigned int uiKey, BOOL *pbEnable, DWORD dwSize);
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;
}
在wincc画面放置一个按钮用于禁止热键,鼠标点击事件引用上面新建的项目函数
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction "DMTagName"
// next TagID : 1
// WINCC:TAGNAME_SECTION_END
// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
// WINCC:PICNAME_SECTION_END

//return bOK;
hotkey_manage(0);
}
画面上再放置一个按钮,用于启用热键,鼠标点击事件引用新建的项目函数
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction "DMTagName"
// next TagID : 1
// WINCC:TAGNAME_SECTION_END
// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
// WINCC:PICNAME_SECTION_END
hotkey_manage(1);
}
 
可以看出核心的函数就是SetXGinaValue,由ALMXGINA.DLL提供。
posted @ 2021-03-11 10:42  来自金沙江的小鱼  阅读(1082)  评论(0编辑  收藏  举报