Eigenes Konsolenfenster verstecken

TimSz

Mitglied
Hi,

Ich möchte, dass mein Programm im Hintergrund läuft (z.B. als Server), d.h. dass die Konsole nicht angezeigt werden soll.
Ich hätte gerne möglichst einfachen Code, d.h. wenns geht C, wenn nicht C++, ansonsten halt mit MFC.

Gruß

Tim
 
moin


MFC brauchst du nicht, sondern nur ein Handle des eigenen Fensters und dann kanns losgehen, also:
Code:
SetConsoleTitle("MeinProgramm");
HWND hMeinFenster = FindWindow(NULL, "MeinProgramm");

ShowWindow(hFenster, SW_HIDE);
Wenn du den Code einbaust kommst du nur noch per TaskManager ran!


mfg
umbrasaxum
 
Hi,

Danke für den Tipp!
Zuerst lies sich das Programm nicht kompilieren, doch dann habe ich #include <windows.h> eingefügt.

Ich fürchte es gibt auch keine einfachere Methode, womit es betriebssystemunabhängig funktioniert?!

Gruß

Tim
 
moin


Betriebssystem unabhängig wird da sehr schwierig, wenn du willst könnte ich dir auch noch zeigen wie du es unter Win in den Tray bekommst, noch mehr Möglichkeiten fallen mir da grad nciht ein.


mfg
umbrasaxum
 
Hi,

Ja, das wär auch toll!

Ich hoffe, es ist nicht zu kompliziert und macht dir nicht zu viel Arbeit.

Gruß

Tim
 
moin


Hmm ja, arbeit ist das nicht. Allerdings geht das doch nciht so einfach, man kann es zwar in den Tray packen, aber nciht wieder "erscheinen lassen". Unmöglich ist das eigentlich auch nciht, aber wird sehr aufwendig.
Code:
#include <windows.h>

void Icon_in_Taskleiste (HWND hwnd, BOOL bAnzeigen)
{
	NOTIFYICONDATA tsym;
    ZeroMemory (&tsym, sizeof (NOTIFYICONDATA));

	if (bAnzeigen)
	{
		tsym.cbSize = sizeof (NOTIFYICONDATA);
		tsym.hWnd   = hwnd;
		tsym.uID    = 1;
		tsym.uFlags = NIF_ICON | NIF_TIP | NIF_MESSAGE;
		tsym.uCallbackMessage = WM_APP;
		//tsym.hIcon  = hIcon;
		strcpy (tsym.szTip, "Mein Programm...");
		Shell_NotifyIcon (NIM_ADD, &tsym);
	}

	else
	{
		tsym.cbSize = sizeof (NOTIFYICONDATA);
		tsym.hWnd   = hwnd;
		tsym.uID    = 1;
		tsym.uFlags = 0;
		Shell_NotifyIcon (NIM_DELETE, &tsym);
	}
	return;
}

int main()
{
	SetConsoleTitle("MeinProgramm");
	HWND hMeinFenster = FindWindow(NULL, "MeinProgramm");

	Icon_in_Taskleiste(hMeinFenster, 1);
	ShowWindow(hMeinFenster, SW_HIDE);

	return 0;
}


mfg
umbrasaxum
 
Zuletzt bearbeitet:
hi leute...

also ich hab wie beschirben mein konsolen programm versteckt, aber es wird beim ausführen immer noch kurz angezeigt. also für die dauer die es braucht um hwnd zu finden denk ich mal.

kann ich das prog net minimiert oder komplett versteckt starten?

ich hab den code einfach in die tmain gepackt ;)

sry bin noch newbie

mfg
 
wenn du das konsolenfenster ganz weg haben möchtest, kannst du einfach in deinen compiler optionen das fenster nicht mit kompelieren lassen.

Bei Bloodshed Dev-C++ findest du die funktion unter werkzeuge=>compiler optionen=>einstellungen=>linker
 
moin


MFC brauchst du nicht, sondern nur ein Handle des eigenen Fensters und dann kanns losgehen, also:
Code:
SetConsoleTitle("MeinProgramm");
HWND hMeinFenster = FindWindow(NULL, "MeinProgramm");

ShowWindow(hFenster, SW_HIDE);
Wenn du den Code einbaust kommst du nur noch per TaskManager ran!


mfg
umbrasaxum

Ehm... Hallo erstmals.... Ich hab das Problem das dies bei mir nicht funktioniert :/....

Das wären die Fehlermeldungen:

Code:
||=== Build: Release in boot (compiler: GNU GCC Compiler) ===|
C:\Users\Marcel\Desktop\AdSoleWare Development\AdSoleWare Application\adsoleware\boot\main.cpp||In function 'int main()':|
C:\Users\Marcel\Desktop\AdSoleWare Development\AdSoleWare Application\adsoleware\boot\main.cpp|21|error: 'hFenster' was not declared in this scope|
C:\Users\Marcel\Desktop\AdSoleWare Development\AdSoleWare Application\adsoleware\boot\main.cpp|19|warning: unused variable 'hMeinFenster' [-Wunused-variable]|
||=== Build failed: 1 error(s), 1 warning(s) (0 minute(s), 0 second(s)) ===|
 
Ehm... Hallo erstmals.... Ich hab das Problem das dies bei mir nicht funktioniert :/....

Das wären die Fehlermeldungen:

Code:
||=== Build: Release in boot (compiler: GNU GCC Compiler) ===|
C:\Users\Marcel\Desktop\AdSoleWare Development\AdSoleWare Application\adsoleware\boot\main.cpp||In function 'int main()':|
C:\Users\Marcel\Desktop\AdSoleWare Development\AdSoleWare Application\adsoleware\boot\main.cpp|21|error: 'hFenster' was not declared in this scope|
C:\Users\Marcel\Desktop\AdSoleWare Development\AdSoleWare Application\adsoleware\boot\main.cpp|19|warning: unused variable 'hMeinFenster' [-Wunused-variable]|
||=== Build failed: 1 error(s), 1 warning(s) (0 minute(s), 0 second(s)) ===|

Okay ich habe eine einfache Lösung °0° .... Es klappt schon wenn man 'FreeConsole();' eingibt also dem Code beifügt ^^ ....
 
Zurück