技术论坛

 调出更改密码的对话框-----(动态获取DSN)

返回主题列表
作者 主题
沉默是金
游士

经验值:258
发帖数:155
精华帖:5
楼主    2005-08-02 14:39:05
主题:调出更改密码的对话框-----(动态获取DSN) 精华帖 
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参照了笑西风提供的西门子技术资料。
糊口饭吃
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。