WINCC 关于用户登陆注销的脚本
《工业控制组态与现场总线技术》 电子课件 任务4.3 WINCC组态用户登录和注销对话框
工业场单控总制击线组此技态术处及现编辑母版标题样式
主 讲:江光灵
单击此处编辑母版标题样式
讲授内容
项目四:WINCC用户管理器组态应用
知识点
任务4.3 组态登录和注销对话框
目录
4.031.1 4.032.2
03 04 05 06 07
使用热键 使用脚本编程
任务4.3 组态登录和注销对话框
任务4.3 组态登录和注销对话框
4.3.1 使用热键
WinCC 项目管理器中,右键单击项目名称选择属性,打开项目属性对话框, 选择热键选项卡, 如阁4-7所示。
图4-7
任务4.3 组态登录和注销对话框
4.3.1 使用热键
在中“动作"项下的"登录”,点击“分配”按钮下的文本框, 同 时按下要分配给“登录”动作的热键,如(Ctrl)和(F1)键,则同时按下 的键出现在该文本框中,如图所示,单击“分配”按钮即将该热键分 配给“登录”动作。如果没有分配热键, 该文本框显示“无”。
同样可以将热键(Ctrl+F2) 分配给“退出”动作,则系统运行时 可以通过按下(Ctrl+Fl)和(Ctrl+F2) 来进行用户的登录和注销。
任务4.3 组态登录和注销对话框
4.3.1 使用热键
当系统启动后,也可以采用单击按钮的方式来弹出登录对话框。 新建一个画面,添加“登录”和“注销”两个按钮, 如图4-8所示。
图4-8
任务4.3 组态登录和注销对话框
4.3.1 使用热键
为“登录”按钮的鼠标动作事件编写C 脚本如图4-9所示,为“注销”按 钮编写的C 脚本,如图4-10所示。
图4-9
任务4.3 组态登录和注销对话框
WINCC 登录与注销C脚本程序
调用用户管理的C脚本:#include "apdefap.h"void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName){SSMProgramStart( lpszPictureName,lpszObjectName, "Passcs.exe");}在按钮上用ProgramExecute("Passcs.exe")脚本可以执行用户管理程序做个登陆的画面,放2个按钮,登陆和注销,写脚本:由函数PWRTLogin()来执行登录。
#pragma code("USEADMIN.DLL")#include "PWRT_API.H"#pragma code()PWRTLogin('1');由函数PWRTLogout()来实现注销。
#pragma code("USEADMIN.DLL")#include "PWRT_API.H"#pragma code()PWRTLogout();分别用登录按钮和注销按钮实现,在按钮的事件中输入相应的代码,登录动作(如事件Mouse-click)#pragma code (“useadmin.dll”)#include “PWRT_api.h”#pragma code()PWRTLogin(’c’);-退出动作(如事件Mouse-click)#pragma code (“useadmin.dll”)#include “PWRT_api.h”#pragma code()PWRTLogout();请参考如何修改当前用户的密码“CC_SewageDi_09_11_27_17_20_29”为自己创建的项目数据库名称;“@CurrentUserName”用当前户名,为WinnCC自身的内部变量,文本变量16位字符集,连接一个输入输出域;“@OldPassword”用当前用户旧密码,为需要创建的内部变量,文本变量16位字符集,连接一个输入输出域;“@NewPassword”用当前用户新密码,为需要创建的内部变量,文本变量16位字符集,连接一个输入输出域;“@ConfirmationPassword”用当前用户验证密码,为需要创建的内部变量,文本变量16位字符集,连接一个输入输出域;在一个确定按钮鼠标动作中输入以下脚本include "apdefap.h"void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName,UINT nFlags, int x, int y){#pragma code("UseGen.dll")#include "USEGENAP.H"#pragma code()LPCMN_ERROR err;if(strcmp(GetTagChar("@NewPassword"),GetTagChar("@ConfirmationPassword"))==FALSE){if(PWGENConnect("CC_SewageDi_09_11_27_17_20_29",err) ){if(PWGENChangePassword(GetTagChar("@CurrentUserName"),GetTagChar("@Ol dPassword"),GetTagChar("@NewPassword"),err)){MessageBox(NULL,"密码修改成功!","提示",MB_OK|MB_ICONEXCLAMATION|MB_SETFOREGROUND|MB_SYSTEMMODAL);Set TagChar("@CurrentUserName","");SetTagChar("@OldPassword","");SetTagChar("@NewPassword","");SetTagChar("@ConfirmationPassword","");}else{if((strlen(GetTagChar("@NewPa ssword"))<=5)&&(strlen(GetTagChar("@OldPassword"))!=0)){MessageBox(NULL,"您输入的新密码个数小于6,请重新输入!","提示",MB_OK|MB_ICONEXCLAMATION|MB_SETFOREGROUND|MB_SYSTEMMODAL);Set TagChar("@NewPassword","");SetTagChar("@ConfirmationPassword","");}else{MessageBox(NULL,"用户名和密码不一致,请重新输入!","提示",MB_OK|MB_ICONEXCLAMATION|MB_SETFOREGROUND|MB_SYSTEMMODAL);Set TagChar("@CurrentUserName","");SetTagChar("@OldPassword","");}}}else{MessageBox(NULL,"}PWGENDisconnect (err);}else{MessageBox(NULL,"两次输入的新密码不一致,请重新输入!","提示",MB_OK|MB_ICONEXCLAMATION|MB_SETFOREGROUND|MB_SYSTEMMODAL);Set TagChar("@NewPassword","");SetTagChar("@ConfirmationPassword","");}}建立联接失败!","提示",MB_OK|MB_ICONEXCLAMATION|MB_SETFOREGROUND|MB_SYSTEMMODAL);。
WinCC用户登录退出 用户注销 权限设置之欧阳理创编
如何在WinCC中用按钮激活用户登录/退出对话框
方法:
1.画面上建立两个按扭,两个文本
2.
(1)在登录按扭鼠标动作中组态一个C动作,输入下面脚本:
#pragma code("useadmin.dll")
#include "PWRT_API.H"
#pragma code()
PWRTLogin('1');
(2)在注销按扭鼠标动作中组态一个C动作,输入下面脚本:
#pragma code("useadmin.dll")
#include "PWRT_API.H"
#pragma code() PWRTLogout();退出按钮
(3)在操作员文本的的文本属性的动态添加
@CurrentUser变量
3.项目管理器中找到用户管理器,在用户管理器中新建用户,为用户设置用户名和密码,分配权限
(
4.按钮的属性/其他/授权中选择用户管理
时间:2021.03.05 创作:欧阳理。
WINCC常用 脚本
11、在画面中显示用户名
1.组态静态文本
2.字体属性中的文本,连接系统变量@CurrentUser
----------------------------------------------
(2)新密码设置(C)
SetOutputValueChar(lpszPictureName,lpszObjectName,GetInputValueChar(lpszPictureName,lpszObjectName));
注:字符串格式的输入输出域》事件》属性主题》输出/输入》输出值》更改》以上代码。
{
MessageBox (Handle, "新密码和旧密码不能相同 !", "请重新输入密码", MB_OK |
MB_ICONEXCLAMATION | MB_SYSTEMMODAL);
}
else
{
// this 2 lines are necessary to get the DSN-Name of the project
a=MsgBox("hello!",vbYesNo)
If vbYes=a Then
objCon2.text="ok" '如点击是,则按钮文本变为ok
Else
objCon2.text="no" '如点击否,则按钮文本变为no
End If
注:放置按钮,起名按钮1.
----------------------------------------------
wincc常用C脚本功能
..用户注销:#pragma code (%useadmin.dll)#include PWRT_api.h#pragma code()PWRTLogout();2.用户登录:#pragma code (%useadmin.dll)#include PWRT_api.h#pragma code()PWRTLogin('c');:3.关闭项目并退出winccExitWinCC ();wincc资源管理器:退出运行到4.DeactivateRTProject ();按钮变三种颜色#include apdefap.hlong _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName){#pragma option(mbcs)if(GetTagWord(TX/ZSH001)==1)文档Word.return 0x0000ff00;elseif(GetTagWord(TX/ZSL001)==1)return 0x000000ff;elsereturn 0x00c0c0c0;}一个调用按钮变色#include apdefap.hlong _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName){#pragma option(mbcs)if(GetTagWord(NewTag)==0)return 0x0000ff00;elsereturn 0x00ffffff;}文档Word.5.结束监控并关闭计算机(会弹出确认对话框)HWND hWnd = NULL;//Author:Smartsysint iRet;- ); 运行系统hWnd = FindWindow(NULL,WinCC-,结束监控并关闭计算机剩瑥?獥慳敧潂?坨摮尬,MB_YESNO|MB_ICONWARNING|MB_APPLMODAL); 关闭操作站if(iRet==IDYES)DMExitWinCCEx (DM_SDMODE_POWEROFF);通过点击弹出对话框的确定和取消按钮点击事件弹出对话框,6. :实现对变量的置位或取消int r;, ?尠确定开命令:r=MessageBox(NULL, YES为开,NO为关MB_YESNO |MB_SYSTEMMODAL);if (r==IDYES)SetTagBit(TAGNAME,TRUE);elseSetTagBit(TAGNAME,FALSE);(要在内部变量中建立三个二进制变量开显示关显示7.: )DISPLAY_NO和DISPLAY_COMMENT、COLSE_DISPLAY// Funktion: Bit in Doppelwort setzen;if (GetTagBitWait(COLSE_DISPLAY)==1 ){SetTagBit(COLSE_DISPLAY,0);文档Word.SetTagBit(DISPLAY_NO,0); //Return-Type: BOOLSetTagBit(DISPLAY_COMMENT,0);}else{SetTagBit(COLSE_DISPLAY,1);SetTagBit(DISPLAY_NO,1); //Return-Type: BOOLSetTagBit(DISPLAY_COMMENT,0);}开阀确认:8.BOOL a;); //Return-Type :short int a=GetTagBit(T制水启动if (a==0){操作提示?晩?獥慳敧潂?啎?尬真的要启动制水吗?,MB_YESNO|MB_ICONQUESTION|MB_SETFOREGROUND|MB_SY STEMMODAL) == 6),1); { SetTagBit(T制水启动//Return-Type :BOOL}}else操作提示?真的要停止制水吗?楻?敍獳条?硯丨??文档Word.,MB_YESNO|MB_ICONQUESTION|MB_SETFOREGROUND|MB_SYSTE MMODAL) == 6),1); 制水停止{ SetTagBit(T}}运行画面最小化将WinCC9.HWND WinCCHwnd;如果运行语WinCCHwnd=FindWindow(NULL,WinCC-Runtime - ); //言为英文运行if (WinCCHwnd==0)WinCCHwnd=FindWindow(NULL,WinCC- 如果运行语言为中文系统- ); //CloseWindow(WinCCHwnd);hiddVtext为内部的二进制变量)10.显示或不显示(其中if(GetTagBit(hiddVtext)==0) //Return-Type: BOOL{SetTagBit(hiddVtext,TRUE); //Return-Type: BOOL//Return-Type: BOOL}else{SetTagBit(hiddVtext,FALSE);}文档Word.打开编辑画面的脚本10.#pragma option(mbcs)#ifdef RUN_ON_WEBNAVIGATOR#elseHWND hExplorerWindow= NULL;HWND hRuntimeWindow= NULL;hExplorerWindow=FindWindow(WinCCExplorerFrameWndClass,NULL);hRuntimeWindow=FindWindow(PDLRTisAliveAndWaitsForYou,NULL);if(hExplorerWindow){ShowWindow(hExplorerWindow, SW_MINIMIZE); //This entry is only necessary for Windows 2000 ShowWindow(hExplorerWindow, SW_SHOWNORMAL); SetForegroundWindow(hExplorerWindow);}elseprintf(n SetForeground failed);#endif中制作一个保持型按钮11.如何在WINCC :1方法文档Word .if( GetTagBit(M10) )SetTagBit(M10,0);elseSetTagBit(M10,1);方法2:SetTagBit(M1.0,(SHORT)!GetTagBit(M1.0));求反指令,如果为1点击变为0,如果为0点击变为1方法3:或者做两个按钮,按钮一:显示,直接连接m1.0,是--不显示,否--显示。
WINCC_登录与注销修改当前用户的密码
WINCC_登录与注销修改当前用户的密码第一篇:WINCC_登录与注销修改当前用户的密码调用用户管理的C脚本:(没试)#include “apdefap.h” void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName){SSMProgramStart(lpszPictureName, lpszObjectName, “Passcs.exe”);} 在按钮上用ProgramExecute(“Passcs.exe”)脚本可以执行用户管理程序登陆和注销,做个登陆的画面,放2个按钮,写脚本:由函数PWRTLogin()来执行登录。
#pragma code(“USEADMIN.DLL”)#include “PWRT_API.H” #pragma code()PWRTLogin('1');由函数PWRTLogout()来实现注销。
#pragma code(“USEADMIN.DLL”)#include “PWRT_API.H” #pragma code()PWRTLogout();分别用登录按钮和注销按钮实现,在按钮的事件中输入相应的代码,登录动作(如事件 Mouse-click)#pragma code(“useadmin.dll”)#include “PWRT_api.h”#pragma code()PWRTLogin(’c’);“);if(MessageBox(hwnd,”操作成功“,”提示123", MB_YESNO|MB_ICONQUESTION|MB_SETFOREGROUND|MB_SYS TEMMODAL)==IDYES){ } #pragma option(mbcs)}运行结果:窗口能置顶(所有的windows窗口前面)第二篇:windowsXP登录密码破解破解windowsXP登录密码方法大全和USB设备无法识别只要有4个原因和解决内存不能为读的问题破解win登录密码方法大全Windows XP的使用过程中如果你是一个很容易遗忘的人,那么一定不要忘记在第一次设置密码的同时创建一张可以恢复Windows XP中的账户密码的启动盘,它可以让你免去格式化硬盘的烦恼。
WINCC 7.3 通过自定义菜单栏进行用户登录和注销
2、VBS 脚本内的一些数据要和菜单栏的设置一致。绿色横线标注的为内部自建变量,请在变量管 理器内提前建好,数据类型二进制。
2/5
3、C 脚本截图
设置 500ms 一周期的触发器,触发 C 脚本执行
3/5
4、点击登录后出现的对话框
附 1:VBS 脚本 ''用于登录注销 Sub userlog(Byval Item) Dim t t=erData
if (GetTagBit("vbslogout")) { PWRTLogout(); SetTagBit("vbslogout",FALSE); }
return 0;
}
5/5
4/5
If t="logon" Then HMIRuntime.Tags("vbslogon").Write 1 End If If t="logout" Then HMIRuntime="" End Sub 附 2:C 全局动作脚本 (周期触发) #include "apdefap.h"
int gscAction( void ) { #pragma code ("useadmin.dll") #include "PWRT_api.h" #pragma code() if (GetTagBit("vbslogon")) { PWRTLogin('c'); SetTagBit("vbslogon",FALSE); }
问:为什用中内部变量来实现菜单栏登录注销功能? 答:因为 wincc7.3 的自定义菜单栏仅支持 VBS 脚本,而实现登录对话框的调用却需要 C 脚本,只好 用内部变量传达信息。 以下是部分截图: 1、菜单栏登录条目的数据设置,重点是红色方框内的数据。 登录对话框也可由热键调出,可在项 目属性里自己定义热键,我这里定义为 Ctrl+L。
wincc中常用C脚本
查看文章wincc常用C动作2010-06-27 10:311.用户注销:#pragma code ("useadmin.dll")#include "PWRT_api.h"#pragma code()PWRTLogout();2.用户登录:#pragma code ("useadmin.dll")#include "PWRT_api.h"#pragma code()PWRTLogin('c');3.关闭项目并退出wincc:ExitWinCC ();4.退出运行到wincc资源管理器:DeactivateRTProject ();5.结束监控并关闭计算机(会弹出确认对话框)HWND hWnd = NULL;//Author:Smartsysint iRet;hWnd = FindWindow(NULL,"WinCC-运行系统 - ");iRet=MessageBox(hWnd,"结束监控并关闭计算机","关闭操作站",MB_YESNO|MB_ICONWARNING|MB_APPLMODAL);if(iRet==IDYES)DMExitWinCCEx (DM_SDMODE_POWEROFF);6.点击事件弹出对话框,通过点击弹出对话框的确定和取消按钮实现对变量的置位或取消:int r;r=MessageBox(NULL, "YES为开,NO为关", "确定开命令:", MB_YESNO|MB_SYSTEMMODAL);if (r==IDYES)SetTagBit("TAGNAME",TRUE);elseSetTagBit("TAGNAME",FALSE);7.开显示关显示:(要在内部变量中建立三个二进制变量COLSE_DISPLAY、DISPLAY_NO和DISPLAY_COMMENT)// Funktion: Bit in Doppelwort setzen;if (GetTagBitWait("COLSE_DISPLAY")==1 ){SetTagBit("COLSE_DISPLAY",0);SetTagBit("DISPLAY_NO",0); //Return-Type: BOOLSetTagBit("DISPLAY_COMMENT",0);}else{SetTagBit("COLSE_DISPLAY",1);SetTagBit("DISPLAY_NO",1); //Return-Type: BOOLSetTagBit("DISPLAY_COMMENT",0);}8.开阀确认:BOOL a;a=GetTagBit("30T制水启动"); //Return-Type :short intif (a==0){if(MessageBox(NULL,"真的要启动制水吗?","操作提示",MB_YESNO|MB_ICONQUESTION|MB_SETFOREGROUND|MB_SYSTEMMODAL) == 6) { SetTagBit("30T制水启动",1);//Return-Type :BOOL}}else{if(MessageBox(NULL,"真的要停止制水吗?","操作提示",MB_YESNO|MB_ICONQUESTION|MB_SETFOREGROUND|MB_SYSTEMMODAL) == 6) { SetTagBit("30T制水停止",1);}}9.将WinCC运行画面最小化HWND WinCCHwnd;WinCCHwnd=FindWindow(NULL,"WinCC-Runtime - "); //如果运行语言为英文if (WinCCHwnd==0) WinCCHwnd=FindWindow(NULL,"WinCC-运行系统 - "); //如果运行语言为中文CloseWindow(WinCCHwnd);10.显示或不显示(其中hiddVtext为内部的二进制变量)if(GetTagBit("hiddVtext")==0) //Return-Type: BOOL{SetTagBit("hiddVtext",TRUE); //Return-Type: BOOL//Return-Type: BOOL}else{SetTagBit("hiddVtext",FALSE);}10.打开编辑画面的脚本#pragma option(mbcs)#ifdef RUN_ON_WEBNAVIGATOR#elseHWND hExplorerWindow= NULL;HWND hRuntimeWindow= NULL;hExplorerWindow= FindWindow("WinCCExplorerFrameWndClass",NULL);hRuntimeWindow= FindWindow("PDLRTisAliveAndWaitsForYou",NULL);if(hExplorerWindow){ShowWindow(hExplorerWindow, SW_MINIMIZE); // This entry is only necessary for Windows 2000ShowWindow(hExplorerWindow, SW_SHOWNORMAL);SetForegroundWindow(hExplorerWindow);}elseprintf("\r\n SetForeground failed");#endif11.如何在WINCC中制作一个保持型按钮方法1:if( GetTagBit("M10") )SetTagBit("M10",0);elseSetTagBit("M10",1);方法2:SetTagBit("M1.0",(SHORT)!GetTagBit("M1.0"));求反指令,如果为1点击变为0,如果为0点击变为1方法3:或者做两个按钮,按钮一:显示,直接连接m1.0,是--不显示,否--显示。
Wincc中常用的C动作
1.用户注销:#pragma code ("useadmin.dll")#include "PWRT_api.h"#pragma code()PWRTLogout();2.用户登录:#pragma code ("useadmin.dll")#include "PWRT_api.h"#pragma code()PWRTLogin('c');3.关闭项目并退出wincc:ExitWinCC ();4.退出运行到wincc资源管理器:DeactivateRTProject ();5.结束监控并关闭计算机(会弹出确认对话框)HWND hWnd = NULL;//Author:Smartsysint iRet;hWnd = FindWindow(NULL,"WinCC-运行系统 - ");iRet=MessageBox(hWnd,"结束监控并关闭计算机","关闭操作站",MB_YESNO|MB_ICONWARNING|MB_APPLMODAL);if(iRet==IDYES)DMExitWinCCEx (DM_SDMODE_POWEROFF);6.点击事件弹出对话框,通过点击弹出对话框的确定和取消按钮实现对变量的置位或取消:int r; r=MessageBox(NULL, "YES为开,NO为关", "确定开命令:", MB_YESNO |MB_SYSTEMMODAL);if (r==IDYES)SetTagBit("TAGNAME",TRUE);elseSetTagBit("TAGNAME",FALSE);7.开显示关显示:(要在内部变量中建立三个二进制变量COLSE_DISPLAY、DISPLAY_NO和DISPLAY_COMMENT)// Funktion: Bit in Doppelwort setzen;if (GetTagBitWait("COLSE_DISPLAY")==1 ){SetTagBit("COLSE_DISPLAY",0);SetTagBit("DISPLAY_NO",0); //Return-Type: BOOLSetTagBit("DISPLAY_COMMENT",0);}else{SetTagBit("COLSE_DISPLAY",1);SetTagBit("DISPLAY_NO",1); //Return-Type: BOOLSetTagBit("DISPLAY_COMMENT",0);}8.开阀确认:BOOL a;a=GetTagBit("30T制水启动"); //Return-Type :short intif (a==0){if(MessageBox(NULL,"真的要启动制水吗?","操作提示",MB_YESNO|MB_ICONQUESTION|MB_SETFOREGROUND|MB_SYSTEMMODAL) == 6) { SetTagBit("30T制水启动",1);//Return-Type :BOOL}}else{if(MessageBox(NULL,"真的要停止制水吗?","操作提示",MB_YESNO|MB_ICONQUESTION|MB_SETFOREGROUND|MB_SYSTEMMODAL) == 6){ SetTagBit("30T制水停止",1);}}9.将WinCC运行画面最小化HWND WinCCHwnd;WinCCHwnd=FindWindow(NULL,"WinCC-Runtime - "); //如果运行语言为英文if (WinCCHwnd==0) WinCCHwnd=FindWindow(NULL,"WinCC-运行系统 - "); //如果运行语言为中文CloseWindow(WinCCHwnd);10.显示或不显示(其中hiddVtext为内部的二进制变量)if(GetTagBit("hiddVtext")==0) //Return-Type: BOOL{SetTagBit("hiddVtext",TRUE); //Return-Type: BOOL//Return-Type: BOOL}else{SetTagBit("hiddVtext",FALSE);}10.打开编辑画面的脚本#pragma option(mbcs)#ifdef RUN_ON_WEBNAVIGATOR#elseHWND hExplorerWindow= NULL;HWND hRuntimeWindow= NULL;hExplorerWindow= FindWindow("WinCCExplorerFrameWndClass",NULL);hRuntimeWindow= FindWindow("PDLRTisAliveAndWaitsForYou",NULL);if(hExplorerWindow){ShowWindow(hExplorerWindow, SW_MINIMIZE); // This entry is only necessary for Windows 2000ShowWindow(hExplorerWindow, SW_SHOWNORMAL);SetForegroundWindow(hExplorerWindow);}elseprintf("\r\n SetForeground failed");#endif11.如何在WINCC中制作一个保持型按钮方法1:if( GetTagBit("M10") )SetTagBit("M10",0);elseSetTagBit("M10",1);方法2:SetTagBit("M1.0",(SHORT)!GetTagBit("M1.0"));求反指令,如果为1点击变为0,如果为0点击变为1方法3:或者做两个按钮,按钮一:显示,直接连接m1.0,是--不显示,否--显示。
WINCC自动注销解决方案
WinXP系统登录后自动注销的解决方案分享到QQ空间问题:系统安装西门子SQL Server2000 3a、WinCC6.0SP3或者三菱GX-Developer中某款PLC编程软件之后,提示重启完成安装,但是重启后,系统运行至登录窗口,输入用户名和密码登录后系统随即自动注销,反复多次无效,安全模式下问题依然存在。
看网络上的分析:1、被某病毒击中2、被某病毒击中后使用杀毒软件删除了Userinit文件,但有一个共同点就是要修复注册表文件Userinit。
个人解决方案:1、下载“深山红叶PE光盘”,偶使用的是嫦娥一号特别纪念版,刻录光盘2、插入光盘重启,修改BIOS选项设置为光盘启动,F10Save&Exit,选择【1】启动WindowsPE系统,等待Loading RAMDISK image,进入PE之后,在“开始”/“程序”/“Windows系统维护”/“编辑目标Windows注册表regedit”,选择系统目录。
公司电脑同样是安装的XP/XP双系统,分别安装在C和E盘。
3、先修复C盘注册表,单击编辑目标Windows注册表regedit后弹出选择目标文件窗口,选择“我的电脑/C盘/Windows”,确定,打开注册表编辑器。
在下面的目录:HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOES NT\CURRENTVERSION\WINLOGO 。
找到Userinit,发现键值被修改,将值修改为“c:\WINDOWS\system32\userinit.exe,”,注意userinit.exe后面的英文半角的逗号不能少,4、修复E盘注册表,单击编辑目标Windows注册表regedit后弹出选择目标文件窗口,选择“我的电脑/E 盘/Windows”,确定,打开注册表编辑器。
在下面的目录:HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOES NT\CURRENTVERSION\WINLOGO 。
制作登录注销脚本
里介绍如何借助DevCon命令行工具来制作登录/注销脚本,在管理员登录时自动启用光驱,而在管理员注销时自动停用光驱。
具体步骤如下:1.制作批处理文件在这个阶段,我们可以利用DevCon命令制作两个批处理文件,分别用来禁用或者启用光驱设备。
⑴DevCon(Device Console)命令行工具,用来代替设备管理器,下载地址如下:/download/1/1/f/11f7dd10-272d-4cd2-896f-9ce67f3e0240/devcon.exe下载好以后,将该DevCon命令工具解压缩到C:\WINDOWS\system32目录下。
⑵要禁用光驱设备,可以在命令提示符窗口运行以下命令:DevCon disable DevInsId而要启用光驱设备,可以在命令提示符窗口运行以下命令:DevCon enable DevInsId其中DevInsId是指光驱的设备范例ID,在设备管理器里打开光驱设备的属性对话框,在“详细信息”选项卡里即可查看光驱的设备范例Id。
例如图中的光驱ASUS的设备范例ID是:DVD-E616P2IDE\CDROMASUS_DVD-E616P2_________________________1.03____\4&1B2CF2DB&0&1.0. 0幸运的是DevInsId参数支持通配符,所以要禁用光驱ASUS,可以用以下命令DevCon disable asus*⑶用记事本新建一个空白文档,然后输入以下内容(其中的asus*要用实际的设备范例Id来代替),并保存为C:\bat\DisableCDROM.bat文件:DevCon disable asus*用记事本新建一个空白文档,然后输入以下内容(其中的asus*要用实际的设备范例Id来代替),并保存为C:\bat\EnableCDROM.bat文件:DevCon enable asus*2.设置登录/注销脚本制作好批处理文件,我们就可以采用以下步骤,借助组策略管理单元分别将这两个批处理文件设置为登录脚本和注销脚本。
界面登录C脚本
退出时应用 是 隐藏输入 否
属性---》 事件-----》输入/输出域--------》属性主题------>输出/输入-----》 输入值 内的更改 选择C动作
加入C脚本函数
#include "apdefap.h"
void OnPropertyChanged(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, char* value)
Hale Waihona Puke 选择 确定 属性---》事件---》鼠标内的 鼠标动作 选择C动作
加入C脚本函数
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
#pragma code ("UseAdmin.DLL")
2、创建画面 NewPdl0.Pdl(登陆界面) NewPdl11.Pdl(登陆成功界面)
3、在NewPdl0.Pdl(登陆界面) 画两个输入框 输入输出域1(输入账户) 输入输出域2(输入密码)
先对输入框做调整,属性---》输出/输入 输出值:0 数据格式 :字符串 输出格式 *
{
SetOutputValueChar(lpszPictureName,lpszObjectName,GetInputValueChar(lpszPictureName,lpszObjectName));
}
两个输入框 都一样
4、在NewPdl0.Pdl(登陆界面) 画两个按钮 确定 退出
wincc登录
#pragma code("UseAdmin")
#include "pwrt_api.h"
#pragma code ()
PWRTLogout();
}
输入输出域1
输入输出域2
使用附件--变量登录
将计算机分配给变量
WINCC用户管理器菜单,附件—变量登录—分配计算机
注:整型变量对键操作切换的应用才有意义
#include "pwrt_api.h"
#pragma code ()
PWRTLogin(1);
}
注销按钮
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
脚本编程见图形编辑器C动作
图形编辑器
登录按钮
鼠标动作
#include "apdefap.h"
void OnClick(char* lpszPictureName, chaPropertyName)
{
#pragma code("UseAdmin")
设置热键脚本编程使用热键wincc项目管理器中右键单击项目名称选择属性为登录和退出分配热键脚本编程见图形编辑器c动作图形编辑器登录按钮鼠标动作includeapdefaphvoidonclickcharlpszpicturenamecharlpszobjectnamecharlpszpropertynamepragmacodeuseadminincludepwrtapihpragmacode注销按钮includeapdefaphvoidonclickcharlpszpicturenamecharlpszobjectnamecharlpszpropertynamepragmacodeuseadminincludepwrtapihpragmacode输入输出域1输入输出域2使用附件变量登录将计算机分配给变量wincc用户管理器菜单附件变量登录分配计算机注
(整理)WinCC应用实例—用按钮实现登录与注销.
WinCC应用实例—用按钮实现登录与注销除了为登录或注销过程而组态的热键之外,WinCC还提供了函数PWRTLogin()来执行登录,函数PWRTLogout()用于注销。
可以使用这两个函数,组态一个通过鼠标动作和键盘两者激活的独立按钮。
还可通过按钮的热键属性设置功能键控制动作。
用于登录和注销的函数是WinCC应用程序函数。
可以在鼠标动作或按下按钮事件中使用C动作来调用函数。
由函数PWRTLogin()来执行登录。
下面是如何使用该函数的实例:#pragma code("USEADMIN.DLL")#include "PWRT_API.H"#pragma code()PWRTLogin('1');由函数PWRTLogout()来实现注销。
下面是如何使用该函数的实例:#pragma code("USEADMIN.DLL")#include "PWRT_API.H"#pragma code()PWRTLogout();打开“用户管理器”,新建用户“family”用户权限设定(红灯亮的说明该用户有此操作的权限)按钮授权配置:只有用户的权限包含按钮的权限时该用户才可以操作此按钮。
运行时登陆提示:未登陆时操作提示:成功登陆后操作提示:登陆后再次单击“登陆按钮”会弹出下面的窗口,这时的“退出登陆”可以操作了,可以从这里退出登陆,而不用单独设置退出按钮了。
以下转帖:WINCC-如何使用自定义的对话框实现用户登录在登录按钮中加处以下脚本:#pragma code("useadmin.dll")#include "PWRT_API.H"#pragma code()if (PWRTSilentLogin("username", "Pa Word")){//登录成功后的处理}其中"USERNAME","PA WORD"可以用存储用户名和密码的变量替换.如: PWRTSilentLogin(GetT agChar("user"), GetT agChar("Pa Word"))当登录成功时,函数返回值为真;如登录失败,则返回值为假WINCC--如何在程序中动态修改用户密码1、点击“开始”--》“设置”--》“控制面板”--》“管理工具”--》“数据源(ODBC)”,打开ODBC数据源管理器2、在用户D 页面的用户数据源中找到与当前项目所关联的一项,其名称为“CC_项目名_项目建立日期时间”,记下该项的名称3、在脚本中加入以下代码:#pragma code("UseGen.dll")#include "USEGENAP.H"#pragma code()LPCMN_ERROR err; //定义的LPCMN_ERROR型变量,在函数调用中需使用if (PWGENCo ect("CC_a _04-09-21_16:35:22",err)) //建立与数据库的联接,其中CC_a _04-09-21_16:35:22用第二步中记下的名称取代{if (PWGENChangePa word(GetT agChar("user"),GetT agChar("oldpa word"),GetT agChar("pa word"),err)) //修改密码,user,oldpa word,pa word分别为存贮用户名,原密码,新密码的内部变量,类型为文本变量8位字符集{//密码修改成功后的操作,如给用户提示等}}PWGENDisco ect(err); //断开与数据库的联接4、编译运行程序5、工作完成6、与用户管理相关的函数定义存贮在A LIB目录下的USEGENAP.H文件中,可根据上面示例自行完成添加用户,修改权限等功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
我有两个用户,分别是用户1和用户2,请教如何在启动WINCC6.0 SP3时,自动登陆到用户1而无须手动登陆?
将登录用户脚本编写在您项目的首画面中的Open Picture事件内。
在开始画面-》画面对象-》其他-》打开画面中添加“C动作”
#pragma code("useadmin.dll")
#include "PWRT_API.H"
#pragma code()
PWRTSilentLogin("用户1", "密码");
注销用户的脚本:
在按钮动作里加入以下c脚本
#pragma code("useadmin.dll")
#include "PWRT_API.H"
#pragma code()
PWRTLogin('1');
最后一句改成PWRTLogout();就是退出
WINCC-如何使用自定义的对话框实现用户登录
在登录按钮中加处以下脚本:
#pragma code("useadmin.dll")
#include "PWRT_API.H"
#pragma code()
if (PWRTSilentLogin("username", "PassWord"))
{
//登录成功后的处理
}
其中"USERNAME","PASSWORD"可以用存储用户名和密码的变量替换.如:
PWRTSilentLogin(GetTagChar("user"), GetTagChar("PassWord"))
当登录成功时,函数返回值为真;如登录失败,则返回值为假
WINCC--如何在程序中动态修改用户密码
1、点击“开始”--》“设置”--》“控制面板”--》“管理工具”--》“数据源(ODBC)”,打开ODBC 数据源管理器
2、在用户DSN页面的用户数据源中找到与当前项目所关联的一项,其名称为“CC_项目名_项目建立日期时间”,记下该项的名称
3、在脚本中加入以下代码:
#pragma code("UseGen.dll")
#include "USEGENAP.H"
#pragma code()
LPCMN_ERROR err; //定义的LPCMN_ERROR型变量,在函数调用中需使用
if (PWGENConnect("CC_ass_04-09-21_16:35:22",err)) //建立与数据库的联接,其中CC_ass_04-09-21_ 16:35:22用第二步中记下的名称取代
{
if (PWGENChangePassword(GetTagChar("user"),GetTagChar("oldpassword"),GetTagChar("password"), err)) //修改密码,user,oldpassword,password分别为存贮用户名,原密码,新密码的内部变量,类型为文本变量8位字符集
{
//密码修改成功后的操作,如给用户提示等
}
}
PWGENDisconnect(err); //断开与数据库的联接
4、编译运行程序
5、工作完成
6、与用户管理相关的函数定义存贮在APPLIB目录下的USEGENAP.H文件中,可根据上面示例自行完成添加用户,修改权限等功能。
WINCC-如何使用自定义的对话框实现用户登录
在登录按钮中加处以下脚本:
#pragma code("useadmin.dll")
#include "PWRT_API.H"
#pragma code()
if (PWRTSilentLogin("username", "PassWord"))
{
//登录成功后的处理
}
其中"USERNAME","PASSWORD"可以用存储用户名和密码的变量替换.如:
PWRTSilentLogin(GetTagChar("user"), GetTagChar("PassWord"))
当登录成功时,函数返回值为真;如登录失败,则返回值为假。