Ist das aus dem anderen Progrmm aufzurufende Programm ein Win32-Konsolenprogramm oder ein Win32-GUI-Programm ? Nur die ersteren öffnen automatisch (ohne AllocConsole() im Programm) eine Konsole, die letzteren bloß ihr (Haupt-)Fenter, wenn sie eins haben (kann auch versteckt sein, z.B. mit
HWND hwnd; /* Fensterhandle */
/* ... */
HideWindow(hwnd);
wobei das Handle auch ein Fenster eines anderen Prozesses bezeichnen kann , unter Außerachtlassung von Sicherheitsfragen ).
Hoffentlich sind diese Informationen nützlich zur Lösung des Problems.
Mit freundlichen Grüßen
WirklicheKonsole
Habe das jetzt im Prinzip auch so gemacht, SideWinder. Ich benutze jetzt in einem MFC-Projekt eine Dialogklasse, in die ist das alles eingebettet. Das fenster ist unsichtbar, erzeugt ein Icon in der Traybar und per Mausklick kann man ein Menue öffnen, mit dem man den Server beenden kann. das funzt gut, nur mit einer reinen Konsolenanwendung war das wohl nicht mehr zu machen.
Ein Server braucht ja auch nicht wirklich eine Konsole, oder? Alle wichtigen Meldungen stehen im Logfile und beim Client auf dem Bildschirm. Die methode hat allerdings den Vorteil, dass der gesamte Kernprozess bei entsprechender Programmierung nach Standard wesentlich leichter portierbar ist. Die beiden benötigten MFC-Klassen sind ja nur als 'Wrapper' außen rumgelegt. Die starten dann den Server in einem eigenen Thread und so können beide ihre Arbeit tun und stören sich nicht.
Ich wünsche euch nen guten Rutsch und ein erfolgreiches Jahr 2005.
Tschö
arni
Ihr verwechselt gerade die DOS/Unix-Funktion sleep() mit der WinAPI-Funktion Sleep()!
Siehe dazu auch in der Konsolen-FAQ "[DOS] Pause- oder Warte-Funktion" im Vergleich zu "[Win32] P...".
MfG SideWinder
Ja schönen Dank erstmal !!!
Jetzt ist mir das auch klar!!
Gute Beschreibung danke!
Also das mit den schleifen war nen Denk fehler!
Naja jedenfalls klapts nu!
Gruß Tobias
recht hast du, schwer tue ich mich da schon, habe schon erwogen, einen 'winmain()-Wrapper' drumherum zu bauen, der die main() von der Konsole aufruft, dann hätte ich ein Fenster und Messages zur Verfügung. Du hast in einem Beitrag so etwas mal beschrieben:
[url]
http://c-plusplus.net/forum/viewtopic.php?t=76883&highlight=showwindow
[/url]
Wäre doch eine Möglichkeit, oder? Dann gäbe es auch eine möglichkeit auf einen Click auf das Icon in der tray-bar zu reagieren.
Wenn ich die msdn richtig interpretiere, sollte das Schließen über den Taskmanager auch ein Signal ergeben. Gibts aber nur, wenn man das auf der Registerkarte 'Anwendungen' macht, wenn man über die Registerkarte 'Prozesse' beendet, gibts anscheinend gar nix.
[msdn]
CTRL_CLOSE_EVENT
A signal that the system sends to all processes attached to a console when the user closes the console (either by clicking Close on the console window's window menu, or by clicking the End Task button command from Task Manager).
[/msdn]
Vieleicht doch noch eine Idee irgendwo 'out there'?
Danke, Arni
unter windows würde ich sagen, schau mal in die msdn unter systeminformation
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/system_information_functions.asp
und im winapi forum nach schon ähnlich gestellten fragen.
obs dazu fertige libraries gibt, hmm ...
also wenn man eine "ganz normale Winapplikation" programmiert und dann unter den Linkeroption als Ausgabe die Konsole einstellt dann ist es möglich (ob mit jedem Compiler&Linker, das kann ich nicht sagen). Dann kann man mit StdOut text auf Konsole ausgeben und gleichzeitig eine Fenstermeldung machen
Hi AJ!
Meine Vermutung hat sich bestätigt, ich habe das ganze auf einer DOS - Maschine laufen und es geht. Es lag also an der emulierten DOS-BOX.
Trotzdem vielen Dank.
Dieser Thread wurde von Moderator/in Nobuo T aus dem Forum Assembler in das Forum DOS und Win32-Konsole verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?
Dieses Posting wurde automatisch erzeugt.
Ich filtere dann schon mittlerweile... Nur ich tue mich mit dieser blöden Rekusrion unwahrscheinlich schwer. Aber das wird noch... Da gebe ich nicht auf
Interessant, meinst Du eine Funktion in einer separaten Datei? Das müsste nämlich schon so sein, weil es um verschiedene Bussysteme geht, aber die main.exe immer gleich bleiben soll, so dass jemand, der das später bedient, sich nicht mehr damit herumschlagen muss. Ich danke Dir für deine Ideen und Erläuterungen, muss mich aber bis zum nächsten Jahr verabschieden, weil ich nicht vor dem 03.01.05 dazu komme nochwas an dem Programm zu machen (die Uni hat zu ). Dann allerdings würde ich diesen Dialog gerne wieder aufnehmen, wenn ich noch Fragen hab. Dann schöne Feiertage an alle!
VG, larsen
SideWinder schrieb:
Da kanns dann am Ende auch noch passieren, dass eine Mischung auftritt -> dumme Sache dann
ich würde es auch keinem empfehlen, der nicht genau weiß, was er tut.
ich hatte z.b mal einen memory manager geschrieben, der alle new's und delete's auf alloc's und free's abgebildet hat; alles andere war aber komplett c++.