hi,
in meinem dateimanager können ganz normal dateien mit shellexecute geöffnet werden. falls ein fehler auftritt, soll eine meldung ausgegeben werden.
Delphi-Quellcode:
function TWinMain.shell_open(dirname, filename: PChar): Cardinal;
const
OPEN_OR_EXP: array[Boolean] of PChar = ('open', 'explore');
begin
if(filename = nil) then
filename := '.';
ShellExecute(Application.Handle, OPEN_OR_EXP[mi_open_exp.Checked and (filename = '.')], filename, nil, dirname, SW_SHOWNORMAL);
Result := GetLastError();
if(Result = ERROR_NO_ASSOCIATION) then
begin
if Application.MessageBox(PChar(SysErrorMessage(Result)+'.'+#10#13#10#13+'Möchten Sie manuell ein geeignetes Programm auswählen?'),APP_NAME,MB_YESNO or MB_ICONQUESTION) = mrYes then
ShellExecute(Application.Handle, 'open', 'rundll32.exe', PChar('shell32.dll, OpenAs_RunDLL '+dirname+filename), nil, SW_SHOWNORMAL);
end
else if(Result <> ERROR_SUCCESS) then
Application.MessageBox(PChar(SysErrorMessage(Result))+'.'+#10#13+'(Fehlercode '+IntToStr(Result)+')'),APP_NAME,MB_OK or MB_ICONSTOP);
end;
dies klappt auch ganz gut, allerdings tritt bei fehler ERROR_BAD_EXE_FORMAT (nr 193) ein "%1" in der meldung (
%1 ist keine zulässige Win32-Anwendung) auf. ich möchte apikonform das %1 (oder falls es ein "%2" geben sollte) durch den entsprechenden wert ersetzen (hier anscheinend der dateiname)! wie mache ich das???
PLEASE HELP!!!