wincc中怎么判断用户有没有登陆?
<BR> #pragma code("useadmin.dll")<BR> #include "PWRT_API.H" <BR> #pragma code() </P><P> if(GetTagChar("@CurrentUser")=="") //Return-Type: char* <BR> {<BR> PWRTLogin('1'); <BR> }<BR> else<BR> {</P><P> OpenPicture("main.Pdl"); <BR> }<BR> 我是想如果用户为空,我就显示登陆对话框,如果不为空,就说明有用户登录了,就直接进入系统,但是实际运行之后,发现根本就不会出现登陆框,直接就进去了,请问是怎么回事啊<BR>
楼主最近还看过
其他答案
我觉得可以直接在画面中新建一个文本框或者io域,把@CurrentUser变量连接上去,不就由显示当前用户了吗
可以增加一个登录退出画面,在上面增加登录和退出按钮,用户名和密码I/O域,设置为启动画面,启动后进入此画面,只有输入正确的用户名和密码后,按登录键才能登录操作画面,同样,按退出按钮连接此画面,只有用户名和密码正确后,按退出按钮才能退出运行程序。代码如下
登录按钮C动作代码:
#pragma code("useadmin.dll")
#include "PWRT_API.H"
#pragma code()
char * x1;
char * x2;
char * x3;
x1=GetTagChar("loginname"); //Return-Type: char*
; //Return-Type: char*
x2=GetTagChar("loginpass"); //Return-Type: char*
if (PWRTSilentLogin(x1, x2))
{
OpenPicture("NewPdl01.Pdl");
//登录成功后的处理
}
SetTagChar("loginname","0"); //Return-Type: BOOL
SetTagChar("loginpass","0"); //Return-Type: BOOL
退出按钮C动作代码:
#pragma code("useadmin.dll")
#include "PWRT_API.H"
#pragma code()
char * x1;
char * x2;
char * x3;
x1=GetTagChar("loginname"); //Return-Type: char*
; //Return-Type: char*
x2=GetTagChar("loginpass"); //Return-Type: char*
if (PWRTSilentLogin(x1, x2))
{
ExitWinCC();
//退出WINCC
}
SetTagChar("loginname","0"); //Return-Type: BOOL
SetTagChar("loginpass","0"); //Return-Type: BOOL
参考一下这个:
如何实现用户登陆日志(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;
}