Einzelnen Beitrag anzeigen

Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#1

Konsolenanwendung, Schriftgröße ändern

  Alt 20. Aug 2011, 14:29
Merkwürdig das Ganze ... ich kann auf einmal nicht mehr die Schriftgröße meiner eigenen Konsolenanwendung per API ändern. Die Anwendung selbst ist eine 32bit-Anwendung, das Windows ist ein 64bit-System - dennoch sollte dies möglich sein.

Ich habe mir folgende Dinge definiert (Quelle == MSDN):
Delphi-Quellcode:
  COORD = record
    X, Y: smallint;
  end;

  TCONSOLE_FONT_INFOEX = record
    cbSize : cardinal;
    nFont : longword;
    dwFontSize : coord;
    FontFamily : cardinal;
    FontWeight : cardinal;
    FaceName : array[0..LF_FACESIZE-1] of WideChar;
  end;
  PCONSOLE_FONT_INFOEX = ^TCONSOLE_FONT_INFOEX;



  function SetCurrentConsoleFontEx( ConsoleOutput : THandle; MaximumWindow : BOOL; ConsoleInfo: PCONSOLE_FONT_INFOEX ) : BOOL; external kernel32 name 'SetCurrentConsoleFontEx';
  function GetCurrentConsoleFontEx( ConsoleOutput : THandle; MaximumWindow : BOOL; ConsoleInfo: PCONSOLE_FONT_INFOEX ) : BOOL; external kernel32 name 'GetCurrentConsoleFontEx';

Und nun versuche ich Folgendes:
Delphi-Quellcode:
procedure SetConsoleFont( const AFontSize : word );
var ci : TCONSOLE_FONT_INFOEX;
    ch : THandle;
begin
  if NOT CheckWin32Version( 6, 0 ) then
    EXIT;

  FillChar( ci, SizeOf(TCONSOLE_FONT_INFOEX), 0 );
  ci.cbSize:= SizeOf(TCONSOLE_FONT_INFOEX);

  ch:= GetStdHandle( STD_OUTPUT_HANDLE );
  if GetCurrentConsoleFontEx( ch, FALSE, @ci ) then
  begin
    ci.FontFamily:= FF_DONTCARE;
    //ci.FaceName:= 'Lucida Console';
    ci.FaceName:= 'Consolas';
    ci.dwFontSize.X:= 0;
    ci.dwFontSize.Y:= AFontSize;
    ci.FontWeight:= FW_BOLD;
    SetCurrentConsoleFontEx( ch, FALSE, @ci );
  end
  else
    WriteLn( SysErrorMessage(GetLastError) );
end;
Mein Aufruf lautet dann SetConsoleFont( 32 ); . In der Zeile, in der "GetCurrentConsoleFontEx" aufgerufen wird, knallt es mit einer Schutzverletzung. Jemand 'ne Idee, was das sein könnte?
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat