这是自己组态密码登陆对话框“确定键”的C脚本:
#pragma code ("UseAdmin.DLL")
#include "pwrt_api.h"
#pragma code ()
if(PWRTSilentLogin(GetInputValueChar(lpszPictureName,"LoginIn"),GetInputValueChar(lpszPictureName,"PasswordIn"))== FALSE )
MessageBox (NULL, "错误,请重新输入!" , "提示", MB_ICONEXCLAMATION| MB_SYSTEMMODAL );
else
OpenPicture("Water_Cycle1.Pdl");
这也能实现需要密码的登录,但是他的反映速度很慢,就是说无论密码是对或者错的,他要等大概10s左右才能做出相应的反映,并不能像系统自带的登录对话框的速度那么快,请问是什么原因造成的?
问题补充:
lee nd2009您好!其实我的做法就是你说的那样,但是当输入密码之后,无论密码是否正确,他的响应时间都很长,差不多10s的样子,并未能立即响应,这是为什么呢?
最佳答案
1,是不是你的wincc整个运行环境都很慢
2,做个简单的试试:组态登陆按钮:
{
#pragma code("useadmin.dll")
#include "PWRT_API.H"
#pragma code()
PWRTLogin(''''''''1'''''''');
}
做个个静态文本,连接系统变量:@CurrentUser
在用户管理中添加一个用户。
3,类似你的参考:http://zhidao.baidu.com/question/193957749.html
具体步骤如下:
1.在启动画面中插入“画面窗口”。设置属性为隐藏。
2.新创建画面窗口“密码保护.PDL”
3.插入2个输入输出域,2个按钮,更改名为1,2
分别是用于“用户名”输入;“密码”输入;确定;取消
4.在用户名的输入输出域的事件属性->输出/输入->输入值
->更改 加入C脚本函数
#include "apdefap.h"
void OnPropertyChanged(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, char* value)
{
SetOutputValueChar(lpszPictureName,lpszObjectName,GetInputValueChar(lpszPictureName,lpszObjectName));
}
5.按照上面做的 在密码输入输出域里加入同样的C脚本
6.在确定按钮的事件->按钮->鼠标按下 加入C脚本
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
#pragma code ("UseAdmin.DLL")
#include "pwrt_api.h"
#pragma code ()
if (PWRTSilentLogin(GetInputValueChar(lpszPictureName,"1"),GetInputValueChar(lpszPictureName,"2")) == FALSE)
MessageBox (NULL, "错误,请重新输入!" , "提示", MB_ICONEXCLAMATION| MB_SYSTEMMODAL );// }
else
OpenPicture("你要进入的画面");
}
7.取消按钮中加入功能关闭此画面就可以了
补充:
看看你的整个wincc运行速度,
1,是不是和你的数据库长期使用,导致运行速度慢了
2,和你的电脑配置也有关系,你的电脑配置是否很低
3,计算机有没有感染病毒
4,在WinCC的系统管理器里面添加个用户和密码就好了,自然会有系统登陆框的
写脚本耗用系统资源
5,卸载杀毒软件。
当然你的这个算是不影响你的整个操作,所以对于要做的修改在备份的系统里修改来查找排除原因
提问者对于答案的评价:
谢谢
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc264319.html