C 脚本中获取项目的用户组名的方法
C 脚本中获取项目的用户组名的方法
scadafaq
个人公众号『ScadaFAQ』,作者:RobinLiu,分享自控scada技术相关内容(在公众号底部菜单查看更多精彩内容)。
以下文章来源于WINCC脚本专栏 ,作者robinliu
本公众号分享WINCC ANSI-C VBScript JavaScript VBA 脚本相关内容
主要内容:
1、PWGENEnumGroups函数
2、回调函数
3、C脚本中调用DLL
4、定义回调函数
5、使用用户管理API
WinCC Professional提供了随WinCC Runtime Professional 安装的ODK API ,这为其他应用程序访问WINCC的运行数据提供了一个强大的开放式编程接口。
可在以下位置使用这些API函数:
WinCC 内部:在用户自定义 C 函数和局部 C 脚本中。
WinCC 外部:使用 C/C++ 编程语言创建的 Windows 应用程序中。如可以通过用户管理的函数,访问项目中的用户管理数据。下文介绍一下如何在WINCC C脚本中使用API读取用户组名称。
1
PWGENEnumGroups函数
该函数读取已组态用户组、针对每个组调用回调函数并在 dwCount 中返回组数。
语句:
BOOL PWGENEnumGroups (
LPDWORD dwCount,
PWGEN_ENUM_GROUPS_CALLBACK cfn,
PVOID userdata,
LPCMN_ERROR error )
说明:
-
dwCount
指向应存储用户组数的位置的指针。
-
cfn
用于接收信息的回调函数。如果 cfn == NULL,则只对用户组进行计数。
-
userdata
指向应用程序特定数据的指针。函数不会评估该指针,但在回调函数中会重新提供。
-
error
指向 CMN_ERROR 结构中的扩展错误消息数据的指针。出现错误时,系统向该结构中写入错误信息。
-
返回值
TRUE, 用户组已列出
FALSE,错误
2
回调函数
如果要评估系统列出的用户组信息,必须为PWGENEnumGroups函数提供 如下类型的回调函数。
语句:
BOOL ( * PWGEN_ENUM_GROUPS_CALLBACK) (
LPWGEN_GROUPINFO lpGroupInfo,
PVOID lpUser);
说明:
-
lpGroupInfo
指向具有用户组数据的 PWGEN_GROUPINFO 类型结构的指针。
typedef struct {
TCHAR name[MAX_LOGIN];
int expiration_time;
} PWGEN_GROUPINFO;
结构中name为用户组的名称。expiration_time为自动注销时间。
-
lpUser
指向应用程序特定数据的指针。该指针在回调函数中重新可用。
-
返回值
TRUE,用户组已列出
FALSE,错误
3
C脚本中调用DLL
C脚本中调用DLL的语句格式:
#pragma code("<Name>.dll")
//声明在 DLL 中存储的函数:
<
Return
value> <
Function
name
1>
(...)
;
<
Return
value> <
Function
name
2>
(...)
;
...
<
Return
value> <
Function
name
n
>
(...)
;
#pragma code
用户管理的函数由 usegen.dll 提供。
打开C脚本的全局头文件 GlobalDefinitions.h ,输入对 usegen.dll调用的声明语句,包含需要的头文件usegenap.h。
4
定义回调函数
鼠标双击“添加新C函数”添加一个项目函数
然后设置函数:根据需要修改函数名称(本文示例为EnumGroups),函数返回的数据类型选择BOOL。然后双击“参数”下“添加”添加函数参数
添加两个参数:类型分别为LPWGEN_GROUPINFO、PVOID。
然后,根据需要编写EnumGroups函数内容,如下在画面的诊断窗口打印输出所有的用户组名
5
使用用户管理API
本文示例:在画面中按钮的单击事件中添加C脚本,读取已组态用户组。
说明:
先使用 PWGENConnect 函数连接到当前打开项目的数据库。然后调用 PWGENEnumGroups 函数,其第二个参数的回调函数为前面已定义的 EnumGroups 函数。最后使用 PWGENDisconnect 函数终止与当前打开项目的数据库的连接。
用户管理API还提供了如读取用户名等其他函数,使用方法类似。
本文介绍的方法也可用于经典WINCC。遇到什么问题可以留言交流。
其他运行系统API函数的使用说明,可查看 WinCC Engineering V18 – 编程参考手册: https://support.industry.siemens.com/cs/cn/zh/view/109813306
- - - 正 文 - - - - - - 结 束 - - -
如果你有与本文相关问题可以后台发消息,欢迎 点赞、分享、关注 。
-
2023年血糖新标准公布,不是3.9-6.1,快来看看你的血糖正常吗? 2023-02-07
-
2023年各省最新电价一览!8省中午执行谷段电价! 2023-01-03
-
GB 55009-2021《燃气工程项目规范》(含条文说明),2022年1月1日起实施 2021-11-07
-
PPT导出高分辨率图片的四种方法 2022-09-22
-
2023年最新!国家电网27家省级电力公司负责人大盘点 2023-03-14
-
全国消防救援总队主官及简历(2023.2) 2023-02-10
-
盘点 l 中国石油大庆油田现任领导班子 2023-02-28
-
我们的前辈!历届全国工程勘察设计大师完整名单! 2022-11-18
-
关于某送变电公司“4·22”人身死亡事故的快报 2022-04-26
