AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Programmstart per ShellExecute vs. CreateProcess
Thema durchsuchen
Ansicht
Themen-Optionen

Programmstart per ShellExecute vs. CreateProcess

Ein Thema von SittingDuck · begonnen am 20. Jan 2006 · letzter Beitrag vom 20. Jan 2006
Antwort Antwort
SittingDuck

Registriert seit: 11. Jan 2006
Ort: Leverkusen
159 Beiträge
 
Delphi 2010 Professional
 
#1

Programmstart per ShellExecute vs. CreateProcess

  Alt 20. Jan 2006, 18:10
Moin Moin ...

Ich habe eine Schnellstart-Leiste programmiert, die
gerade hier:Launcher
vorgestellt wird. Sämtliche Programstarts werden dort
per ShellExecute ausgefüht.
Das klappt zwar vorbildlich jedoch habe ich gerade
beim Stöbern in der Code-Library gelesen, daß ich
ein 'Abfallprodukt' benutze !

Siehe Beitrag:CreateProcess

Es wäre ein Leichtes umzusatteln auf die CreateProcess-Routine
aber mir ist noch unklar, wo genau dann meine Vorteile wären.

Danke für Eure Hilfe.
Ciao ... SittingDuck
iPhone Backup und mehr: iTwin v3.9 Beta ... Alternative Startleiste: Launcher v3.8 !
  Mit Zitat antworten Zitat
ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#2

Re: Programmstart per ShellExecute vs. CreateProcess

  Alt 20. Jan 2006, 18:21
createprocess ist eben noch dierekter als shellexecute und somit schneller.

Shellexecute ist eben die "Funktion für alles", die, falls der command open lautet, erst überprüft, ob die Datei eine executable ist, und wenn ja, diese per createprocess startet, und andernfalls die verknüpfte Anwendung mit createprocess und den entsprechenden Parametern startet.

Es könnte allerdings auch sein, dass jemand mit dem Launcher eine andere Datei als eine EXE laden will und dann würde CreateProcess meckern.
Ich denke dass es auf diese paar Millisekunden Zeitgewinn nicht ankommt (command auf 'open' überprüfen, Registry auslesen, createprocess aufrufen)

ich würde die createprocess allerdings nicht mit einem Abfallprodukt vergleichen sondern eher damit wenn du aus Komfort nicht die dierekte nonVCL- sondern die "um-fünf-Ecken" VCL verwendest.
Michael Enßlin
Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß.
Sokrates
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#3

Re: Programmstart per ShellExecute vs. CreateProcess

  Alt 20. Jan 2006, 18:38
Zitat von ichbins:
ich würde die createprocess allerdings nicht mit einem Abfallprodukt vergleichen sondern eher damit wenn du aus Komfort nicht die dierekte nonVCL- sondern die "um-fünf-Ecken" VCL verwendest.
Öhm... ShellExecute ist auch eine WinAPI-Funktion . Und wenn, dann wäre es wohl eher eine RTL-Funktion .
Der große Vorteil von CreateProcess ist, dass die Funktion eben nur für Prozesse gedacht ist und deshalb einige interessante Parameter mehr zur Verfügung stellt.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Programmstart per ShellExecute vs. CreateProcess

  Alt 20. Jan 2006, 18:55
CreateProcess ist einfach interessant wenn man ein Programm nicht nur starten will sondern dabei auch noch etwas festlegen will. Mit CreateProcess kann man ein Programm auf einem anderen Desktop starten, die Standardeingabe und Standardausgabe umleiten und vieles mehr. Wenn du aber einfach ein Programm nur simpel (wie im Explorer) starten willst reicht ShellExecute.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
SittingDuck

Registriert seit: 11. Jan 2006
Ort: Leverkusen
159 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Programmstart per ShellExecute vs. CreateProcess

  Alt 20. Jan 2006, 19:07
OkeeDokee ...

Also eher mehr Probleme als Vorteile ...
Hm ... dann betreibe ich also doch keinen
'Mißbrauch', Alles ist gut und bleibt wie es ist.

Übrigens das mit 'Abfallprodukt' ist O-Ton
von 'Luckie' (s.o.)


Zitat:
Also um zum Beispiel eine Textdatei zu drucken ruft man Shellexecute mit dem Verb 'print' und der entsprechenden Datei auf. Das man damit auch fremde Anwendungen starten kann ist ein Abfallprodukt und ist eher als Mißbrauch zu sehen.

Wenn man es richtig machen will, sollte man CreateProcess benutzen.
Wieder legal und kein bischen kriminell grüßt
Ciao ... SittingDuck
iPhone Backup und mehr: iTwin v3.9 Beta ... Alternative Startleiste: Launcher v3.8 !
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Programmstart per ShellExecute vs. CreateProcess

  Alt 20. Jan 2006, 22:03
Moin SittingDuck,

ausser CreateProcess kommt dann vielleicht auch noch MSDN-Library durchsuchenShellExecuteEx in Frage, da es eher ein CreateProcess, als ein ShellExecute ist
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz