Einzelnen Beitrag anzeigen

Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#1

Shellexecute richtig anwenden/übersetzen

  Alt 15. Okt 2018, 14:06
Delphi-Version: 10.2 Tokyo
Hi zusammen
In einem in Javascript geschriebenen Beispielcode wird Shellexecute aufgerufen:


Ich hab im Editor 2 Zeilen, von denen die erste die Javascript-Schnipel wiedergibt und die 2. diie entsprechende Schreibweise in ObjectPascal definieren sollte.
Delphi-Quellcode:
    ShellExecute("RUNDLL32.exe", "PRINTUI.DLL,PrintUIEntry /k /n \"PDFCreator\"", "", "open", 1);
    ShellExecute('RUNDLL32.exe', 'PRINTUI.DLL,PrintUIEntry /k /n \'PDFCreator\'', '', 'open', 1);
Die ersten 2 Parameter sind String, bzw. PChar. Der 3. Parameter besteht ausdem Bezeichner PDFCreator, gefolgt von einem Backslash. Das ist insofern Korrekt, als Shellexecute an dieser Stelle tatsächlich keinen String erwartet.

Ich hab eigentlich nicht erwartet, dass das gleich funktioniert, insbesondere, da an shellexecute PChars übergeben werden müssen. Dass aber ein Kompilierungsversuch fehlschlägt, weil shellexecute unbekannt ist - in meiner Usesliste ist als erstes Winapi.Windows eingetragen ist - so hab ich denn ShellAPI dazugefügt. Komischerweise weiss Delphi selbst nichts von seinem guten Bekannten.
Ein kleiner Hinweis auf der entsprechenden Helpseite, und man wüsste, was einzubinden ist. Und die Entwicklung mit Delphi wäre noch schneller!
Gegenwärtiger Stand: wie ich erwartet hatte, moniert sich Delphi am Parameter PDFCreator. Die fehlenden PChar-Umwandlungen machen sich wohl erst später bemerkbar.
Aber was soll der Parameter PDFCreator sein? Das Handle der von der RunDll zu startenden Anwendung?

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat