首页 > 行业资讯 > C 脚本中获取项目的用户组名的方法

C 脚本中获取项目的用户组名的方法

时间:2023-02-08 来源: 浏览:

C 脚本中获取项目的用户组名的方法

自控技术FAQ
自控技术FAQ

scadafaq

个人公众号『ScadaFAQ』,作者:RobinLiu,分享自控scada技术相关内容(在公众号底部菜单查看更多精彩内容)。

收录于合集

以下文章来源于WINCC脚本专栏 ,作者robinliu

WINCC脚本专栏 .

本公众号分享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

- - -  正  文 - - - - - - 结  束 - - -


如果你有与本文相关问题可以后台发消息,欢迎 点赞、分享、关注

版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。
相关推荐