Wincc点击按钮弹出输入账号密码窗口,密码正确直接跳转到某个画面的实现方案 您所在的位置:网站首页 vb点击按钮弹出窗口 Wincc点击按钮弹出输入账号密码窗口,密码正确直接跳转到某个画面的实现方案

Wincc点击按钮弹出输入账号密码窗口,密码正确直接跳转到某个画面的实现方案

2024-01-03 12:39| 来源: 网络整理| 查看: 265

问题详情    想在Wincc中实现以下功能:点击按钮弹出登录对话框,如果账户密码正确就直接跳转到某个页面。 实现过程    新建一个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)//user1改成自己的用户名   OpenPicture(PIC_0); }

   这个脚本中PWRTLogin(1)作用是弹出登录对话框,这是一个非模态对话框,也就是说这个对话框弹出来后,不管用户操不操作怎么操作,后面语句都会接着执行。

     后面紧跟了一个Sleep语句,这是一个暂停的语句,如果没有这一句gWnd =FindWindowA(NULL, "系统登录" )得到的gWnd就是假了,因为执行非常快,在登录对话框出来之前,语句就过去了。这点卡住了我一段时间。后面的while循环纯粹是为了等到用户输入完毕关闭对话框。最后通过strcmp函数比较两个字符串来判断是不是登录成功了,如果成功就直接跳转。

待优化问题 如果当前已经是user1账户了,就不需要登陆直接跳转到NewPdl1,现在可以实现直接跳转但是还是会出现登录框。(已解决) #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; if (strcmp(username,"user1")==0)//user1改成自己的用户名   OpenPicture(PIC_0); else PWRTLogin(1); Sleep(500); gWnd =FindWindowA(NULL, "系统登录" ); while(gWnd)    gWnd =FindWindowA(NULL, "系统登录" ); } 登录窗口的文字不知道在哪修改,知道的大神麻烦留言告知。


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有