Hola.
Creo que estas tratando de implementar el código que te sugerí
aquí y te has echo una ensalada.
Si te fijas bién en el post anterior, no es en
OnCreate donde se captura el nombre de archivo sino en
DragDropFileMSG.
Resumiendo:
Código Delphi
[-]
....
implementation
uses ShellApi,StrUtils;
function GetShortName(const FileName: String): String;
var
ShortName: PChar;
Size: Cardinal;
begin
Size := GetShortPathName(PChar(FileName), nil, 0);
if Size > 0 then
begin
GetMem(ShortName, Size);
GetShortPathName(PChar(FileName), ShortName, Size);
Result := ShortName;
FreeMem(ShortName);
end
else
Result := FileName;
end;
procedure LlamarReg2inf(Hnd: THandle; const App:string; Origen: string; Destino: string);
begin
Origen:= AnsiReplaceStr(GetShortName(Origen), ' ', '');
Destino:= ChangeFileExt(Origen, '.inf');
ShellExecute(Hnd,
'OPEN',
PChar(ExtractFileName(App)),
PChar(Origen+' '+Destino),
PChar(ExtractFilePath(App)),
SW_SHOW);
end;
procedure TForm1.DragDropFileMSG(var Msg: TMessage);
var
DragDropFileName: array[0..255] of Char;
begin
DragQueryFile(msg.WParam, 0, DragDropFileName, Length(DragDropFileName));
DragFinish(Msg.WParam);
LlamarReg2inf(Handle, 'REG2INF.EXE', DragDropFileName,'')
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
DragAcceptFiles(Handle, True);
end;
...
A fin de simplificar la explicación recorté y modifiqué un poco el código del procedimiento
LlamarReg2inf.
Saludos.