我想将一个字符串传递给我的 dll 函数,但该函数无法获取该值。首先,我使用 GetMyParam 函数从 cmd 行获取字符串。是的。然后,我使用 innotest 函数将值传递给我的 dll。
function innotest(PName:string):Integer;
external 'innotest@E:\client\branch\maintain\1.4\bin\sdostate-debug\update.dll stdcall setuponly';
function GetMyParam(PName:string):string;
var
CmdLine : String;
CmdLineLen : Integer;
i : Integer;
begin
Result := '';
CmdLineLen:=ParamCount();
for i:=0 to CmdLineLen do
begin
CmdLine:=ParamStr(i);
if CmdLine = PName then
begin
CmdLine:=ParamStr(i+1);
Result := CmdLine;
Exit;
end;
end;
end;
procedure CurStepChanged(CurStep: TSetupStep);
var
res: String;
begin
if (CurStep = ssPostInstall) and (Pos('setup', WizardSelectedTasks(false)) > 0)then
begin
res := GetMyParam('-myParam');
MsgBox(res, mbInformation, mb_Ok);
innotest(res);
end;
end;
Msgbox 具有 res 值。这是我的 dll 代码:字符串的长度为 1。
DWORD Update::innotest(string str)
{
LPCWSTR s = StringHelper::ANSIToUnicode(str).c_str();
MessageBox(0,s,0,0);
return 0;
}