Autor Beitrag
jolomino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 58



BeitragVerfasst: Sa 26.03.05 20:44 
hallo,
ich möchte mit der CreateProcess methode einen parameter übergeben, der verhindert das ein unterprogramm ohne aufruf aus dem hauptprogramm gestartet werden kann.
das unterprogramm ist ein updater, dieses wird vom hauptprogramm gestartet und das hauptprogramm beendet sich selber, damit dieses upgedatet werden kann. nach dem update wird das neue hauptprogramm wieder gestartet und der updater beendet sich selber. im hauptprogramm ist die versionsprüfung und im updater nur der download des neuen hauptprogramms. ich möchte aber nicht, das man unter windows den updater starten kann, weil ja sonst immer das programm gedownloadet wird.

so nun dachte ich mir, das ich einfach einen parameter beim aufruf übergebe und diesen im unterprogramm abfrage

aufruf aus dem hauptprogramm:
ausblenden Delphi-Quelltext
1:
2:
CreateProcess(PChar(ExtractFilePath(Application.Exename)+'updater.exe'),nil,nil,nil,false,
                       NORMAL_PRIORITY_CLASS,nil,nil,aSI,aPI)


abfrage im unterprogramm etwa in der art:
ausblenden Delphi-Quelltext
1:
2:
If not ParamStr(1)='-startisMain' Then
Updater.Close;


gibts da nee lösung?

gruss jolomino
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Sa 26.03.05 21:21 
Hi
Wenn du es geschafft hast CreateProcess zu finden, dann frag ich mich ernsthaft wieso du es nicht schaffst dir die Hilfetexte zur Funktion mal durchzulesen. :nixweiss: Da hättest du ohne grosse Fragen lesen können, dass du den zweiten Parameter dieser Funktion dazu verwenden kannst. :wink:

Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
jolomino Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 58



BeitragVerfasst: Sa 26.03.05 21:31 
ja thx und sorry das ich ein unwissender bin :cry:

aber das problem liegt hier:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.FormCreate(Sender: TObject);
begin

If not ParamStr(1)='_startisMain' Then begin
Close;
end;

end.


gruss jolomino
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Sa 26.03.05 21:38 
Hi
user profile iconjolomino hat folgendes geschrieben:
ja thx und sorry das ich ein unwissender bin :cry:

Kein Problem, genau das sollte ja die Hilfe ändern :mrgreen:

user profile iconjolomino hat folgendes geschrieben:

aber das problem liegt hier:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.FormCreate(Sender: TObject);
begin

If not ParamStr(1)='_startisMain' Then begin
Close;
end;

end.

Ich versteh dein Problem echt nicht. Warum übergibt du den benötigten String nicht bei CreateProcess als zweiten Parameter.
ausblenden Delphi-Quelltext
1:
2:
CreateProcess(PChar(ExtractFilePath(Application.Exename)+'updater.exe'),'-startisMain',nil,nil,false,
                       NORMAL_PRIORITY_CLASS,nil,nil,aSI,aPI);

Auch ausm Kopf raus bin ich mir sicher, dass das so hinhaut.

Gruss Lothar

------EDIT
Jetzt glaub ich versteh ich doch. Du kannst im FormCreate Ereignis noch gar kein Close auslösen. Frühestens im OnShow
------EDIT

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
jolomino Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 58



BeitragVerfasst: Sa 26.03.05 21:47 
ich hab den parameter übergeben, das ist auch nicht das problem, aber wenn ich den updater mit der abfrage compilieren will kommt folgende meldung:

Zitat:
[Warnung] updater.pas(16): W1010 Methode 'Update' verbirgt virtuelle Methode vom Basistyp 'TWinControl'
[Fehler] updater.pas(120): E2015 Operator ist auf diesen Operandentyp nicht anwendbar
[Fataler Fehler] autoupdater.dpr(5): F2063 Verwendete Unit 'updater.pas' kann nicht compiliert werden


und im formcreate steht halt:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.FormCreate(Sender: TObject);
begin

If not ParamStr(1)='_startisMain' Then begin
Close;
end;

end.


und da ist das problem
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Sa 26.03.05 21:53 
Ja, manchmal dauerts halt ein bisschen bei den alten Säcken :mrgreen:

ausblenden Delphi-Quelltext
1:
2:
3:
If ParamStr(1) <> '_startisMain' Then begin
Close;
end;

Ändert aber trotzdem nix an meiner vorigen Aussage, dass das im FormCreate net funktioniert.

Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
jolomino Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 58



BeitragVerfasst: Sa 26.03.05 23:00 
ich muss erst weiter testen, ich bekomms echt nicht geschissen