AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Windows Autostarts über ShellExecute ausführen lassen
Thema durchsuchen
Ansicht
Themen-Optionen

Windows Autostarts über ShellExecute ausführen lassen

Ein Thema von Flare · begonnen am 12. Sep 2006 · letzter Beitrag vom 12. Sep 2006
Antwort Antwort
Flare

Registriert seit: 26. Jan 2006
Ort: Leipzig
529 Beiträge
 
Delphi 7 Professional
 
#1

Windows Autostarts über ShellExecute ausführen lassen

  Alt 12. Sep 2006, 19:21
Hallo DP!



Ich stehe gerade vor einem kleinen Problem. Und zwar habe ich mir ein Programm geschrieben welche die wichtigsten Autostarts von Windows raussucht und eine direkte Funktion zum starten bietet.

Dummerweise stehen im Autostart verschiedene Arten der Zielangabe da.

Zum Beispiel so was:

"[Programmpfad auch mit Leerzeichen]\[Dateiname]" -[Parameter] (also die normale Angabe)
[Programmpfad auch mit Leerzeichen]\[Dateiname] -[Parameter] (So sollte es eigentlich nicht gemacht werden, trotzdem habe ich solche Autostarts)
[Programmpfad auch mit Leerzeichen]\[Dateiname] (Also das selbe wie drüber nur ohne Parameter)
"[Programmpfad auch mit Leerzeichen]\[Dateiname]" (Und nochmal mit Anführungsstrichen)

Da ich die Dateien über ShellExecute starten lasse möchte ich auch gerne die Parameter getrennt angeben (dazu gibts ja extra den Parameter in ShellExecute)

Nur weiß ich gerade nicht wie ich alle 4 Varianten berücksichtigen soll. Ich dachte mir schon, da der Parameter immer ein Leerzeichen davor hat einfach von hinten nach einem Leerzeichen zu suchen - wenn keine Anführungsstriche gesetzt sind - und alles davor ist Dateiname/pfad und danach ist der eine Parameter. Da zieht mir Variante 3 nur einen Strich durch die Rechnung.

Kann mir jemand eine Möglichkeit nennen alle 4 Varianten zu berücksichtigen?

Natürlich könnte ich den String von Links nach Rechts durchgehen und bei jedem Leerzeichen gucken obs den String links als Datei gibt und der Rest ist dann der Parameter aber ich finde das muss doch irgendwie einfacher gehen!


Flare
Willy Scheibel
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Windows Autostarts über ShellExecute ausführen lassen

  Alt 12. Sep 2006, 19:32
Überprüfe die Strings doch, auf das Vorkommen der Hochkommas.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Daniel B
Daniel B

Registriert seit: 27. Okt 2005
Ort: Dachau
453 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Windows Autostarts über ShellExecute ausführen lassen

  Alt 12. Sep 2006, 19:35
Jupp, oder gleich schau ob das erste zeichen " sind, ansonsten vorne und hinten selbst dazu schreiben.
Servus...
  Mit Zitat antworten Zitat
Flare

Registriert seit: 26. Jan 2006
Ort: Leipzig
529 Beiträge
 
Delphi 7 Professional
 
#4

Re: Windows Autostarts über ShellExecute ausführen lassen

  Alt 12. Sep 2006, 20:53
Mit den Strings mit den Anführungsstrichen (warum nennt ihr die Hochkommas? ' das ist für mich ein Hochkomma) habe ich ja kein Problem!
Es geht muir um die Strings ohne die Hochkommas!
Und zwar muss ich erkennen, dass wenn diese Leerzeichen enthalten, ob die einen Parameter besitzen oder nicht.

Meine Frage ist es eben wie man am Besten den Parameter von dem Dateinamen+Pfad trennt damit ich das ganze sauber an ShellExecute übergeben kann.

Flare
Willy Scheibel
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Windows Autostarts über ShellExecute ausführen lassen

  Alt 12. Sep 2006, 21:11
Es kommt darauf an ob die parameter durch Bindestriche oder ohne vorkommen. Im 2. Fall ist es recht schwerer Leerzeichen vor Parametern von Leerzeichen in Dateinamen zu unterscheiden.
Markus Kinzler
  Mit Zitat antworten Zitat
Flare

Registriert seit: 26. Jan 2006
Ort: Leipzig
529 Beiträge
 
Delphi 7 Professional
 
#6

Re: Windows Autostarts über ShellExecute ausführen lassen

  Alt 12. Sep 2006, 21:36
Also wenn wirklich nur Bindestriche vor Parametern kommen würden wäre das ja auch nicht das Problem. Nur habe ich Parameter mit einem Slash oder mit einem Bindestrich davor. Und ich wollte eigentlich auf alle Arten von Parametern gewappnet sein, also auch welche ohne bestimmes Zeichen davor (gibt es ja bestimmt auch), weswegen ich eben das Leerzeichen als Indiz nehmen wollte. Natürlich kann man auch nach einem Punkt suchen und den dann als Punkt zur Extension ansehen und danach das erste Leerzeichen ist die Trennung zu den Parametern aber das ist ebenfalls zu unsicher.

Wenn es dafür keine geeignete Lösung geben sollte schicke ich einfach den gesamten String über den Dateinamenparameter, das dürfte eigentlich auch klappen.

Flare
Willy Scheibel
  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 14:37 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