WINDOWS2000SP4+WINCC6.0环境:
#pragma code ("UseGen.DLL")
#include "usegenap.h"
#pragma code ()
#pragma code ("useadmin.dll")
#include "pwrt_api.h"
#pragma code ()
char szUserName[255];
char szOldPassword[255];
char szNewPassword[255];
CMN_ERROR err;
CMN_ERROR error;
strcpy(szUserName,GetInputValueChar("NewPdl0.Pdl","username"));
//获取 username域的用户名
strcpy(szOldPassword,GetInputValueChar("NewPdl0.Pdl","oldpassword"));
//获取 oldpassword域的旧密码
strcpy(szNewPassword,GetInputValueChar("NewPdl0.Pdl","newpassword"));
//获取newpassword域的新密码
if (PWRTSilentLogin(szUserName,szOldPassword) == FALSE)
{
SetVisible("NewPdl0.Pdl","changepassword",FALSE); //使changepassword对话框不可见
SetVisible("NewPdl0.Pdl","ERR",TRUE);
//使ERR对话框可见,提示密码更改出错,选择推出或重试
}
else
{
PWGENConnect(GetDSN (),&err);//调用GetDSN ()函数获取DSN。
PWGENChangePassword( szUserName,szOldPassword,szNewPassword, &error);
//改变密码
PWGENDisconnect(&err);
SetVisible("NewPdl0.Pdl","changepassword",FALSE);
SetVisible("NewPdl0.Pdl","succed",TRUE);
//使SUCCED对话框可见,显示密码更改成功。
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
获取DSN的功能函数
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
char * GetDSN()
{
#pragma code ("dmclient.dll")
#include "dmclient.h"
#pragma code()
char *DSNNAME = NULL;
CMN_ERROR Error;
char project[_MAX_PATH + 1];
if(!DMGetRuntimeProject(project, sizeof(project), &Error))
{
MessageBox(NULL,"提示","DMGetRuntimeProject执行失败",MB_OK);
}
else
{
DM_PROJECT_INFO ProjectInfomation;
if (!DMGetProjectInformation(project, &ProjectInfomation, &Error))
{
MessageBox(NULL,"提示","DMGetProjectInformation执行失败",MB_OK);
}
else
{
DSNNAME = SysMalloc(strlen(ProjectInfomation.szDSNName) + 1);
if(DSNNAME )
{
strcpy(DSNNAME, ProjectInfomation.szDSNName);
strcat(DSNNAME, "R");
}
else
{
MessageBox(NULL,"提示","SysMalloc执行失败",MB_OK);
}
}
}
return DSNNAME;
}
///////////////////////////////////////////////////////////////////////////////////////////////////
程序的实现参考了QSQ的程序;
动态获取DSN参照了笑西风提供的西门子技术资料。