在WinCC 做的图控画面上如何实现用户登陆、退出和关闭WinCC图控的功能

各位高手你们好!小弟我请教一个问题:我需要实现的功能描述如下:
 1、WinCC图控专案运行时,会先打开一张主画面,主画面中包括很多按钮,其中一个是用户登陆的按钮,当我点击登陆按钮时回弹出一个小的用户登陆画面(此时原来的主画面还存在),用户登陆画面中有“用户登陆”、“用户登出”、“修改已登陆用户的密码”、“配置新用户”和“退出WinCC专案”的功能,当用户登陆成功后,会在WinCC的画面的左上角显示目前登陆的用户名和等级,没有用户登陆的时候显示用户名为“None”,等级为0,谢谢各位,小弟我的邮箱是wyq8327@163.com,如果有类似的资料请发给我,如果只有我要的部分功能也可以,万分感谢!

问题补充:
请问麦子:
     您提供的这段代码该加在什么地方,是在用户登陆的按钮的C脚本里面还是在其他什么地方,谢谢!

最佳答案

如何实现用户登陆日志(wincc中用c脚本实现?)( 柳树成林原创)
 用户登陆日志:(包括用户的登陆退出信息,以便查询在什么时间段是哪个用户在使用这个监控软件)

 #i nclude "apdefap.h"

 int gscAction( void )
 {
 #pragma code("kernel32.dll")
 VOID GetLocalTime(LPSYSTEMTIME lpSystemTime);
 #pragma code()

 char*  username;
 char buf[128];
 static char preuser[128];
 unsigned a,b,c,d,e,f;
 FILE* fp;
 SYSTEMTIME sysTime;

 //读取系统时间,并且复制给变量a,b,c,d,e,f
 GetLocalTime(&sysTime);

 a=sysTime.wHour; 
 b=sysTime.wMinute; 
 c=sysTime.wSecond; 
 f=sysTime.wYear; 
 e=sysTime.wMonth; 
 d=sysTime.wDay;

 //得到当前用户名称
 username = GetTagChar("@CurrentUser");
 fp= fopen("c:\\wincclog.txt", "a+"); 
 if(strcmp(username, preuser)!=0)    //如果当前用户名称和前一个用户名不同
 {
        if((strcmp(username, "")  != 0)&&(strcmp(preuser, "") == 0))     //如果当前用户名称不空同时前一个用户名为空
   
        { 
                 sprintf(buf, "用户:%s\t登陆时间是:\t %d-%d-%d,%d-%d-%d\n", username,a,b,c,d,e,f);
                 fputs(buf, fp);
         }
        else
        { 
                if((strcmp(username, "") == 0)&&(strcmp(preuser, "")  != 0))     //如果当前用户名称为空同时前一个用户名不空
   
               { 
                          sprintf(buf, "用户:%s\t退出时间是:\t %d-%d-%d,%d-%d-%d\n", preuser,a,b,c,d,e,f);
                          fputs(buf, fp);
                }

                else
               { 
                          sprintf(buf, "用户:%s\t退出时间是:\t %d-%d-%d,%d-%d-%d\n", preuser,a,b,c,d,e,f);
                          fputs(buf, fp);
                          sprintf(buf, "用户:%s\t登陆时间是:\t %d-%d-%d,%d-%d-%d\n", username,a,b,c,d,e,f);
                          fputs(buf, fp);
                }
         }
 }

 strcpy(preuser, username);
 fclose(fp);

 return 0;
 }

提问者对于答案的评价:
谢谢各位高手的回答,请问麦-子,您提供的代码应该放在什么位置,谢谢!

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc274433.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2019年6月11日
下一篇 2019年6月11日

相关推荐

  • wincc怎么用mscomm控件的binary模式通讯

    小弟是个新手,最近用wicc中的mscomm控件实现串口通讯,要求用binary模式,焦头烂额,琢磨了好几周都弄不出来,求助各位高手。 附上自己的不正确程序,求各位大侠帮…

    SIMATIC WinCC 2019年6月11日
  • 用MPI通信方式的电缆线怎么做?

    用MPI通信方式的电缆线怎么做?接线方式 问题补充:1:“电缆线”改为“通信线” 2:通信线应怎么做? 谢谢 最佳答案 我们买的MPI通信线接的是3、4、5、8…

    SIMATIC WinCC 2019年6月11日
  • wincc flexble SMART

    各位前辈帮我看一下,换了个电脑这个项目打不开了,是什么情况、 图片说明:          最佳答案 你这不是最新版本的…

    2021年7月5日
  • WinCC.SetValue(Chr(34) & I & Chr(34), Text0(I))和WinCC.SetValue " I",Text0(I))问题

    调试发现,第二条语句能够接收一个变量值,第一条不能接收,但能感应,I不同值时显示为0而不是打叉。WinCC.SetValue函数如何动态传递参数 最佳答案 Chr(34)&nbsp…

    SIMATIC WinCC 2021年7月5日
  • 消息列队是什么

    消息列队是什么 最佳答案 安装WinCC的必备条件,是变量记录和报警记录运行时所需的Windows组件。安装时需要Windows安装CD,控制面板-添加删除Windows组件,选择…

    SIMATIC WinCC 2019年6月11日
  • TP177A程序传送问题

    我用MPI线,能进行OS更新,但不能传送程序,提示联接不上,要我检查电缆、端口。 最佳答案 一般黙認用200的PC/PPI電纜下載,你可在人機的系統菜單下改為MPI下載,不過用MP…

    SIMATIC WinCC 2019年6月11日
  • 使用手册

    西门子2008版触摸屏使用手册打开后说缺少字体包需要下载,可按照提示上网打开后不知道下载哪一个?哪位大师教教我,如何做。没有这个字体包,好多内容不显示。 最佳答案 应该是PDF格式…

    SIMATIC WinCC 2017年6月29日
  • wincc 菜单工具栏

    想用wincc自带菜单与工具栏实现画面间的切换,如何编写VBS角本,如:“主画面”里有“画面窗口1",想用菜单实现”画面窗口1"的画面名称的切换,假设另两个画面…

    SIMATIC WinCC 2019年6月11日
  • 不能下载SIEMENS官网中的PORTAL V14软件

    在SIEMENS官网里,不能下载PORTAL V14中的第一个文件,查询说要去官网申请通过后才能下载,问如何去申请?具体步骤有哪些?谢谢 图片说明:  &nbs…

    2017年5月31日
  • wincc按钮C语言(fp=fopen)(w+b)(w+t)(r+w)请教?

    请教:下面两个按钮属性含义?先谢谢!下面的C语句其中:“T_RECORD_1","day_1","time_hour_1",&qu…

    SIMATIC WinCC 2019年6月11日