PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C++] Programm unsichtbar starten



Chris K.
26.09.2007, 17:22
Weiss jemand wie man ein programm unsichtbar starten kann , also so das die cmd box unsichtbar is.

Wenn man zum beispiel einen piepton abspielen will kann man das schwarze fenster ja einfach schliesssen und der ton geht aus, wie kann ich das machen das das fenster unsichtbar is sodass man es nicht so einfach beenden kann?

c4pone
26.09.2007, 18:10
ich glaub man kann das mit api machen indem einfach kein fenster fest legt
und dann mit

int höhe = 250 , Dauer = 1000000000000;
Beep(Frequenz,Dauer);
das beepen macht

vielleicht hilf dir das ein wenig weiter ^^

zao
26.09.2007, 20:16
das sollte dir helfen die Konsole zu verstecken



AllocConsole();
ShowWindow(FindWindowA("ConsoleWindowClass",NULL),0);

bei erklärung bedarf kannste dich ja melden


mfg

zao

lowrider
27.09.2007, 07:24
hier noch eine Variante von mir die auch ganz gut geht.



#define _WIN32_WINNT 0x0500
#include <windows.h>
#include <iostream>
int main()
{
HWND hWnd = GetConsoleWindow();
ShowWindow( hWnd, SW_HIDE );

return 0;
}

Allerdings ist es am sinnvollsten wenn man kein Fenster will das man keine Konsolenappli schreibt sondern eine Windows Anwendung ohne Forms.
Weil wenn du eine Konsolenanwendung machst wirst du ein kurzes Aufblitzen des Konsolenfensters nicht verhindern können.

greeZ

kiubiq
29.09.2007, 08:39
Wenn du Dev-C++ verwendest kannst du auch noch einstellen das er kein Konsolenfenster erzeugt. Das ist wie ich finde die einfachste Lösung.l

l0dsb
29.09.2007, 10:33
Allerdings ist es am sinnvollsten wenn man kein Fenster will das man keine Konsolenappli schreibt sondern eine Windows Anwendung ohne Forms.
Würde auch sagen, dass das die beste/gängigste Methode ist. Meistens werden auch Konsolenprogramme mit den WinApis realisiert, sofern es denn zwingend notwendig ist, ein Konsolenprogramm zu haben...

Normales Win32-Programm sähe dann ungefähr so aus:

#include <windows.h>
int __stdcall WinMain(HINSTANCE__ *Instance, HINSTANCE__ *PreviousInstance, unsigned char *CmdLine, unsigned int CmdShow)
{
return 0;
}

exodus407
01.10.2007, 18:00
also ich hab sowas schon mal gemacht und ich habs so gelöst

int main()
{
HWND beepzor;
beepzor=FindWindow("ConsoleWindowClass", NULL);
ShowWindow(beepzor, SW_HIDE);
for(;;)
{
Beep(50,50);
}
}

also wenn der user des PC's kein vollkommener Trottel ist dann würde er mit dem Taskmanager das programm beenden dazu könntest du natürlich noch die tastatur abfragen und wenn die taskmanager keys gedrückt sind dann soll er ihn beenden oder ganz primitiv gleich unter Beep(50,50);system("tskill taskmgr"); hin schreiben geht auch !

hoffe das hilft dir

mfg EXO

FormChanger
30.08.2008, 16:02
wie wärs denn miut FreeConsole(); ???

-[RiDER]-
31.08.2008, 02:54
Hi :)

Vielleicht bliebe es noch zu erwähnen, dass das kein Problem für C++ ist, sondern hat was mit der Laufzeitumgebung zu tun ;)

Für den gcc soll es wohl den dubiosen Compilerflag -mwindows geben, den habe ich aber noch nie getestet...
GreetZ RiDER :D :D: D

TiduS
31.08.2008, 18:18
So,jetzt codet man noch n Autostart Eintrag dazu und voilâ: fertig ist ein kleines,nerventötendes tool:-D