如何在InstallShield使用密码编辑框?分数一定如数奉上!

bcai 2002-03-01 10:49:10
对于vc高手而言,InstallShield应该是必然精通的吧。小弟最近在使用IntallShield过程中,发现InstallShield的Script Dialog的函数不能直接提供密码编辑框功能,而InstallShield的帮助文档和例程并没有提供足够好的说明(当然本人的英文也只是一般),希望有使用过密码编辑框的大虾伸出援助之手,不胜感激!
...全文
130 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
PerfectCK 2002-03-04
  • 打赏
  • 举报
回复
我遇到过这个问题,我是这样解决的:
prototype LoginDBDlg (BYREF STRING,BYREF STRING,BYREF STRING,BYREF STRING,BYREF STRING,BYREF STRING,BYREF STRING,BYREF STRING);

prototype HWND user32.GetDlgItem(HWND,INT);
prototype LONG user32.SetWindowLong(HWND,INT,LONG);
prototype LONG user32.GetWindowLong(HWND,INT);


function LoginDBDlg( szTitle, szMsg, szField1, szField2, szField3, svEdit1, svEdit2, svEdit3 )
STRING szDlg, szTemp,CKtmp,CKEdit,strTemp,SetEditText;
NUMBER nId, nMessage, nTemp,nSdDialog,i;
HWND hwndDlg,CKwnd,CCwnd;
BOOL bDone;
begin

svEdit3="";
szDlg = SD_DLG_SHOWDLGEDIT3;
nSdDialog = SD_NDLG_SHOWDLGEDIT3;

if (MODE=SILENTMODE) then
SdMakeName( szAppKey, szDlg, szTitle, nSdShowDlgEdit3 );
SilentReadData( szAppKey, "Result", DATA_NUMBER, szTemp, nId );
if ((nId != BACK) && (nId != CANCEL)) then
SilentReadData( szAppKey, "szEdit1", DATA_STRING, svEdit1, nTemp );
SilentReadData( szAppKey, "szEdit2", DATA_STRING, svEdit2, nTemp );
SilentReadData( szAppKey, "szEdit3", DATA_STRING, svEdit3, nTemp );
endif;

return nId;
endif;

if (!bSdInit) then
SdInit();
endif;

if (EzDefineDialog( szDlg, "", "", SD_NDLG_SHOWDLGEDIT3 ) = DLG_ERR) then
return -1;
endif;


bDone = FALSE;

while (!bDone)

nId = WaitOnDialog( szDlg );

switch (nId)
case DLG_INIT:
if( szMsg != "" ) then
SdSetStatic(szDlg, SD_STA_MSG1, szMsg);
endif;

if( szField1 != "" ) then
SdSetStatic(szDlg, SD_STA_FIELD1, szField1 );
endif;

if( szField2 != "" ) then
SdSetStatic(szDlg, SD_STA_FIELD2, szField2 );
endif;

if( szField3 != "" ) then
SdSetStatic(szDlg, SD_STA_FIELD3, szField3 );
endif;

CtrlSetText(szDlg, SD_EDIT1, svEdit1);
CtrlSetText(szDlg, SD_EDIT2, svEdit2);
CtrlSetText(szDlg, SD_EDIT3, svEdit3);

hwndDlg = CmdGetHwndDlg( szDlg );
SdGeneralInit( szDlg, hwndDlg, STYLE_BOLD, szSdProduct );

if(szTitle != "") then
SetWindowText(hwndDlg, szTitle);
endif;

CCwnd=FindWindow("","输入数据库信息");
CKwnd=user32.GetDlgItem(CCwnd,303);

SendMessage(CKwnd,204,42,0);

case SD_EDIT1:
nMessage = CtrlGetSubCommand(szDlg);

if(nMessage = EDITBOX_CHANGE) then
CtrlGetText(szDlg, SD_EDIT1, svEdit1);
endif;

case SD_EDIT2:
nMessage = CtrlGetSubCommand(szDlg);

if(nMessage = EDITBOX_CHANGE) then
CtrlGetText(szDlg, SD_EDIT2, svEdit2);
endif;

case SD_EDIT3:
nMessage = CtrlGetSubCommand(szDlg);

if (nMessage=EDITBOX_CHANGE) then
CtrlGetText(szDlg,SD_EDIT3,svEdit3);
endif;

case SD_PBUT_OK:
CKEdit="";
strTemp="";
nId = OK;
bDone = TRUE;

case BACK:
svEdit3="";
CKEdit="";
strTemp="";
nId = BACK;
bDone = TRUE;

case DLG_ERR:
svEdit3="";
CKEdit="";
strTemp="";
SdError( -1, "SdShowEdit3" );
nId = -1;
bDone = TRUE;

case DLG_CLOSE:
SdCloseDlg( hwndDlg, nId, bDone );

default:
if (SdIsStdButton( nId ) && SdDoStdButton( nId )) then
bDone = TRUE;
endif;
endswitch;

endwhile;

//关闭对话框
EndDialog( szDlg );
//释放内存
ReleaseDialog( szDlg );

SdUnInit( );

SdMakeName( szAppKey, szDlg, szTitle, nSdShowDlgEdit3 );
SilentWriteData( szAppKey, "szEdit1", DATA_STRING, svEdit1, 0 );
SilentWriteData( szAppKey, "szEdit2", DATA_STRING, svEdit2, 0 );
SilentWriteData( szAppKey, "szEdit3", DATA_STRING, svEdit3, 0 );
SilentWriteData( szAppKey, "Result", DATA_NUMBER, "", nId );

return nId;

end;
code_cold 2002-03-01
  • 打赏
  • 举报
回复
Dlg_SdRegisterUserEx:
szMsg = "";
szTitle = "";
SetTitle("电子助教安装程序", 0, BACKGROUNDCAPTION );
nResult = SdRegisterUserEx( szTitle, szMsg, szName, szCompany, szSerial );

if(szSerial != "序列号码" && nResult != BACK) then
MessageBox("序列号错误,请从新输入", WARNING);
goto Dlg_SdRegisterUserEx;
endif;

if (nResult = BACK) goto Dlg_Start;
bcai 2002-03-01
  • 打赏
  • 举报
回复
关注!
bcai 2002-03-01
  • 打赏
  • 举报
回复
分给了,但答案还是不让我非常满意,sigh!
ccom 2002-03-01
  • 打赏
  • 举报
回复
通过installshield提供的对话框模板
你可以订制自己的对话框,也就可以加入自己的password属性的编辑框了
参见教程
http://www2.yesky.com/34603008/154189.shtml
bcai 2002-03-01
  • 打赏
  • 举报
回复
没人知道么?
bcai 2002-03-01
  • 打赏
  • 举报
回复
关注!
bcai 2002-03-01
  • 打赏
  • 举报
回复
您可能误会我意思了,使用SdRegisterUserEx是可以看到序列号的,我要求的是不能看到序列号,譬如输入123,显示成***.不知道InstallShield支不支持密码编辑框,有人知道么?

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧