搬家第15天-187.Wincc V7.3 c脚本,点击按钮登录,密码正确直接跳转到某个画面
前两天在QQ群里面有群友问如何实现以下功能:点击按钮弹出登录对话框,如果账户密码正确就直接跳转到某个页面。本来觉得这个应该是一个简单的问题,这两天工作一直很忙也没有实际做一下。今天稍有点时间,实验了一下,还是需要点心思的。
新建一个Wincc项目,创建一个用户user1,设定好密码。新建两个页面NewPdl0和NewPdl1。在Newpdl0上新建一个按钮,按钮的鼠标点击事件添加以下c脚本。
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
#pragma option(mbcs)
#pragma code("Kernel32.dll")
void Sleep(int Milliseconds);
#pragma code("UseAdmin")
#include "pwrt_api.h"
#define PIC_0 "NewPdl1.Pdl"
char *username=GetTagChar("@CurrentUser");
DWORD hProcId;
HWND gWnd;
PWRTLogin(1);
Sleep(500);
gWnd =FindWindowA(NULL, "系统登录" );
while(gWnd)
gWnd =FindWindowA(NULL, "系统登录" );
if (strcmp(username,"user1")==0)
OpenPicture(PIC_0);
}
这个脚本中PWRTLogin(1)作用是弹出登录对话框,这是一个非模态对话框,也就是说这个对话框弹出来后,不管用户操不操作怎么操作,后面语句都会接着执行。
后面紧跟了一个Sleep语句,这是一个暂停的语句,如果没有这一句gWnd =FindWindowA(NULL, "系统登录" )得到的gWnd就是假了,因为执行非常快,在登录对话框出来之前,语句就过去了。这点卡住了我一段时间。后面的while循环纯粹是为了等到用户输入完毕关闭对话框。最后通过strcmp函数比较两个字符串来判断是不是登录成功了,如果成功就直接跳转。
其实这段脚本还是可以再优化一下,如果当前已经是user1账户了,就不需要登陆直接跳转到NewPdl1,这里我就不在赘述怎么写脚本了。