AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Library: Sonstiges Delphi NT-Konsole in Vollbild oder aus Vollbild umschalten
Thema durchsuchen
Ansicht
Themen-Optionen

NT-Konsole in Vollbild oder aus Vollbild umschalten

Ein Thema von Olli · begonnen am 23. Aug 2005
Antwort Antwort
Olli
(Gast)

n/a Beiträge
 
#1

NT-Konsole in Vollbild oder aus Vollbild umschalten

  Alt 23. Aug 2005, 11:56
Folgendes Programm zeigt, wie man aus und in den Vollbildmodus umschalten kann, wenn man das Konsolenhandle hat.
Code:
program FSConTest;
{$APPTYPE CONSOLE}
uses
  Windows;

[color=red]type
  TFNGetConsoleDisplayMode = function( // [msdn]GetConsoleDisplayMode[/msdn] documented for W2K3
    var lpModeFlags: DWORD
    ): BOOL; stdcall;

  TFNSetConsoleDisplayMode = function( // [msdn]SetConsoleDisplayMode[/msdn] documented for W2K3
    hConsoleOutput: THandle;
    dwFlags: DWORD;
    var lpNewScreenBufferDimensions: COORD
    ): BOOL; stdcall;

const
  CONSOLE_FULLSCREEN_MODE = 1;
  CONSOLE_WINDOWED_MODE = 2;[/color]

var
[color=red] pfnGetConsoleDisplayMode: TFNGetConsoleDisplayMode = nil;
  pfnSetConsoleDisplayMode: TFNSetConsoleDisplayMode = nil;[/color]
  hKern32:THandle;
  newmode: COORD;
  hConsole: THandle;
begin
[color=red] hKern32 := GetModuleHandle('kernel32.dll');
  if(hKern32 <> 0) then
  begin
    @pfnGetConsoleDisplayMode := GetProcAddress(hKern32, 'GetConsoleDisplayMode');
    @pfnSetConsoleDisplayMode := GetProcAddress(hKern32, 'SetConsoleDisplayMode');[/color]
    if(not Assigned(@pfnGetConsoleDisplayMode))then
    begin
      Writeln('Could not retrieve function pointer for GetConsoleDisplayMode()');
      Exit;
    end;
    if(not Assigned(@pfnSetConsoleDisplayMode))then
    begin
      Writeln('Could not retrieve function pointer for SetConsoleDisplayMode()');
      Exit;
    end;
[color=red] end;[/color]
  // Retrieve current console handle
  hConsole := GetStdHandle(STD_OUTPUT_HANDLE);
  // Wait for input
  Write('Press ENTER to switch into fullscreen mode'); Readln;
  // Switch mode
  if(pfnSetConsoleDisplayMode(hConsole, CONSOLE_FULLSCREEN_MODE, newmode))then
  Writeln('Now we should be in fullscreen mode');

  // Wait for input
  Write('Press ENTER to switch into windowed mode'); Readln;
  // Switch mode
  if(pfnSetConsoleDisplayMode(hConsole, CONSOLE_WINDOWED_MODE, newmode))then
  Writeln('Now we should be in windowed mode');

  // Wait for input
  Write('Press ENTER to quit'); Readln;
end.
Die wichtigen Teile sind rot. Wenn Erklärungsbedarf besteht, bitte melden!

Die beiden benutzten Funktionen sind im MSDN dokumentiert, existieren aber mindestens seit Windows NT4 ohne SP. Man kann sie auf NT also getrost einsetzen. Einzig auf Windows 9x/Me existiert dieser Export nicht, weshalb man auch dynamisch die APIs holen sollte, statt sie statisch zu linken.
  Mit Zitat antworten Zitat
Antwort Antwort

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz