简介
C 示例显示了如何通过电子签名来保护过程控制操作,使其免受未经授权的执行。 调用“ShowDialog”函数在运行系统中打开一个对话框,通过该对话框对用户进行验证。 使输出命令与成功的验证相关联。
“ShowDialog”函数的语法
INT ShowDialog(char* lpszUserName, char* lpszDisplayedUserName, char* lpszDomainName, int intLangID, variant* vtComment);
参数
lpszUserName
用于验证用户的用户名。
lpszDisplayedUserName
在“SIMATIC Logon – 电子签名”对话框的“用户名”域中显示的用户名称。
lpszDomainName
用于验证用户的计算机的名称:
- 集中管理用户的计算机(SIMATIC Logon 服务器)的名称
- 本地计算机的名称
如果没有输入其它名称,系统会自动输入本地计算机的名称。
intLangID
对话框中所需语种的标识符:
1028 – 中文(繁体)
1031 – 德语
1033 – 英语
1034 – 西班牙语
1036 – 法语
1040 – 意大利语
1041 – 日语
1042 – 朝鲜语
2052 – 中文(简体)
vtComment
用户输入的注释。
返回值
返回值 = 1
用户成功获得验证。
返回值 = 2
用户使用“取消”按钮关闭了对话框。
返回值 = 3
用户 3 次验证均失败。
示例: 用于验证用户的对话框的输出(有强制注释)
|
---|
#include "apdefap.h" void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) {
int nRet = 0;
VARIANT vtComment;
__object* EsigDlg = __object_create("CCESigDlg.ESIG");
if (!EsigDlg)
{ printf("Failed to create Picture Object"); return; }
nRet = EsigDlg->ShowDialog("winccadmin","winccadmin","SIMLOGSERV",1033 ,&vtComment); __object_delete(EsigDlg);
. . . .
} |
#include "apdefap.h" void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { int nRet = 0; VARIANT vtComment; __object* EsigDlg = __object_create("CCESigDlg.ESIG"); if (!EsigDlg) { printf("Failed to create Picture Object"); return; } nRet = EsigDlg->ShowDialog("winccadmin","winccadmin","SIMLOGSERV",1033 ,&vtComment); __object_delete(EsigDlg); . . . . }
结果
在运行系统中执行 C 脚本时,会显示以下对用户进行验证的对话框:
在本示例中,强制要求输入注释。 如果未强制要求注释,就必须在函数中插入“EsigDlg->forcecomment =FALSE”。
根据传递的返回值“nret”,可对 WinCC 对象的鼠标事件设置多种不同的响应。
同时会生成记录验证或验证尝试的消息。
说明 通过密码来保护 C 动作,以使程序代码免受未经授权的修改以及查看。 |