Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Programmstart durch Autostart - kann man das herausfinden? (https://www.delphipraxis.net/77166-programmstart-durch-autostart-kann-man-das-herausfinden.html)

Flare 15. Sep 2006 15:33

Re: Programmstart durch Autostart - kann man das herausfinde
 
Gut, werde ich mal probieren!

(Und ich finde es seltsam, dass sich ICQ und MSN sowie ein paar andere Programme extra wieder beenden obwohl ich möchte, dass die gestartet werden...ich finde das unnötige Programmierarbeit - und für mich mehr :? )


Flare

Martin K 15. Sep 2006 15:46

Re: Programmstart durch Autostart - kann man das herausfinde
 
Also ich hab jetzt selber mal geguckt, als Arbeitsverzeichnis wird wohl der %HomePath% übergeben.
Ist das bei Dir auch so?

Flare 16. Sep 2006 10:23

Re: Programmstart durch Autostart - kann man das herausfinde
 
Bei mir ist das auch so. Also habe ich einfach mal eine Funktion gesucht womit man eben diesen Homepath bekommt und habe zum Glück bei Lucky nach langer Zeit etwas gefunden :roll:

Das dumme nur, für den Homepath scheint keine Konstante festgelegt zu sein, also habe ich durchgetestet und eine Zahl gefunden, die man als Homepath durchgehen lassen kann.

Also habe ich das ganze schnell noch in mein Programm implementiert und siehe da: nix passiert :wall:

Aber wenigstens weiß ich jetzt wie man die Funktion GetShellFolder verwendet :mrgreen:

Hier mal mein relevanter Code, vielleicht habe ich ja auch irgendwo nen Fehler den ich nicht sehe:
Delphi-Quellcode:
procedure TForm3.buttonclick(Sender: TObject);
var button: TButton;
    name,workdir: string;
begin
  if Sender is TButton then
  begin
    name := programs[(Sender as TButton).tag]; //z.B. "C:\Programme\Messenger\msmsgs.exe" /background
    if pos('"', name)>0 then
    begin
      //vielleicht kommt ja noch was hier rein
    end
    else
    begin
      name := '"' + name + '"';
    end;
    workdir := GetShellFolder($0028); //z.B. C:\Dokumente und Einstellungen\Flare
    ShellExecute(Handle, nil, PChar(name), nil, PChar(workdir), 0);
  end;
end;

Flare

ringli 16. Sep 2006 10:59

Re: Programmstart durch Autostart - kann man das herausfinde
 
Versuch es doch mal so:
Delphi-Quellcode:
Shellexecute(Handle, nil, 'C:\Programme\Messenger\msmsgs.exe', '/background', nil, 0);
oder

Delphi-Quellcode:
Shellexecute(Handle, nil, nil, '"C:\Programme\Messenger\msmsgs.exe" /background', nil, 0);
Einfach mal ausprobieren ob es so geht. :-)

Flare 16. Sep 2006 11:21

Re: Programmstart durch Autostart - kann man das herausfinde
 
Erstes klappt, Zweites nicht, wobei ich auch nicht weiß wieso das klappen sollte, da du alles als Parameter übergeben möchtest.

Allerdings klappt es auch nur mit dieser Exe! Wenn ich genau das mit ICQ mache passiert nämlich gar nix.
Und außerdem habe ich dann wieder das Problem mit dem extrahieren des Parameters. Bei dem Messenger ist das ja noch einfach, da gibt es ja nur ein Leerzeichen aber darauf kann man sich ja nicht verlassen.

Flare

vlees91 16. Sep 2006 12:22

Re: Programmstart durch Autostart - kann man das herausfinde
 
Mcötest du einfach nur ICQ/MSN im Hintergrund starten?
Wenn ja:
starte es normal über dein Programm und dann gibts glaube ich eine Messager, die man Programmen schicken kann, sodass sie "verschwinden"^^

himitsu 16. Sep 2006 12:40

Re: Programmstart durch Autostart - kann man das herausfinde
 
Zitat:

Zitat von Flare
Zweites nicht, wobei ich auch nicht weiß wieso das klappen sollte, da du alles als Parameter übergeben möchtest.

Zweites kann auch nicht funktionieren, da Shellexecute als ersten 2 Parameter ausschließlich einen Dateinamen erwartet (verlangt) und diese nunmal insgesamt kein Dateiname. :warn:

Flare 16. Sep 2006 12:44

Re: Programmstart durch Autostart - kann man das herausfinde
 
Nein, das möchte ich nicht. Ich möchte es so starten, wie das Programm durch den Autostart gestartet werden möchte. Mein Programm soll ja einen Autostart simulieren der nur nicht direkt beim starten von Windows ausgeführt wird sondern erst wenn der User es möchte.


Flare

Martin K 16. Sep 2006 12:46

Re: Programmstart durch Autostart - kann man das herausfinde
 
Hi,

ersetze mal:
Delphi-Quellcode:
ShellExecute(Handle, nil, PChar(name), nil, PChar(workdir), 0);
durch:
Delphi-Quellcode:
ShellExecute(Handle, 'open', PChar(name), nil, PChar(workdir), SW_ShowNormal);
das ist der normale ShellExecute-Aufruf:
Delphi-Quellcode:
ShellExecute(Handle, 'open', PChar(Dateiname), PChar(Parameter), PChar(Arbeitsverzeichnis), SW_ShowNormal);

Flare 16. Sep 2006 12:54

Re: Programmstart durch Autostart - kann man das herausfinde
 
Ich würde ja jetzt gerne sagen, dass es geklappt hat, aber durch diese beiden Änderungen hat sich gar nix geändert.
Das war es also auch nicht. :wall:

Vielleicht könnte ja mal jemand das bei sich probieren?

Folgende Programme wollen sich nicht per meinem Programm starten:

MSN 2
MSN 7.5
ICQ Lite 5.1
Quick Time
MSN Plus 3


Flare


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:40 Uhr.
Seite 2 von 3     12 3      

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