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’);
- 退出动作 (如事件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("@OldPassword"),G
etTagChar("@NewPassword"),err))
{
MessageBox(NULL,"密码修改成功!","提示
",MB_OK|MB_ICONEXCLAMATION|MB_SETFOREGROUND|MB_SYSTEMMODAL);
SetTagChar("@CurrentUserName","");
SetTagChar("@OldPassword","");
SetTagChar("@NewPassword","");
SetTagChar("@ConfirmationPassword","");
}
else
{
if ((strlen(GetTagChar("@NewPassword")) <= 5)&&(strlen(GetTagChar("@OldPassword"))!=0))
{
MessageBox(NULL,"您输入的新密码个数小于6,请重新输入!","提示
",MB_OK|MB_ICONEXCLAMATION|MB_SETFOREGROUND|MB_SYSTEMMODAL);
SetTagChar("@NewPassword","");
SetTagChar("@ConfirmationPassword","");
}
else
{
MessageBox(NULL,"用户名和密码不一致,请重新输入!","提示
",MB_OK|MB_ICONEXCLAMATION|MB_SETFOREGROUND|MB_SYSTEMMODAL);
SetTagChar("@CurrentUserName","");
SetTagChar("@OldPassword","");
}
}
}
else
{
MessageBox(NULL,"建立联接失败!","提示
",MB_OK|MB_ICONEXCLAMATION|MB_SETFOREGROUND|MB_SYSTEMMODAL);
}
PWGENDisconnect(err);
}
else
{
MessageBox(NULL,"两次输入的新密码不一致,请重新输入!","提示
",MB_OK|MB_ICONEXCLAMATION|MB_SETFOREGROUND|MB_SYSTEMMODAL);
SetTagChar("@NewPassword","");
SetTagChar("@ConfirmationPassword","");
}
}
1)做个登陆的画面(成功试用)
认登录; 确
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char*
lpszPropertyName)
{
#pragma code ("UseAdmin.DLL")
#include "pwrt_api.h"
#pragma code ()
char szUserName[255];
char szPassword[255];
strcpy(szUserName,GetInputValueChar(lpszPictureName,"@LoginIn"));
strcpy(szPassword,GetInputValueChar(lpszPictureName,"@PasswordIn"));
if (PWRTSilentLogin(szUserName,szPassword) == FALSE)
{
SetOperation(lpszPictureName,"@OK",FALSE);
SetOperation(lpszPictureName,"@LoginIn",FALSE);
SetOperation(lpszPictureName,"@PasswordIn",FALSE);
SetVisible(lpszPictureName,"@ERROR",TRUE);
SetVisible(lpszPictureName,"@REPEAT",TRUE);
Set_Focus(lpszPictureName,"@REPEAT");
//SetTagChar("USER",NULL); //Return-Type :BOOL
}
else
{
int i, j, n;
char pic_name[256];
char obj_name[60];
n = strlen( lpszPictureName );
for ( i = n; i > 0; i-- )
if ( lpszPictureName[i] == '.' )
{
strncpy( pic_name, lpszPictureName, i );
strcpy( obj_name, &lpszPictureName[i+1] );
for ( j = 0; j < (n-i); j++)
if ( obj_name[j] == ':' )
{
obj_name[j] = '\0';
break;
}
SetVisible(pic_name,obj_name,FALSE);
break;
}
//SetTagChar("USER",GetTagChar("@CurrentUser")); //Return-Type :BOOL
OpenPicture("MAIN.PDL"); //Return-Type :void
}
}
退出登录;
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char*
lpszPropertyName)
{
#pragma code ("UseAdmin.DLL") #include "pwrt_api.h"
#pragma code ()
int i, j, n;
char pic_name[256];
char obj_name[60];
PWRTLogout();
n = strlen( lpszPictureName ); for ( i = n; i > 0; i-- )
if ( lpszPictureName[i] == '.' )
{
strncpy( pic_name, lpszPictureName, i );
strcpy( obj_name, &lpszPictureName[i+1] );
for ( j = 0; j < (n-i); j++)
if ( obj_name[j] == ':' )
{
obj_name[j] = '\0';
break;
}
SetVisible(pic_name,obj_name,FALSE);
break;
}
}
取消登录;
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char*
lpszPropertyName)
{
int i, j, n;
char pic_name[256];
char obj_name[60];
n = strlen( lpszPictureName );
) for ( i = n; i > 0; i--
if ( lpszPictureName[i] == '.' )
{
strncpy( pic_name, lpszPictureName, i );
strcpy( obj_name, &lpszPictureName[i+1] );
for ( j = 0; j < (n-i); j++)
if ( obj_name[j] == ':' )
{
obj_name[j] = '\0';
break;
}
SetVisible(pic_name,obj_name,FALSE);
break;
}
}
重试登录
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char*
lpszPropertyName)
{
SetVisible(lpszPictureName,"@ERROR",FALSE); SetOperation(lpszPictureName,"@LoginIn",TRUE); SetOperation(lpszPictureName,"@PasswordIn",TRUE); SetOperation(lpszPictureName,"@OK",TRUE); Set_Focus(lpszPictureName,"@LoginIn");
SetVisible(lpszPictureName,lpszObjectName,FALSE); }
2)退出对话框;
确定按钮
#include "apdefap.h"
void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)
{
char szPassword[18];
strcpy(szPassword,GetInputValueChar(lpszPictureName,"@exitpassword")); printf("%s",szPassword);
if(strcmp(szPassword,"654321")==0)
DeactivateRTProject ();
}
取消按钮
#include "apdefap.h"
void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)
{
SetTagBit("tuichu",0);
}
单击按钮时弹出提示窗口—C动作(成功试用)
C代码:
#include "apdefap.h"
void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName,
UINT nFlags, int x, int y) //头文件
{
HWND hwnd;
hwnd = FindWindow(NULL,"WinCC-Runtime - "); if (MessageBox(hwnd,"操作成功","提示123", MB_YESNO|MB_ICONQUESTION|MB_SETFOREGROUND|MB_SYSTEMMODAL)==IDY
ES)
{
}
#pragma option(mbcs)
}
运行结果:窗口能置顶(所有的windows窗口前面)