在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如何实现在虚拟机里连接PLC

    XP的虚拟机装的STEP7 V5.5和WINCC V6.2,现在STEP7可以连PLC但是WINCC连不上,请问可能是什么原因造成的?谢谢。 最佳答案 winc…

    SIMATIC WinCC 2021年7月5日
  • TP117B OS更新问题

    TP117B更新OS时提示“无法执行期望的动作,prosave版本和操作单元上的操作系统不兼容。。。”请问各位朋友这是什么问题?谢谢!! 问题补充:不知道怎么回事,原本挺简单的一个…

    2019年6月11日
  • 在线报导出到EXCEL时,如何改变报表的记录时间

    我在WINCC做一个在线报表,现需要整点记录,但是报表的记录时间不是整点,如何设定或修改? 最佳答案 WinCC V7.5 变量整点归档http://www.a…

    SIMATIC WinCC 2020年11月1日
  • 西门子触摸屏SMART V3

    程序下载不了。IP地址等都已设置,仍显示没有选择通道。求教 问题补充:以太网复选框已选,还是下载不了 图片说明:        &…

    2021年7月5日
  • WINCC V6.2趋势控件的变量前缀如何写

    趋势控件没有变量前缀属性,怎么办,我要做画面模板模板里有有趋势控件,趋势控件有SP值及PV值。 最佳答案 我的winccv7.0版本的。我想使用变量前缀来做趋势图请问是否可以,结构…

    SIMATIC WinCC 2017年11月26日
  • 关于用脚本诊断窗口打印2000个=号的问题

    这个我用来学习脚本队列的,但我还没做下去就发现不对了,用VB写了一段打印2000个=号的脚本,问题来了,好像是并没有2000个打印完,没有看到脚本中最后的End;但是我要是把打印数…

    2017年8月15日
  • WinCC如何在当前窗口显示实时曲线

    利用WinCC做监控界面,想通过点击按钮在当前窗口显示实时压力曲线,刚开始学,不知道该怎么做,咨询一下各位! 问题补充:在当前窗口建立OnlineTrendControl趋势图,通…

    2017年11月23日
  • 变量记录归档如何实现整点归档

    组态变量记录每个小时归档一次,但不知如何实现整点时归档。 最佳答案 变量归档都有用到定时器,定时器属性里面就有循环起始点,在那里面输入0分0秒就可以了,因为每个整点都是0分0秒嘛。…

    SIMATIC WinCC 2018年12月6日
  • wincc两个项目怎么合并?

    目前有两个单独的wincc项目,需要合并成一个,主要是把定义好的变量合并到一个项目中。 最佳答案 先要看下变量名有没有重复的,要是没有重复的在一个工程里拷贝需要的变量,关闭工程,再…

    SIMATIC WinCC 2019年6月11日
  • wincc 中VB打开Excel

    Dim objExcelApp,objExcelBookDim patchSet objExcelApp = CreateObje…

    SIMATIC WinCC 2021年7月5日