system im Hintergrund
-
Hallo,
ich habe ein Programm das eine Dinge mit hilfe von system() ausführt. (Netzlaufwerk verbinden/trennen // ping...)
Jetzt erscheint ja immer kruz das schwarze cmd fenster und verschwindet wieder..
Lieder wäre es nir aber, wenn dies im Huntergund ablaufen würde. Gibt es da eine Möglichkeit?Danke
-
ShellExecute(NULL, "open", "cmd", "Hier deine cmd Befehle", NULL, SW_HIDE);
Gruß
:: NoName ::
-
Danke,
noch ne kleine Frage:
laut msdn gibt die Funktion eine HINSTANCE zurück. Das sagt mir leider garnichts :)) wie kann ich denn damit arbeiten..
system hat ja einfach nen int zurückgegeben..
-
Was willst du denn mit dem Rückgabewert machen, wie es mir scheint willst du den Inhalt der CMD kriegen... ?
Gruß
:: NoName ::
-
ich würde gerne wissen, ob der befehl erfolgreich ausgeführt wurde (vor allem bei ping
-- wenn ich micht nicht irre hat system("ping xyz.de") 0 zurückgegeben, wenn er den Zielhost erreicht hat und 1 wenn nicht...
-
Hmm, einen Integer Wert kannst du anscheinend bei ShellExecute nicht erhalten...zumindest kenn ich keine Lösung!
Gruß
:: NoName ::
-
was ist denn diese HINSTANCE?? kann ich damit etwas anfangen?
-
hmm hmm..
noch mal ne frage
warum geht das nicht:ShellExecute(NULL, "open", "cmd", "net use L: \\\\Dheinze2\\C", NULL, SW_HIDE);
und das geht:
system("net use L: \\\\Dheinze2\\C");
danke
-
habe gerade mal einfach was anderes in den shellexecute befehl geschrieben und ihn auf SHOWNORMAL gestellt und dabei festegstellt, dass sich nur das cmd fenster öffnet, aber keine befehle ausgeführt werden.. woran kann das denn liegen?
-
Warum das nicht funktioniert, kann ich dir nicht sagen. Ich kann dir aber sagen, was funktioniert. Ist auch eleganter, weil sich _kein_ Konsolenfenster öffnet. *g*
ShellExecute(NULL, "open", "net", "use L: \\\\Dheinze2\\C", NULL, SW_HIDE);
-
cool danke, das funktioniert soweit sehr gut..
aber wie machst du dass dann z.b. mit ping? bei system liefert das ja einen int wert zurück, mit dem man arbeiten kann.
-
Mit CreateProcess() kannst du den ExitCode des Prozesses abfragen. Vielleicht ist das ja was für dich?
-
habe gerade noch was in der MSDN gefnuden :
[msdn]The only thing that can be done with .the returned HINSTANCE is to cast it to an int and compare it with the value 32 or one of the error codes below.[/msdn]was bedeutet das denn?..
dann könnte ich ja z.b.ShellExecute(NULL, "ping", "cmd", "192.160.0.1", NULL, SW_HIDE);
mit 32(erfolgreich) vergleichen und hätte mein ergebnis
jetzt weiß ich nur nicht wie ich die HINSTANCE nutzen kann