所以我有一个使用下面代码的用户输入页面,文本正在加密
如何将其写入文件
现在,我可以将其从文件读入变量以解密它。
然后我想在消息框中在屏幕上显示解密的消息,但是\ n \ n需要在显示之前转换为$ \ n,以便正确显示。
示例I输入:(注意Control Enter为您提供下一行)
Hello World
It's a great day
解密后显示:
Hello World\n\nIt's a great day
ini文件
[Settings]
NumFields=2
Title="Activation Code"
State=0
[Field 1]
Type=Text
Left=8
Right=-10
Top=12
Bottom=-15
flags=MULTILINE|VSCROLL
[Field 2]
Type=GroupBox
Left=0
Right=-1
Top=0
Bottom=-10
Text="Please enter in your Activation Code"
代码:
!include MUI.nsh
!include LogicLib.nsh
Page custom SetCustom ValidateCustom
Section Dummy
SectionEnd
Function SetCustom
ReserveFile ".\test.ini"
!insertmacro MUI_INSTALLOPTIONS_EXTRACT ".\test.ini"
!insertmacro MUI_INSTALLOPTIONS_DISPLAY ".\test.ini"
FunctionEnd
Function ValidateCustom
!insertmacro MUI_INSTALLOPTIONS_READ $R1 ".\test.ini" "Field 1" "State"
${If} $R1 == ""
Abort # Go back to page.
${Else}
Var /GLOBAL textencryt
blowfish::encrypt $R1 "1234password"
StrCpy $textencryt $8
MessageBox MB_OK "Encrypted string is:$\n $textencryt"
blowfish::decrypt $8 "1234password"
StrCpy $textencryt $8
MessageBox MB_OK "Decrypted string is:$\n $textencryt"
${EndIf}
FunctionEnd
新代码:(有问题)
!insertmacro MUI_INSTALLOPTIONS_READ $R1 "test.ini" "Field 1" "State"
${If} $R1 == ""
Abort # Go back to page.
${Else}
Var /GLOBAL textencryt
blowfish::decrypt $R1 "1234password"
StrCpy $textencryt $8
MessageBox MB_OK "Decrypted string is:$\n $textencryt"
!insertmacro MUI_INSTALLOPTIONS_READ $8 "test.ini" "Field 1" "HWND"
System::Call 'USER32::SendMessage(i $8, i ${WM_GETTEXT}, i ${NSIS_MAX_STRLEN}, t.R1)'
MessageBox MB_OK $R1
原始邮件是 例: 测试用户 码 12个月 加密后我尝试解密并查看结果使用 “MessageBox MB_OK”解密的字符串是:$ \ n $ textencryt“返回解密的消息,其中包含\ n \ n。(例如:test user \ n \ ncode \ n \ 12个月)它应该像: 例: 测试用户 码 12个月
答案 0 :(得分:0)
您有两种选择。
您可以使用INSTALLOPTIONS_READ_CONVERT辅助函数:
...
!insertmacro INSTALLOPTIONS_FUNCTION_READ_CONVERT
Function ValidateCustom
!insertmacro INSTALLOPTIONS_READ_CONVERT $R1 "test.ini" "Field 1" "State"
MessageBox MB_OK $R1
FunctionEnd
或者您可以直接从控件中阅读文本:
...
!include WinMessages.nsh
Function ValidateCustom
!insertmacro MUI_INSTALLOPTIONS_READ $R1 "test.ini" "Field 1" "HWND"
System::Call 'USER32::SendMessage(i $R1, i ${WM_GETTEXT}, i ${NSIS_MAX_STRLEN}, t.R1)'
MessageBox MB_OK $R1
FunctionEnd