Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-11-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.142
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

El hilo como para enmarcarlo. Casualmente tenía por aquí algo guardado...

Código Delphi [-]
program Project1;

{$APPTYPE CONSOLE}

uses
  Windows,
  Messages,
  SysUtils;

{
   There is no documented way to make a console application fullscreen.
   The following code works for both NT and Win9x.
   For win NT I used the undocumented SetConsoleDisplayMode and
   GetConsoleDisplayMode functions.
}


{
   Es gibt dokumentierte Möglichkeit, eine Konsolen-Anwendung per Code
   in den Vollbild Modus zu setzen.
   Folgender Code funktioniert unter NT und Win9x.
   Unter NT werden die undokumentierten SetConsoleDisplayMode und
   GetConsoleDisplayMode Funktion verwendet.
}

{
 function GetConsoleDisplayMode(var lpdwMode: DWORD): BOOL; stdcall;
   external 'kernel32.dll';
  // lpdwMode: address of variable for current value of display mode
}

function NT_GetConsoleDisplayMode(var lpdwMode: DWORD): Boolean;
type
  TGetConsoleDisplayMode = function(var lpdwMode: DWORD): BOOL;
  stdcall;
var
  hKernel: THandle;
  GetConsoleDisplayMode: TGetConsoleDisplayMode;
begin
  Result := False;
  hKernel := GetModuleHandle('kernel32.dll');
  if (hKernel > 0) then
  begin @GetConsoleDisplayMode :=
      GetProcAddress(hKernel, 'GetConsoleDisplayMode');
    if Assigned(GetConsoleDisplayMode) then
    begin
      Result := GetConsoleDisplayMode(lpdwMode);
    end;
  end;
end;

{
  function SetConsoleDisplayMode(hOut: THandle; // standard output handle
  dwNewMode: DWORD;         // specifies the display mode
  var lpdwOldMode: DWORD    // address of variable for previous value of display mode
  ): BOOL; stdcall; external 'kernel32.dll';
}

function NT_SetConsoleDisplayMode(hOut: THandle; dwNewMode: DWORD;
  var lpdwOldMode: DWORD): Boolean;
type
  TSetConsoleDisplayMode = function(hOut: THandle; dwNewMode: DWORD;
  var lpdwOldMode: DWORD): BOOL;
  stdcall;
var
  hKernel: THandle;
  SetConsoleDisplayMode: TSetConsoleDisplayMode;
begin
  Result := False;
  hKernel := GetModuleHandle('kernel32.dll');
  if (hKernel > 0) then
  begin @SetConsoleDisplayMode :=
      GetProcAddress(hKernel, 'SetConsoleDisplayMode');
    if Assigned(SetConsoleDisplayMode) then
    begin
      Result := SetConsoleDisplayMode(hOut, dwNewMode, lpdwOldMode);
    end;
  end;
end;

function GetConsoleWindow: THandle;
var
  S: AnsiString;
  C: Char;
begin
  Result := 0;
  Setlength(S, MAX_PATH + 1);
  if GetConsoleTitle(PChar(S), MAX_PATH) <> 0 then
  begin
    C := S[1];
    S[1] := '$';
    SetConsoleTitle(PChar(S));
    Result := FindWindow(nil, PChar(S));
    S[1] := C;
    SetConsoleTitle(PChar(S));
  end;
end;

function SetConsoleFullScreen(bFullScreen: Boolean): Boolean;
const
  MAGIC_CONSOLE_TOGGLE = 57359;
var
  dwOldMode: DWORD;
  dwNewMode: DWORD;
  hOut: THandle;
  hConsole: THandle;
begin
  if Win32Platform = VER_PLATFORM_WIN32_NT then
  begin
    dwNewMode := Ord(bFullScreen);
    NT_GetConsoleDisplayMode(dwOldMode);
    hOut := GetStdHandle(STD_OUTPUT_HANDLE);
    Result := NT_SetConsoleDisplayMode(hOut, dwNewMode, dwOldMode);
  end
  else
  begin
    hConsole := GetConsoleWindow;
    Result := hConsole <> 0;
    if Result then
    begin
      if bFullScreen then
      begin
        SendMessage(GetConsoleWindow, WM_COMMAND, MAGIC_CONSOLE_TOGGLE, 0);
      end
      else
      begin
        // Better solution than keybd_event under Win9X ?
        keybd_event(VK_MENU, MapVirtualKey(VK_MENU, 0), 0, 0);
        keybd_event(VK_RETURN, MapVirtualKey(VK_RETURN, 0), 0, 0);
        keybd_event(VK_RETURN, MapVirtualKey(VK_RETURN, 0), KEYEVENTF_KEYUP, 0);
        keybd_event(VK_MENU, MapVirtualKey(VK_MENU, 0), KEYEVENTF_KEYUP, 0);
      end;
    end;
  end;
end;

begin

  SetConsoleFullScreen(true);
  Readln;
  SetConsoleFullScreen(false);

end.
Responder Con Cita
  #2  
Antiguo 03-11-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Hola,
parece ser que mi desconfianza (aunque algo acertada) esta generando la polemica. Pido disculpas, por si sirve para algo y espero que Gallet al menos haya entendido algo. saludos.
Responder Con Cita
  #3  
Antiguo 03-11-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Sinceramente me molesta mucho la gente que pregunta y, sin animo de entender, va apretando apretando hasta que alguien le da directamente el codigo escrito. Me parece que este ha sido el caso. Una cosa es preguntar por necesitar ayuda, y otra es abusar de la confianza de quien ayuda. De todas maneras, ya me ha pasado una o dos veces, asi que ire con mucho mas tiento antes de 'saltar' (lo siento de veras). saludos.

PD: Gallet, si tienes algo que decir, estaria bien que lo comentases.
Responder Con Cita
  #4  
Antiguo 03-11-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 22
cHackAll Va por buen camino
Me parece lindo gesto el tuyo coso, en realidad no tienes la culpa de nada... éste (para mi) ha sido un suceso muy aislado.

Sin embargo me temo que a Lepe le ha parecido importante decir que estoy en el lugar equivocado; si es el caso, talvez deba decírmelo sin rodeos para que tome una actitud al respecto.
__________________
RTFM > STFW > Foro > Truco > Post > cHackAll > KeBugCheckEx
Responder Con Cita
  #5  
Antiguo 03-11-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
:/ se esta yendo mucho de madre esto...personalmente cHackAll no he visto en ningun lado que Lepe dijera que estas en el lugar equivocado (hablaba de el mismo). Quizas un punto y aparte seria lo mejor...
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Capturar Pantalla = Pantalla negra DarkDudae Gráficos 8 27-10-2008 12:29:36
Apagar La Pantalla Gimli API de Windows 1 26-05-2008 20:25:23
Esto si que es una pantalla vtdeleon La Taberna 5 31-01-2007 23:40:17
Como cambiar el formato de un QRSysData en formato fecha Bitbanner Tablas planas 1 13-02-2005 12:33:26
Como Obviar el formato de Fecha del Servidor para Salvar sólo en formato "dd/mm/yyyy" R_Richards Varios 4 07-02-2005 15:57:19


La franja horaria es GMT +2. Ahora son las 07:29:12.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi