Programm als Hintergrundprozess?
-
Hallo. Ich habe eine DirectDraw Vollbild Anwendung. Wenn ich daraus ein externes Hilfsprogramm aufrufen will, dann verliert die DirectDraw Anwendung den Focus und minimiert sich in den Task. Hat hier jemand Tipps oder Links wie man Hilfsprogramme so schreiben kann, dass diese niemals einen Focus erhalten, sondern unsichtbar im Hintergrund agieren?
Meine Hilfsprogramme schreibe ich mit C++Builder2009. Die DirectDraw Anwendung ist ein altes (aber sehr umfangreiches) Programm aus VisualC++6 Zeiten.
-
Hallo
Wenn dein Hilfsprogramm sowieso unsichtbar sein soll, dann verwende kein VCL-Projekt sondern eine normale Win32-Anwendung.
bis bald
akari
-
Eine Win32 Anwendung erhält nach Start keinen Focus? Es öffnet sich doch trotzdem das Konsolenfenster und damit hat dieses den Fokus.
Das Hilfsprogramm soll per Parameter und damit unsichtbar aus der DirectDraw Anwendung gestartet werden, etwas abarbeiten und sich beenden. Wenn man es außerhalb aufruft, dann soll man ein Fenster mit Eingabefelder erhalten. Ich benötige also schon die VCL, zumal ich hier auf die Hilfe von Komponenten angewiesen bin, da die Anwendung PDF, XLS und andere Dokumente erstellen soll.
-
Hallo
Eine Win32-Anwendung sollte von sich aus keine Konsole öffnen. Allerdings sehe ich im Projekt-Dialog meines Builder 5 gerade keine passende Vorgabe dafür. Der "Konsolen-Experte" ist jedenfalls nicht geeignet. Am einfachsten machst du ein normales VCL-Projekt auf und bearbeitest dann in der Haupt-Quellcode-Datei "Project1.cpp" direkt die WinMain-Funktion so um, das eben gar nicht erst die VCL-Application initialisiert und gestartet wird.
bis bald
akari
-
Da kann ich dir so schnell leider nicht ganz folgen.
Wenn ich die Zeile
Application->CreateForm(__classid(TForm1), &Form1);
auskommentiere, passiert logischerweise insgesamt gar nichts mehr, da alles in TForm1 nicht ausgeführt wird. Wie greife ich denn jetzt dort auf die Funktionen aus meiner Form zu, damit diese die Daten abarbeiten und die Ausgaben erzeugen?
In TForm1 liegen ja meine Komponenten und in der form1.cpp meine Funktionen um damit was zu machen. Wäre super wenn man das lösen kann, so das ich mit und ohne Form die Anwendung aufrufen kann.
-
Hallo
Du wolltest ein Programm das "unsichtbar im Hintergrund" arbeitet. Ein solches Programm hat natürlich gar kein Form und braucht auch keine Ausgabe auf der GUI.
Schreib dein VCL-Programm so um, das alle relevante Logik aus dem Form in normale Funktionen verschoben wird. Aus der WinMain werden dann wie in einem Konsolenprogramm die Logik-Funktionen aufgerufen. Keine Ausgabe oder Eingabe auf der GUI, egal ob Konsole oder Fenster.
bis bald
akari
-
beim C++ Builder2009 sollte es doch so gehen:
- neues Projekt -> Konsolenanwendung
- im aufgehenden Fenster den Hacken bei "Konsolenanwendung" rausnehmen.so hat man keine Konsole beim Programmstart.
-
Um dann zur Entwurfszeit trotzdem bequem mit Komponenten hantieren zu können, kannst du deiner Anwendung anstelle der Form ein DataModule hinzufügen.
-
Mache:
1. Hauptform Visible = false
2. In Projekt.cpp Application->ShowMainForm = false;
3. VOR ...Run():
Postmessage(Hauptform->Handle,WM_ACTIVATE,WA_ACTIVE,0);Voila