StartMenü verstecken (kein virus o.a. sondern spiel fullscreen)
-
Ich hätte gerne das StartMenü komplett ausgeschaltet. Also den StartButton auschalten ist keine Kunst und brauche ich auch nicht. Ich möchte nur das StartMenü ausschalten (also das Fensterchen das kommt wenn ich z.B. auf meine WindowsTaste drücke). Der Grund ist ganz einfach ich will, dass man im Fullscreen nix mehr machen kann ohne, dass man strg+alt+entf drückt oder das Spiel eben über das Spielmenü beendet.
Weiß jemand wie das geht?
-
0. Überlegen ob das eine wirklich eine gute Sache ist.
1. entsprechende Tastenkombinationen abfangen falls möglich.
2. Dem Startmenü seine Nachrichten abfangen und ggf. umleiten und eigenes 0x0 Pixel großes Fenster erzeugen und dahin das Startmenü packen.Falls du so eine Funktionalität bereitstellen möchtest, wäre es gut wenn diese optional und zuerst deaktivert ist. Denn falls dein Spiel hakt kommen die meisten vielleicht da nicht mehr raus.
-
Warum willst du das machen? Es ist ein Spiel! Und keine Software für eine Machinensteuerung, die auf keinen Fall unkontrolliert beendet werden darf. Stell dir vor Micrcosoft hätte das so bei Minesweeper gemacht.
Und wenn es auf einem öffentlich zugänglichen Rechner läuft, dann benutzt man eine Kiosk Software, um den Rechner "dicht" zu machen.
-
Das geht viel eleganter mit Desktops...
http://msdn.microsoft.com/en-us/library/ms687107%28v=vs.85%29.aspx
Zur erst Desktop erstellen mit
CreateDesktop(...)
Dann dem aktuellen Thread den Desktop zuweisen
SetThreadDesktop(...)
Dann auf den Desktop wechseln
SwitchDesktop(...)
Und am Ende den Desktop wieder schließen
CloseDesktop(...)
So macht das Microsft auch z.B. bei Strg + Alt + Entf und der UAC-Abfrage.
Allerdings überdeckt der Strg + Alt + Entf-Desktop eben alle andernen aus SicherheitsgründenDenke aber drüber nach, was passiert, wenn dein Programm abschmiert
Viele Grüße
Fabian
-
Das mit dem Programm abschmieren ist ein argument jedoch muss man auch sagen, dass es immernoch den taskmanager gibt welchen ma ja bekanntlich (gott sei dank) nicht deaktivieren kann. Doch das mit dem Desktop habe ich mir auch schon gedacht.
Hatte einmal mit c# damit herumexperimentiert. Doch eine Frage zu dem Thema hätt ich noch nämlich soweit ich mich errinnere bekommt man ja ne Art Handles der versch. Desktops. Was ist wenn das Programm dann abschmiert wie kommt man auf den ersten Desktop zurück? Denn dann geht ja das "Handle" verloren.
-
Du kannst jederzeit den Default Desktop öffnen, wenn du das meinst.
-
und wie geht das ohne selbst etwas zu programmieren?
-
Windows selbst bietet dazu keine Möglichkeit.
-
Erzeug dir dein fenster doch gleich im "fullscreen modus"
Bei mir funktioniert das recht angenehm:
int width = 800, // default groesse / position height = 600, posX = 100, posY = 100; DWORD dwExStyle = WS_EX_APPWINDOW | WS_EX_WINDOWEDGE, dwStyle = WS_OVERLAPPEDWINDOW; // Setup screen settings if( fullscreen ) { DEVMODE dmScreenSettings; // fenstergroesse der bildschirmaufloessung anpassen width = (GetSystemMetrics(SM_CXSCREEN); height = (GetSystemMetrics(SM_CYSCREEN); memset(&dmScreenSettings, 0, sizeof(dmScreenSettings)); dmScreenSettings.dmSize = sizeof(dmScreenSettings); dmScreenSettings.dmPelsWidth = (unsigned long)width; // screen width dmScreenSettings.dmPelsHeight = (unsigned long)height; // screen height dmScreenSettings.dmBitsPerPel = 32; // bits per pixel dmScreenSettings.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT; // display settings auf full screen stellen if (ChangeDisplaySettings(&dmScreenSettings, CDS_FULLSCREEN) != DISP_CHANGE_SUCCESSFUL) { // display mode failed zurueck zum windowed MessageBox(NULL, L”kein fullscreen mode moeglich”, “Oh, oh..”, MB_OK); fullscreen = false; } // x und y position ganz in die ecke posX = posY = 0; } // immernoch fullscreen? if( fullscreen ) { dwExStyle = WS_EX_APPWINDOW; // Window Extended Style dwStyle = WS_POPUP; // Windows Style } // fenster erzeugen OutputWnd = CreateWindowEx( dwExStyle, lpszClassName, lpszClassName, dwStyle, posX, posY, width, height, NULL, NULL, hInstance, NULL); // habe fertig
wenn du jetzt auf die windowstaste kommst passiert gar nix.
alt+tab funktioniert noch ( sollte kein problem darstellen )
windows + tab funktioniert nochsollte eigentlich die lösung sein die du gesucht hast wenn du ein spiel im fullscreen mode erstellen willst. Das deaktivieren von alt + tab / windows + tab würde ich dem user vorbehalten...
happy coding