在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日 上午10:45
下一篇 2019年6月11日 上午10:45

相关推荐

  • WinCC flexible SMART V3 安装完成后打不开!

    打开后一直在这个界面,系统是win7旗舰版64位,该怎么办? 问题补充:WinCC flexible SMART V3  安装完成…

    2021年7月5日
  • WinCC 的“用户管理器”权限分配

    各位老师大家好,有一个关于“用户管理器”权限分配的问题请教一下。 我有一个WinCC的项目,这个项目设置了登录用户名和密码,但我不知道它。我想在这个项目的“用户管理器”中…

    SIMATIC WinCC 2019年6月11日
  • WINCC7.0标尺数据跟踪

    小弟使用WINCC不久,不知道7.0的怎么实现趋势标尺的数据跟踪,我看都6.0的wincc点趋势中的标示下方就会出现标尺跟踪的数据,但是到7.0怎么就没有了啊? 最佳答案 1、Wi…

    SIMATIC WinCC 2019年6月10日
  • 还是关于VC访问归档数据库

    用VC访问归档的数据库时,能不能在程序中直接把过程数据库名称(例如:CC_byp_08_11_27_10_44_17R)换成归档的数据库名称(例如BAIYUEPENG_BYP_TL…

    SIMATIC WinCC 2019年6月11日
  • 在做组态时,做脚本时,看到了大量的脚本函数,不太懂是什意思

    DEMO例子中有好多脚本函数不知道是什么意思,更不知道怎么用,例如:SetVisible,SetMalloc,GetOutPutValue等,有这方面资料的高手还请麻烦给我发一份,…

    SIMATIC WinCC 2019年6月11日
  • wincc全局脚本执行问题求助

    我在WINCC全局脚本中做了一个通过外部变量(变量名为A1,地址M10.0)触发的脚本,触发周期为变量变化时,通过STEP7程序将A1置位,然后在脚本中判断A1是1时执行IF语句,…

    SIMATIC WinCC 2019年6月11日
  • 1500的屏型号找不到

    精致面板1500的屏,在播图中只有X0的型号,没有X1的型号,6AV2 124-0QC02-0AX0,6AV2 124-0QC02-0AX1 问题补充:在博图V…

    SIMATIC WinCC 2021年7月5日
  • wincc6.0历史趋势问题

    PCS7中WINCC6.0经常出现历史趋势没有显示,重新启动计算机后历史趋势显示正常,归档数据设置均没有问题,请问怎么解决,是否缺什么补丁 问题补充:我单位有三台操作站只是其中一台…

    SIMATIC WinCC 2019年6月11日
  • wincc经常激活停止可以吗

    由于工作的需要,每次试验结束后都要将慢速和快速归档重置,这就要退出wincc激活状态重置后再激活,不知道这样反复的激活再退出激活有什么害处,如果,不退出激活状态怎么能重置变量组态,…

    SIMATIC WinCC 2019年6月11日
  • HMI画面更改为PC station之后编译失败

    我想实现在一台电脑上用WINCC的方式运行HMI画面,所以将工程中的HMI画面复制,并更改为PC STATION之后,重新建立了连接,并更改了HMI变量的连接路径,之后再…

    SIMATIC WinCC 2020年11月1日