wincc7.3使用脚本启用禁用windows热键
(2020-01-18 17:39:00)
标签:
wincc7.3c脚本热键屏蔽热键启用 |
分类: 西门子软硬件 |
在实际项目中,我们需要禁用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;
}
#include "pwrt_api.h"
#pragma code()
#pragma code ("ALMXGINA.DLL")
#pragma option(mbcs)
int
{
BOOL SetXGinaValue(unsigned int uiKey, BOOL *pbEnable, DWORD dwSize);
BOOL bOK;
#define XGINA_ALLOW_SHUTDOWN
#define XGINA_ALLOW_LOGOUT
#define XGINA_ALLOW_CTL_ALT_DEL
#define XGINA_ALLOW_CTL_ESC
#define XGINA_ALLOW_ALT_ESC
#define XGINA_ALLOW_ALT_TAB
bOK = SetXGinaValue(XGINA_ALLOW_SHUTDOWN
bOK &= SetXGinaValue(XGINA_ALLOW_LOGOUT
bOK &= SetXGinaValue(XGINA_ALLOW_CTL_ALT_DEL
bOK &= SetXGinaValue(XGINA_ALLOW_CTL_ESC
bOK &= SetXGinaValue(XGINA_ALLOW_ALT_ESC
bOK &= SetXGinaValue(XGINA_ALLOW_ALT_TAB
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
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
// 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
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);
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
// WINCC:PICNAME_SECTION_END
hotkey_manage(1);
}
可以看出核心的函数就是SetXGinaValue,由ALMXGINA.DLL提供。
后一篇:新的一年还是得有点转变

加载中…