![]() |
Vista und Comandlineparamerübergabe, "..ist ja 'n Ding!
Vista und Comandlineparamerübergabe, "..ist ja 'n Ding!"
@mods: Tja, ich weis jetzt nich so recht wohin mit dem Thema, ist sowol API als auch BS. Also, ich wusel gerade ein wenig mit Vista rum und bemerke das einige ältere Programme für XP probleme mit Parametern haben. Kann ja nun nicht sein dachte ich mir und habe eine kleines Programm geschrieben welches als Loader dient. Nun siehe da es klappt. Ich frage mich nur woran das liegt?
Delphi-Quellcode:
Kann so etwas an Unicode liegen ?
program ResEd;
{$R '_res\resources.res' '_res\resources.rc'} {.$DEFINE DEBUG} uses Windows, ShellAPI; const OrginalExecFile = 'ResEd!.exe'; function LastDelimiter(S: String; Delimiter: Char): Integer; var i: Integer; begin Result := -1; i := Length(S); if (S = '') or (i = 0) then Exit; while S[i] <> Delimiter do begin if i < 0 then break; dec(i); end; Result := i; end; function ExtractFilePath(sFilename: String): String; begin if LastDelimiter(sFilename, '\') = -1 then Exit; Result := Copy(sFilename, 1, LastDelimiter(sFilename, '\')); end; {function GetVirtualPathName(path: string): string; var FileInfo: TSHFileInfo; begin SHGetFileInfo( PAnsiChar(path), 0, FileInfo, SizeOf(TSHFIleInfo), SHGFI_DISPLAYNAME); result := FileInfo.szDisplayName; end;} function WinMain(hInstance: HINST; hPrevInstance: HINST; lpCmdLine: PChar; nCmdShow: Integer): Integer; stdcall; var Err : Cardinal; s : String[128]; params : string; i : integer; begin params := ''; s := ''; if ParamCount > 0 then begin for i := 1 to ParamCount do begin params := params + #32 + ParamStr(i); end; if params[1] = #32 then Delete(params, 1, 1); end; Err := ShellExecute(GetDesktopWindow, 'open', PCHAR(OrginalExecFile), PCHAR(Params), PCHAR(ExtractFilePath(ParamStr(0))), nCmdShow); if Err <= 32 then begin case err of 0 : s:= 'The operating system is out of memory or resources.'; ERROR_FILE_NOT_FOUND : s:= 'The specified file was not found.'; ERROR_PATH_NOT_FOUND : s:= 'The specified path was not found.'; // ... *schnipp* end; MessageBox(0, PChar('Error:'#10#13#10#13'CmdLine: '+ Paramstr(0) + #10#13+ params+#10#13#10#13+s), '!Launcer', MB_ICONERROR or MB_OK); end; Result := 0; end; BEGIN WinMain(hInstance, System.hPrevInst, System.CmdLine, System.CmdShow); {$IFDEF DEBUG} MessageBox(GetDesktopWindow, System.CmdLine, '!Launcer: CmdLine:', MB_ICONINFORMATION or MB_OK); {$ENDIF DEBUG} END. |
Re: Vista und Comandlineparamerübergabe, "..ist ja 'n D
Hast du die User-Gängelung UAC (User Account Control) aktiv und übergibst Dateien die unter C:\Programme oder C:\Windows liegen? Dann könnte die Virtualisierung des Dateisystems zuschlagen.
|
Re: Vista und Comandlineparamerübergabe, "..ist ja 'n D
Das dürfte egal sein da der bzw. die übergebenen Datei.- und Pfadnamen den realen entsprechen.
|
Re: Vista und Comandlineparamerübergabe, "..ist ja 'n D
Schalte doch mal Testhalber UAC ab und probier es dann. Unter Vista würde ich nichts als egal ansehen. Dazu sind noch zu viele Macken/Fehler vorhanden.
|
Re: Vista und Comandlineparamerübergabe, "..ist ja 'n D
Was genau haben denn diese Programme für ein Problem?
|
Re: Vista und Comandlineparamerübergabe, "..ist ja 'n D
Teilweise schmieren die einfach ab. Mit dem Launcher klappts ohne (fasst immer) Probleme.
Nur die Delphi32.exe sagt sie könne die Datei XYZ nicht finden. Die Delphi32.exe ohne den Launcher gestartet gibt folgenden Fehler aus: Zitat:
|
Re: Vista und Comandlineparamerübergabe, "..ist ja 'n D
Moin, ich wollte mal nachfragen ob der ein oder andere auch soche Dinge beobachten konnte.
|
Re: Vista und Comandlineparamerübergabe, "..ist ja 'n D
Startest du Delphi im Admin Modus? Wenn nicht, könnte das daran liegen.
|
Re: Vista und Comandlineparamerübergabe, "..ist ja 'n D
Mein Delphi 7 schmiert auch ab, wenn ich es mit einer Projektdatei als Parameter starten will. Lustigerweise erinnert es sich aber an den Namen, wenn ich es anschließend nochmal regulär starte und dann das Projekt über den Laden-Dialog öffnen will: Es steht dann schon in der Liste der zuletzt geöffneten Projekte...
Wenigstens gibt es sich Mühe...;) Gruß Michael |
Re: Vista und Comandlineparamerübergabe, "..ist ja 'n D
Naja, es geht nicht nur um Delphi, meines läuft ja bis auf den kleinen Fehler.
Generell haben manche ältere Programme dieses Problem. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz