各位高手你们好!小弟我请教一个问题:我需要实现的功能描述如下:
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