Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Datei öffnen mit (https://www.delphipraxis.net/141704-datei-oeffnen-mit.html)

sx2008 15. Okt 2009 02:43

Re: Datei öffnen mit
 
Bei ShellExecute gibt man ja ein Verb an. In der Regel ist das "open".
http://msdn.microsoft.com/en-us/libr...%29.aspx#verbs

Wenn in der Registry weitere Verben (z.B. "print", "edit", "execute"...) für eine bestimmte Dateiendung
hinterlegt sind kann man diese natürlich auch benützen.
Delphi-Quellcode:
ShellExecute(Application.Handle,'execute',PChar('My_AutoWarkey_Script.ahk'),nil,PChar(warkeysp+'\Autowarkey'),sw_ShowNormal);
Gerade bei einer Scriptdatei könnte man ich verschiedene Verben vorstellen.
Die Anwendung, die das Script ausführt könnte dafür sorgen, dass die Verben in der Registry verankert werden.

Sko 15. Okt 2009 06:58

Re: Datei öffnen mit
 
Den Öffnen-mit-Dialog von Windows kannst du mit
Delphi-Quellcode:
ShellExecute(Application.Handle,'open',PChar('rundll32.exe'),PChar('shell32.dll,OpenAs_RunDLL ' + Dateiname), nil, SW_SHOWNORMAL);
aufrufen.

helgew 25. Nov 2009 01:59

Re: Datei öffnen mit
 
Zitat:

Zitat von Sko
Den Öffnen-mit-Dialog von Windows kannst du mit
Delphi-Quellcode:
ShellExecute(Application.Handle,'open',PChar('rundll32.exe'),PChar('shell32.dll,OpenAs_RunDLL ' + Dateiname), nil, SW_SHOWNORMAL);
aufrufen.

also irgendwas entgeht mir da, ich kriege gerade einfach immmer wieder das verdammt blöde Verhalten zu sehen, dass es in obiger Form nur mit einem Teil der Programme funktioniert, verwendet man hingegen '"'+Dateiname+'"', so wird der Dateiname zwar vom Öffnen mit... Dialog falsch dargestellt, etwa

c:\demo.bmp wird als
demo.bmp"
dargestellt mit verwaistem Anführungszeichen, sodass keine passenden Programme dafür ausgewählt sind, jedoch wird der Dateiname dann korrekt übergeben. Muss ich den Pfad als shortpath darstellen und den Dateinamen als 8.3 formatieren?

sx2008 25. Nov 2009 03:01

Re: Datei öffnen mit
 
Kopiert aus der JCL, Unit JclShell:
Delphi-Quellcode:
function PCharOrNil(const S: string): PChar;
begin
  Result := Pointer(S);
end;

function ShellExecEx(const FileName: string; const Parameters: string;
  const Verb: string; CmdShow: Integer): Boolean;
var
  Sei: TShellExecuteInfo;
begin
  FillChar(Sei, SizeOf(Sei), #0);
  Sei.cbSize := SizeOf(Sei);
  Sei.fMask := SEE_MASK_DOENVSUBST or SEE_MASK_FLAG_NO_UI;
  Sei.lpFile := PChar(FileName);
  Sei.lpParameters := PCharOrNil(Parameters);
  Sei.lpVerb := PCharOrNil(Verb);
  Sei.nShow := CmdShow;
  Result := ShellExecuteEx(@Sei);
end;

function ShellOpenAs(const FileName: string): Boolean; // Open-As Dialog öffnen
begin
  Result := ShellExecEx('rundll32', Format('shell32.dll,OpenAs_RunDLL "%s"', [FileName]), '', SW_SHOWNORMAL);
end;
Du kannst natürlich auch die JCL direkt verwenden.
Das erspart Dir viele Fragen weil einige schlaue Köpfe die grundlegenden Dinge schon gelöst haben.

helgew 25. Nov 2009 16:01

Re: Datei öffnen mit
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi, Danke für die Hilfe aber ich komme wohl umher, mir noch mehr Bibliotheken einzuschleppen inklusive derer Lizenzbestimmungen. Der Fehler lag im Dateinamen, bei dessen Generierung sich ein \\ eingeschlichen hat, da bringen auch die Anführungszeichen nichts mehr. Im Gegenteil: mit korrektem Dateinamen und Anführungszeichen ist es nicht besser. Soviel zum Thema "Gedanken gemacht" :(


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:16 Uhr.
Seite 2 von 2     12   

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 by Thomas Breitkreuz