| 作者 | 主题 |
|---|---|
|
沉默是金 游士 经验值:258 发帖数:155 精华帖:5 |
楼主
主题:调出更改密码的对话框-----(动态获取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参照了笑西风提供的西门子技术资料。
糊口饭吃
|