![]() |
Programmstart bestimmen
Hey,
ich möchte das mein Programm nachdem ich den PC hochgefahren habe selbst innerhalb von einer bestimmten Zeit startet. Meine erste Lösung war eine Batch-Datei zu erstellen in der ich das Programm erst auffordere nach einer gewissen Zeit das Programm zu starten. Diese Batch-Datei habe ich dann in den Autostart kopiert und es ging auch alles wunderbar. Das Programm muss erst nach ein paar Minuten starten, da es eine gewisse Zeit brauch bis sich der PC mit W-Lan verbindet, da das Programm ohne W-Lan nichts anfangen kann und Fehlermeldungen bringt. Finde diese Lösung nicht wirklich praktisch. Habt ihr noch Vorschläge, wie es über das Delphiprogramm steuern kann? oder andere Ideen? :P Mfg Major1337 |
Re: Programmstart bestimmen
Kannst zum Beispiel mit einem Timer und
![]() |
Re: Programmstart bestimmen
er muß aber auch so oder so erstmal ein Programm starten (egal welchen der schon genannten Weger er verwendet)
statt der Batch kannst du aber auch dein Programm, mit der "warte noch etwas"-Nachricht über einen Linl (.lnk) im Autostart starten oder du trägst den Befehl in eines der Autostart-Verzeichnisse in der Registry ein. also entweder er startet sein Programm sofort und sagt ihm per parameter "warte noch 5 Minuten", dann wird z.B. in der .DPR gleich zum Anfang darauf eingegangen, gewartet und erst nach Zeitablauf fortgesetzt, oder er baut sich einen Loader, welcher via Autostart startet, etwas wartet, dann das andere Programm startet und sich wieder beendet. PS: Wenn ich Zeit hab, bastel ich hier an einem Tool, welches unter Anderem auch mal die Autostarts (anderer Programme) ändern können soll ... erstellen, löschen, nur deaktiveren oder eben zeitversetzt starten. Wollte da mal einige Funktionen Pluginmäßig kombinieren, damit nur ein Propzess ständig aktiv ist und nicht tausende für jede kleine Aufgabe |
Re: Programmstart bestimmen
Ich dachte das zu startende Programm ist nicht von ihm bzw. er hat keinen Zugriff auf den Source. Sowas hab ich auch gemeint:
Zitat:
|
Re: Programmstart bestimmen
ich dachte er meint ein Eigenes
Zitat:
|
Re: Programmstart bestimmen
Hey,
ich habe schon Zugriff auf den Source :P aber die Idee mit einem extra Programm ist schon gut. Die werde ich vermutlich auch umsetzten, gibts bei ShellExecute auch einen Parameter mit der ich die Zeit steuern kann? So kann ich dann auch ein try except einbauen, wenn er keinen W-Lan Zugriff bekommt und ein tolles Intro mit Ladebalken machen ^^ |
Re: Programmstart bestimmen
Ich würde das mit einer Anwendung lösen.
Zu Beginn startest du einen Timer, der die entsprechenden Funktionen nach einer gewissen Zeit aufruft. Es wäre auch denkbar, im Timer alle 15 Sekunden zu prüfen, ob eine WLAN-Verbindung vorhanden ist. Ist sie das, kannst du entsprechende Aktionen ausführen. Ich vermute, dass du im Internet (evtl. auch in der DP) etwas findest, um zu prüfen, ob eine WLAN-Verbindung vorhanden ist. Vielleicht reicht es schon, einen Server anzupingen und auf ein entsprechendes Timeout zu reagieren. |
Re: Programmstart bestimmen
Hallo,
eine eigene Anwendung lohnt sich kaum, weil das Gleiche mit einer 2zeilgen Batchdatei geht: sleep 10 start meineAnwendung.exe sleep ist aus dem Resource Kit, Download bei Microssoft. Gruss Reinhard |
Re: Programmstart bestimmen
dann hat man immer noch das rumligende (maximal minimierte) Konsolenfenster ... die Anwendung könnte man solange wenigstens aus der Taskleiste entfernen :angel2:
|
Re: Programmstart bestimmen
Delphi-Quellcode:
PS: Der Zatto Pfad ist nur mal testweise ^^
procedure TForm1.Timer1Timer(Sender: TObject);
begin try Progressbar1.Position := Progressbar1.Position +1; Application.ProcessMessages; if Progressbar1.Position = 100 then begin Timer1.Enabled := False; Progressbar1.Position := 0; end; finally shellexecute(0, 'open', pchar('C:\Programme\Zattoo\zatto1.exe'), nil, nil, 0); end; Ich bekomme den Fehler: Undeclare Indefier ShellExecute :O |
Re: Programmstart bestimmen
Es ist ja nun wirklich kein Ackt solch eine Funktion in die eigene Application zu implementieren.
Über einen Parameter kann man dann bestimmen ob bzw. wann das Programm "sarten" oder besser gesagt seine Funcktion aufnemen soll. Dann braucht mal nicht einmal eine Zusatzprogramm nur einen Link mit dem entsp. Parameter im Autostartordner. Es gibt ja zu dem unter Windows noch den Taskplaner (bzw. in Vischda der Aufgabenplaner) |
Re: Programmstart bestimmen
Wie wäre es mit einen Dienst, welche als Abhängigkeit das Netzwerk hat?
|
Re: Programmstart bestimmen
Sorry, aber ich habe mich schon für ein Intro.exe entschieden, das vor dem Start aufgerufen wird. Habe nur noch den Fehler mit ShellExecute :(
|
Re: Programmstart bestimmen
Zitat:
Delphi-Quellcode:
uses
.., ShellAPI; ... ... CODE |
Re: Programmstart bestimmen
:P wollte grade schreiben das ich den Fehler gefunden hab ^^
|
Re: Programmstart bestimmen
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin try Progressbar1.Position := Progressbar1.Position +1; Application.ProcessMessages; if Progressbar1.Position = 100 then begin Timer1.Enabled := False; Progressbar1.Position := 0; end; finally ShellExecute(Handle, 'open', 'C:\Programme\test\test.exe', nil, nil, SW_SHOWNORMAL) ; end; end; Der Ladebalken lädt bis zum Schluss aber dann startet er nicht die exe |
Re: Programmstart bestimmen
Wozu try-finally? Wie lautet der Rückgabewert von ShellExecute?
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var errorcode: Integer; begin Progressbar1.Position := Progressbar1.Position +1; Application.ProcessMessages; if Progressbar1.Position = 100 then begin Timer1.Enabled := False; Progressbar1.Position := 0; errorcode := ShellExecute(Handle, 'open', 'C:\Programme\test\test.exe', nil, nil, SW_SHOW); if errorcode > 32 then ShowMessage('Fehler: ' + IntToStr(errorcode)); end; end; |
Re: Programmstart bestimmen
wollte mit try-finally bewirken das er nach dem Laden direkt die *.exe öffnet.
War das mit dem Rückgabewert eine rhetorische Frage? :O hmm.. ich habe mal deinen Quellcode importiert, aber da tut sich trotzdem nix.. :( |
Re: Programmstart bestimmen
Es wird auch keine ShowMessage angezeigt?
|
Re: Programmstart bestimmen
Müsste das nicht auch eher
Delphi-Quellcode:
heißen?
if errorcode < 33 then
|
Re: Programmstart bestimmen
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Borland.Vcl.ComCtrls, System.ComponentModel, Borland.Vcl.StdCtrls, Borland.Vcl.ExtCtrls, ShellAPI; type TForm1 = class(TForm) GroupBox1: TGroupBox; ProgressBar1: TProgressBar; Timer1: TTimer; procedure Timer1Timer(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.nfm} procedure TForm1.FormCreate(Sender: TObject); var Bild : TImage; begin Bild:= Timage.create(nil); Bild.picture.LoadFromFile('D:\bdetouch_Schleiferei\images\bild.bmp'); Bild.autosize:=true; Bild.Top:= 15; Bild.Left:=0; Bild.Visible:=true; Bild.Parent := self; end; procedure TForm1.Timer1Timer(Sender: TObject); begin Progressbar1.Position := Progressbar1.Position +1; Application.ProcessMessages; if Progressbar1.Position = 100 then begin Timer1.Enabled := False; Progressbar1.Position := 0; ShellExecute(Application.Handle, 'open', 'D:\Program\Ding.exe', nil, nil, SW_NORMAL); end; end; end. Ich finde absolut nicht meinen Fehler bei ShellExecute, habe gegoogelt und überall gelesen das man an ShellExecute so die Parameter übergeben muss. Fehlermeldung: [Pascal Fehler] Unit1.pas(58): E2250 Es gibt keine überladene Version von 'ShellExecute', die man mit diesen Argumenten aufrufen kann |
Re: Programmstart bestimmen
SW_NORMAL sagt mir jetzt nichts, versuch mal SW_SHOWNORMAL.
|
Re: Programmstart bestimmen
funktioniert leider auch nicht mit SW_SHOWNORMAL :?
|
Re: Programmstart bestimmen
Wenn ich mir Deine uses-Klausel anschaue, bin ich etwas verwirrt. Ist das jetzt Delphi Win32 oder Delphi.NET?
|
Re: Programmstart bestimmen
Hallo,
nimm mal statt NIL '' Bei mir wird das aber auch mit NIL compiliert. Was ist das für ein Compiler ? Sieht doch aus wie .Net ? Wenn es .Net ist: ![]() Heiko |
Re: Programmstart bestimmen
es lag an .NET :P
|
Re: Programmstart bestimmen
Es ist immer Gold wert, gleich in der richtigen Sparte zu posten :?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:39 Uhr. |
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