Autor Beitrag
Aya
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Do 10.09.09 15:51 
Hi,

ich muß ein programm via Command line starten, der aufruf dafür sieht so aus:

start "theProgram" /wait c:\theProgram\theProgram.exe -s -t

es muß leider zwingend via start mit /wait aufgerufen werden, wenn ich es nur so aufrufe:

c:\theProgram\theProgram.exe -s -t

komme ich sofort wieder in die commando zeile zurück, obwohl das programm noch arbeitet.. bei start /wait komme ich erst dann wieder zurück wenn das Programm wirklich fertig ist.

So, das problem ist jetzt.. im moment starte ich das einfach via System("start ...");
Das klappt auch, aber ich möchte gern das Fenster welches aufgeht von dem fremden programm verstecken.. aber das geht bei System() nicht.


Hat irgendwer eine idee wie ichdas mit ShellExecute oder CreateProcess hinbekomme?

Aya~

_________________
Aya
I aim for my endless dreams and I know they will come true!
platzwart
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: Do 10.09.09 15:58 
ausblenden Delphi-Quelltext
1:
RunConsoleApp("start "theProgram" /wait c:\theProgram\theProgram.exe -s -t");					

_________________
Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
Aya Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Do 10.09.09 16:02 
user profile iconplatzwart hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
RunConsoleApp("start "theProgram" /wait c:\theProgram\theProgram.exe -s -t");					


Öhm.... mal davon abgesehen das ich zu dem befehl nichts finde bei google, wo soll ich da das erreichen können das das Fenster nicht angezeigt wird? Etwas á la SW_HIDE sehe ich da nicht.

Aya

PS: Ich nutze btw C++, nicht Delphi.

_________________
Aya
I aim for my endless dreams and I know they will come true!
thepaine91
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: Do 10.09.09 16:06 
theprogram.exe -s -t nennt sich sicher auch shutdown.exe o. ? ^^
Aya Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Do 10.09.09 16:11 
user profile iconthepaine91 hat folgendes geschrieben Zum zitierten Posting springen:
theprogram.exe -s -t nennt sich sicher auch shutdown.exe o. ? ^^

Ja, unbedingt..

Wenn du es genau wissen willst:
ausblenden Quelltext
1:
start "neatimage" /wait C:\Programme\NeatImage\NeatImage.exe input.tif output.tif -ap -sl					


:roll:

_________________
Aya
I aim for my endless dreams and I know they will come true!
platzwart
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: Do 10.09.09 16:13 
Sorry, war für Delphi und läuft im Hintergrund...

_________________
Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 10.09.09 22:17 
user profile iconthepaine91 hat folgendes geschrieben Zum zitierten Posting springen:
theprogram.exe -s -t nennt sich sicher auch shutdown.exe o. ? ^^

Das ist Aya, und der ist bestimmt kein Scriptkiddy.
thepaine91
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: Fr 11.09.09 08:59 
Luckie hab ich mit keinem Wort gesagt wenn das so rüber kam sorry Aya.

Durch dein Beispiel sah es nur einfach danach aus. :oops:
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 11.09.09 09:36 
start /wait macht doch vermutlich nicht viel anderes als diese Quelltexte:
www.delphi-library.d...ewtopic.php?p=470058
www.delphipraxis.net...st722533.html#722533
Ich vermute, dass du dann das damit ganz normal aufrufen kannst, oder?
Lossy eX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1048
Erhaltene Danke: 4



BeitragVerfasst: Fr 11.09.09 10:03 
Also eines finde ich etwas verwirrend. Hast du da jetzt so was wie eine Batch oder ist das Bestandteil eines Programmes von dir?

Wenn du das aus deinem Programm herraus startest, dann kannst du CreateProcess benutzen und die Anwendung direkt starten. Ohne Umweg über Start. Zum Warten musst du dann nur das ProcessHandle an WaitForObject übergeben. Dann hättest du auch noch die Möglichkeit, dass deine Anwendung nach wie vor noch erreichbar bliebe. Bzw dass du im Falle des Falles die andere Anwendung dann noch abschießen könntest.

Außerdem könntest du mit CreateProcess einen ShowMode angeben. An CreateProcess muss ein StartupInfo übergeben werden. In diesem Info gibt es ein Feld wShowWindow. Dieses enthält einen ShowMode. Der wird aber nur benutzt, wenn STARTF_USESHOWWINDOW in dwFlags enthalten ist. ABER. Ob das jetzt die Lösung aller Probleme ist, lasse ich mal dahingestellt. Denn das sorgt nur dafür dass der erste Aufruf von ShowWindow ignoriert wird und anstelle dessen der übergebene Modus benutzt wird. Ein mehrfaches Aufrufen oder ein zweit oder drittfenster würden nicht beeinflusst werden. Calc ignoriert zum Beispiel das ShowWindow wärend notepad (u. ++) das nicht tut.

Hier mal ein Beispiel. Und ja ich weiß, dass das pascal ist.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
var
  StartupInfo: TStartupInfo;
  ProcessInfo: TProcessInformation;
begin
  FillChar(StartupInfo, SizeOf(StartupInfo), 0);
  StartupInfo.cb := SizeOf(StartupInfo);
  StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
  StartupInfo.wShowWindow := SW_HIDE;

  if not CreateProcess('C:\WINDOWS\system32\notepad.exe'nilnilnil, True, 0nilnil, StartupInfo, ProcessInfo) then
    RaiseLastOSError;

  WaitForSingleObject(ProcessInfo.hProcess, INFINITE);

  CloseHandle(ProcessInfo.hProcess);
  CloseHandle(ProcessInfo.hThread);
end;


[edit] Argh ein bisschen langsam. Aber gibt sich vom prinzip her nichts.

_________________
Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
Aya Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Fr 11.09.09 11:31 
Hi,

danke euch - das mit waitForSingleObject war die Lösung :)

Danke~

Aya

_________________
Aya
I aim for my endless dreams and I know they will come true!