shellprogramm ohne oberfläche?
-
hi all!
Wie schafft man es eigentlich ein Konsolenprogramm zu schreiben bei dem die Konsole nicht "aufpoppt" ? z.B. bei Programmen die im Hintergrund laufen?
herzlichen Dank
-
indem man keine Konsolenanwendung schreibt. :p Wüßte jetzt nicht was das hier anstatt im Winapi-Forum zu suchen hat ...
-
hab aber schon mal gehört das man die konsole irgendwie unterdrücken kann (man sieht das schwarze Kastl also nicht)
lg
01
-
Das geht mit hilfe der Winapi:
#include "stdafx.h" #include "windows.h" #include <string> #include <iostream> using namespace std; int main(int argc, char* argv[]) { std::string str("\""); str += argv[0]; str += "\""; cout << str.c_str() << endl; HWND hwnd = ::FindWindow(NULL,str.c_str()); ::ShowWindow(hwnd,SW_HIDE); ::MessageBox(hwnd,"test2","test",MB_OK); ::ShowWindow(hwnd,SW_SHOW); return 0; }
Devil
-
ah werd ich gleich mal ausprobieren...
danke devil
-
So kompliziert muss das gar nicht sein -> siehe FAQ. Du kannst das Programm auch als Dienst laufen lassen (etwas komplizierter).
MfG SideWinder
-
1001101 schrieb:
hab aber schon mal gehört das man die konsole irgendwie unterdrücken kann (man sieht das schwarze Kastl also nicht)
Trotzdem, wenn du gar keinen schwarzen Kasten sehen willst, macht es keinen Sinn ihn zuerst zu erstellen um ihn dann zu unterdrücken.
-
Sowas hat eigentlich nur Sinn, wenn man eine DOS-Funktion im Programm benutzen will, dann ist es eigentlich klar das man das Fenster nicht aufblitzen sehen will. Dafür gibt es dann ja aber Hide (zumindest in C#).
Code-Hacker
-
hm? Wenn du ein richtiges DOS-Programm schreibst, bekommst du die Konsole garnicht weg (jedenfalls nicht aus dem DOS-Programm heraus).
-
@DrGreen
Ist ja auch klar. DOS ist im Normalfall schließlich nicht multithreadfähig. Du könntest das Programm höchstens durch einen Interrupt immer wieder aufrufen lassen, um dadurch das Abarbeiten im "Hintergrund" zu ermöglichen. Aber ob das in Windows dann auch funktioniert??