在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在线表格的问题

    以前没用过Wincc Online Table Control ,这几天用了下,出现很多不明白的问题.有些数据上有一道横杠,那些数据都在正常…

    SIMATIC WinCC 2017年12月7日
  • 关于博图HMI画面组态的几个问题

    最近项目用到博图软件,我安装另外V14版,PLC是315-2PN/DP,使用过程中遇到以下几个问题:1、HMI组态,能不能像WinCC Flexible那样自由定义结构变…

    SIMATIC WinCC 2017年6月10日
  • wincc flexible 无法运行仿真器

    刚开始的时候可以运行仿真器,但后面新建了个项目后,运行仿真器,图标变成灰色后又变成可点击状态,,,,但是仿真界面却不出来。。 最佳答案 可能是做的画面在编译时有错误,编译有错误时是…

    SIMATIC WinCC 2017年12月10日
  • WinCC怎样隐藏(退出)当前弹出的画面窗口!

    在一个画面中加入了一个窗口对象A,设定了A为隐藏,当用画面中的按钮调用这个窗口对象A的画面时,让这个A的画面可见(弹出),在弹出的A画面中有一个按钮b,怎样实现点击b来隐藏A的画面…

    2020年11月1日
  • WINCC ODK

    最近研究WINCC时发现ODK函数功能之强大! 请问下ODK函数库是否在WINCC安装完毕后自动生成?还是要单独安装?还是直接调用?  最佳答案 将WinCC&…

    SIMATIC WinCC 2019年6月11日
  • WINCC如何查询用户归档中某一时间段的归档数据

    请问各位高手,如何通过脚本查询用户归档某一时间段的数据并且将这段数据存储在另一归档中?这样做的原因主要是想做一个曲线对比的画面,谢谢各位 最佳答案 查询是可以的,写入另外一个归档是…

    SIMATIC WinCC 2017年10月31日
  • 如何用C脚本比较两个变量里面值的大小

    用C脚本比较两个变量里面值的大小,如果大于,执行一条语句,如果小于执行另一条语句。谢谢! 最佳答案 if GetTagFloat("tag1")&gt…

    SIMATIC WinCC 2017年8月15日
  • 西门子触摸屏接鼠标键盘

    请问,西门子的触摸屏TP系列的可以接鼠标键盘吗 钻石用户推荐最佳答案 可以有图和实例公司内生产线使用的西门子TP1200触摸屏,近段时间车间操作人员反映使用了几年后触摸操作不是很灵…

    SIMATIC WinCC 2021年7月5日
  • wincc 加密问题

    一个输入/输出型I/O域(0-99),我想在输入0-12时提示输入密码,正确输入后显示相应数据;当输入12-99时不需要密码,请高手们指点指点,灰常感谢! 最佳答案 那只有脚本了在…

    SIMATIC WinCC 2019年6月10日
  • wincc 使用GIF动图控件的问题

    wincc的多媒体控件运行GIF动图,当动图运行时会导致周围的一些管道变形,在控件范围内的发生了断层式的移动 最佳答案 在WinCC里显示动画?https://support.in…

    SIMATIC WinCC 2021年7月5日