最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

WinCC中通过脚本禁用或启用Windows快捷键

运维笔记admin1浏览0评论

一、禁用快捷键

有些项目要求WinCC全屏运行,并禁止通过操作系统快捷键切换到桌面,这时只需要在WinCC的计算机属性中勾选“禁用用于进行操作系统访问的快捷键”。此后当WinCC运行时,按Win键或Ctrl+Alt+Delete等快捷键都不会起作用

二、脚本禁用/启用操作系统快捷键

在实际项目中,我们需要禁用windows热键,但有时候需要在不退出wincc项目的情况下启用windows热键,这个时候需要使用脚本来操作

禁用/启用操作系统快捷键通过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指针所指向的变量的字节数。

//传递TRUE则启动按键,传递FALSE禁用按键

1、在wincc 项目中的全局脚本,C脚本中新建一个hotkey_manage.fct的项目函数,代码如下

#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;
}
2、在wincc画面放置一个按钮用于禁止热键,鼠标点击事件引用上面新建的项目函数

#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
hotkey_manage(0);

}

3、画面上再放置一个按钮,用于启用热键,鼠标点击事件引用新建的项目函数

#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
hotkey_manage(1);

}

发布评论

评论列表(0)

  1. 暂无评论