Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#4

AW: Alte Instanz über CmdLine aktivieren\starten

  Alt 24. Mai 2017, 20:38
Du willst also dein Singleton mehrmals haben ... dann bau einfach den Code für das SingleInstance aus.
Oder bau ein, dass es bei einem bestimmten Parameter nichts prüft.



Zitat:
Delphi-Quellcode:
// Commandline Parameter auswerten
StartParams := '';
ValidExt := false;
for Params := 1 to ParamCount do
  StartParams := StartParams + ' ' + ParamStr(Params);

if length(StartParams) > 0 then
begin
  try
    Ext := Split(VIDEOEXT, ';');
    Extension := Lowercase(ExtractFileExt(StartParams));

    for IntI := 0 to High(Ext) do
    begin
      if (Ext[IntI] = Extension) then
      begin
        ValidExt := true;
        break;
      end;
    end;
  finally
    if ValidExt then
    begin
      RunMediaFile(PWideChar(StartParams));
      SKAERO_InvalidateRect(MainHandle, false);

      ShowWindow(MovieHandle, SW_SHOW);

      btnPlay.Enabled := false;
      btnPause.Enabled := true;
    end;
  end;
end;
Delphi-Quellcode:
// Commandline Parameter auswerten
if ParamCount > 0 then
begin
  ValidExt := false;
  Ext := SplitString(VIDEOEXT, ';');
  Extension := Lowercase(ExtractFileExt(ParamStr(ParamCount))); //Extension := Lowercase(ExtractFileExt(GetCommandLine));

  for IntI := 0 to High(Ext) do
  begin
    if (Ext[IntI] = Extension) then
    begin
      ValidExt := true;
      break;
    end;
  end;
  if ValidExt then
  begin
    RunMediaFile(PChar(GetCommandLine));
    SKAERO_InvalidateRect(MainHandle, false);

    ...
Delphi-Quellcode:
// Commandline Parameter auswerten
if ParamCount > 0 then
begin
  Ext := SplitString(VIDEOEXT, ';');
  Extension := ExtractFileExt(ParamStr(ParamCount)); //Extension := ExtractFileExt(GetCommandLine);
  if AnsiMatchText(Extension, Ext) then
  begin
    RunMediaFile(PChar(GetCommandLine));
    SKAERO_InvalidateRect(MainHandle, false);

    ...
* Delphi-Referenz durchsuchenSplittString
* Delphi-Referenz durchsuchenMatchText
* ParamStr enthält keine " mehr, womit es hoffentlich schön knallt, wenn aus deine.exe "pfad mit lerzeich.en" zu deine.exe pfad mit lerzeich.en wird
* wenn wenn du nur die Endung des letzten Parameters haben willst, warum nimmst du den dann nicht?

200 Byte gespart, 80% der Codezeilen weg und dafür nur bissl nicht ganz funktionierenden und "doppelten" Code entfernt
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (24. Mai 2017 um 20:53 Uhr)
  Mit Zitat antworten Zitat