Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   formato de pantalla (https://www.clubdelphi.com/foros/showthread.php?t=61030)

gallet 22-10-2008 19:29:43

formato de pantalla
 
como consigo en delphi programar una sentencia para k la consola de programa me la abra a tamaño full screen y k no se pueda salir excepto k uses la funcion exit, lo que quiero es correr el ms2 y k se ejecute en toda la pantalla y me tape vista, gracias

coso 22-10-2008 20:07:16

Hola, puedes crear un form, maximizarlo, y poner su borderstyle a bsNone. Ahora bien, para lo que quieres hacer (correr ms-dos) no se yo si es lo mas conveniente.

gallet 22-10-2008 20:54:40

en realidad no kiero correr ms2 lo k kiero es k la console aplication o el form sea en full screen hay alguna sentencia para que la consola salga en full screen? o sino alguna opcion que al compilar el .exe haga que este sea a full screen sin tener k maximizarlo? ademas si maximizo vista solo lo ace con la mitad de la pantalla

enecumene 22-10-2008 21:11:03

Pones en la propiedad BorderStyle en None, WindowState en Maximized, FormStyle en fsStayOnTop, y pones el siguiente código en el evento OnCreate:

Código Delphi [-]
Form1.Width := Screen.Width;
Form1.Height := Screen.Height;

Y ya tienes tu aplicación en fullScreen, no sé si eso es lo que buscas.

Saludos.

coso 22-10-2008 21:19:59

quieres ejecutar un ... batch file?

cHackAll 22-10-2008 23:17:18

Código Delphi [-]
program MuchOjO;
 
uses Windows;
 
function SetConsoleDisplayMode(hConsoleOutput, dwFlags: Cardinal; lpNewScreenBufferDimensions: PCOORD): LongBool; stdcall external 'kernel32';
function GetConsoleWindow: Cardinal; stdcall external 'kernel32';
 
var hOutput: Cardinal;
begin
 AllocConsole;
 SetForegroundWindow(GetConsoleWindow);
 hOutput := GetStdHandle(STD_OUTPUT_HANDLE);
 SetConsoleDisplayMode(hOutput, 1{CONSOLE_FULLSCREEN_MODE}, nil);
 
 WriteLn('Sper0 k no c-a pa mal !');
 ReadLn;
end.

cHackAll 23-10-2008 23:31:08

Cita:

Empezado por full screen
Cita:

Empezado por gallet
tu codigo no me ejecuta una pantalla completa eh


No entiendo tu privado!

gallet 24-10-2008 16:03:07

yo pedi k en console aplication me dierais un codigo para que se ejecutara a full screen y no se ejecuta a tamaño completo, el de otro usuario si pero usando forms y yo lo que uso es console aplication no form.

coso 24-10-2008 16:17:34

..no sabe donde ponerlo..

gallet 24-10-2008 18:00:50

el programa k as escrito ejecuta un programa de consola pero lo ejecuta al mismo tamaño eh, lo que me refiero es cambiarle los pixeles para k ejecute en full screen y eso no va.

cHackAll 24-10-2008 23:31:26

Cita:

Empezado por coso (Mensaje 322064)
..no sabe donde ponerlo..

ahhhh ehh hummmm... :rolleyes:

Cita:

Empezado por gallet (Mensaje 322094)
el programa k as escrito ejecuta un programa de consola pero lo ejecuta al mismo tamaño eh, lo que me refiero es cambiarle los pixeles para k ejecute en full screen y eso no va.

No funciona? :eek::eek::eek:

gallet 25-10-2008 16:10:16

no ejecuta screen shot

coso 25-10-2008 16:11:33

...se debe haber obturado el condensador de fluzo...

Lepe 25-10-2008 16:30:45

gallet, antes de que el hilo se vaya por los cerros de úbeda, te aconsejo leas la guía de estilo y te ciñas a ella, si no quieres, hay otros muchos foros donde tienen normas distintas.

Entre otras sugerencias, se dice que esto no es un móvil, es un foro, no tienes por qué ahorrar palabras. Si te es más cómodo, entonces haz tu curriculum vitae con esa forma de escribir ;).

Saludos

cHackAll 26-10-2008 23:55:13

Cita:

Empezado por coso (Mensaje 322293)
...se debe haber obturado el condensador de fluzo...

:D :D :D

gallet 27-10-2008 18:07:02

si esque era muy simple la respuesta, no se ejecuta el screen shot en aplication console que es lo que pedi que me ayudaran a hacer, no pedia otra cosa.

egostar 27-10-2008 18:29:46

Cita:

Empezado por gallet (Mensaje 322672)
si esque era muy simple la respuesta, no se ejecuta el screen shot en aplication console que es lo que pedi que me ayudaran a hacer, no pedia otra cosa.

Hola

Mas bien creo que es muy simple la pregunta, la respuesta tal vez no lo sea tanto.....

Salud OS

cHackAll 27-10-2008 21:21:27

Cita:

Empezado por gallet (Mensaje 322672)
si esque era muy simple la respuesta, no se ejecuta el screen shot en aplication console que es lo que pedi que me ayudaran a hacer, no pedia otra cosa.

Disculpa por haberte dado otra cosa. (bien me lo dijo mi madre); estudia pa' ser veterinario mi'hijo... y ya ves, no le hice caso.

En fin, te aconsejo buscar "screen shot" a ver si así solucionas tu problema.

Lepe 28-10-2008 10:15:33

Cita:

Empezado por gallet (Mensaje 322672)
si esque era muy simple la respuesta, no se ejecuta el screen shot en aplication console que es lo que pedi que me ayudaran a hacer, no pedia otra cosa.

"screen shot" es captura de pantalla, es decir, una imagen de lo que contiene la pantalla en un momento determinado. No es eso lo que quieres, pero si pides eso, tendrás eso.

Eres tú el que debe dar toda la información, eres tú el interesado en obtener la respuesta acertada, nosotros no cobramos por ayudarte. Si además de entender lo que quieres decir, encima tenemos que adivinar lo que estás pensando.... yo, por ejemplo, ni contesto el hilo.

Edito: No me lo tomes a mal, no te recrimino nada, sólo quiero que entiendas nuestro punto de vista para ayudarte a formular mejor tus preguntas.

Saludos

gallet 28-10-2008 13:16:18

Ya esque me equivoco al escribir por tanto mensaje, no era screenshot sino full screen, unicamente que la consola se ejecute a tamaño completo.
Sin ser programación visual, en delphi con console aplication la forma de que la consola se ejecute a tamaño completo.
gracias

coso 28-10-2008 13:54:54

..encuentras sorprendente que te hagan caso, no gallet?

coso 28-10-2008 13:55:51

..ya has desobturado el condensador? como te dije?

coso 28-10-2008 14:00:01

..si no sabes como hacerlo, abre otro hilo, por eso

Lepe 28-10-2008 17:27:35

Acabo de probar en Delphi 6 la solución aportada por cHackAll al principio del hilo y sí se ejecuta el programa en pantalla completa.

Si no te funciona, deberías aportar pruebas :D:p (una captura de pantalla y guardarla en imageshack por ejemplo).

Saludos

gallet 02-11-2008 23:48:37

Mirar como no se ejecuta a tamaño completo, , ahi teneis la direccion.

coso 02-11-2008 23:55:24

...yo creo que nos quieres tomar el pelo

Lepe 03-11-2008 12:21:31

no creo coso.

Si es que debemos ser explícitos leñe, que así no nos entendemos. En Windows XP si funciona su código, en Vista :rolleyes::rolleyes: parece que no.

Saludos

coso 03-11-2008 12:25:58

Una vez ejecutado, si aprietas Alt+Enter, se minimiza. Quiza no, no se :rolleyes:, no voy a instalarme windows vista para comprobarlo...

gallet 03-11-2008 14:20:20

Me parece que dije al principio que usaba windows vista ¿no?, sino lo aclare lo aclaro ahora, es para una cosa de clase que estoy estudiando infórmatica de gestión y no para tomaros el pelo. Pero bueno si se puede aunque sea en XP y me poneis un screenshot yo llevo el programa a clase y lo corro allí.
Gracias a todos por todo

Lepe 03-11-2008 14:51:54

Yo uso Virtualización, así que verás una "ventana de windows" donde el windows XP está dentro de ella:

Siento el tamaño de las imágenes, pesan bastante :(

Delphi en VirtualBox:


programa a pantalla completa:


La diferencia puedes verla en la barra de tareas de windows, que en la segunda captura no está, por tanto, está ejecutándose a pantalla completa. Igual te he liado más... no sé, pero te juro por los pelos de mafalda que funciona.

Saludos

cHackAll 03-11-2008 19:36:14

Cita:

Empezado por coso (Mensaje 323835)
Una vez ejecutado, si aprietas Alt+Enter, se minimiza...

Aquí doy otra "solucion" con los apuntes de coso;

Código Delphi [-]
program Project2;
 
{$apptype console}
 
uses Windows;
 
begin
 keybd_event(VK_MENU, 0, 0, 0);
 keybd_event(VK_RETURN, $1C, 0, 0);
 keybd_event(VK_RETURN, $1C, KEYEVENTF_KEYUP, 0);
 keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0);
 WriteLn('Solved with a Cruft!');
 ReadLn;
end.

Cita:

Empezado por coso (Mensaje 323835)
...no voy a instalarme windows vista para comprobarlo...

No hay problema, yo lo tengo instalado y efectivamente no se puede "cambiar" a pantalla completa; SetConsoleDisplayMode retorna false y GetLastError retorna 87 (El parámetro es incorrecto).

Probando el Cruft que acabo de adjuntar ó en su equivalente obvio, presionando Alt+Enter el SO despliega: "Este sistema no es compatible con el modo de pantalla completa"...

Otro tip al respecto.

Cita:

Empezado por gallet (Mensaje 323847)
Me parece que dije al principio que usaba windows vista ¿no?...

"...k se ejecute en toda la pantalla y me tape vista" :eek:

Cita:

Empezado por Lepe (Mensaje 323851)
...te juro por los pelos de mafalda que funciona

Claro que funciona, habrá que analizar el Vista+Aero para romper esa imposibilidad.

Cita:

Empezado por gallet (Mensaje 323847)
...si se puede aunque sea en XP y me poneis un screenshot yo llevo el programa a clase y lo corro allí...

Ahora comprendo la actitud de coso :mad:

Lepe 03-11-2008 20:47:49

Cita:

Empezado por cHackAll (Mensaje 323913)
Ahora comprendo la actitud de coso :mad:

Pues yo no comprendo la vuestra. ¿le estamos haciendo el trabajo? Pues sí.
La pregunta correcta, según mi opinión es: ¿debo seguir YO en el foro respondiendo dudas?

Señores, que cuando yo pregunto algo es para aplicarlo a un programa comercial, después YO voy a cobrar por ello; Si seguimos en esta línea no habría foro.

Si él solo usa copy&paste, eso será problema suyo y dudo que el profesor se contente con la respuesta:"lo bajé de internet, lo copié y lo pegué, yo no sé que hace"... aunque siempre puede probar para ver la cara del profe :p

Para ser sinceros, yo esas APIs ni las conocía; me dices el nombre y me costaría sacar el código... no quiero pensar a alguien que se inicia en delphi.

Puede que la "práctica de programación" solo consista en eso, en cambiar a pantalla completa, pero en mis tiempos me lo ponían más complicado :D.

Saludos

dec 03-11-2008 20:52:47

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.

cHackAll 03-11-2008 21:15:11

Cita:

Empezado por Lepe (Mensaje 323921)
...La pregunta correcta, según mi opinión es: ¿debo seguir YO en el foro respondiendo dudas?...

Gracias por hacerme a un lado Lepe, voy a considerar vuestras palabras.

Cita:

Empezado por Lepe (Mensaje 323921)
...Señores, que cuando yo pregunto algo es para aplicarlo a un programa comercial, después YO voy a cobrar por ello; Si seguimos en esta línea no habría foro...

Considerando que tu opinión esta dada por mi comentario, creo que deberías revisar mis estadísticas para notar que lo que dices yo ya lo sé y rara vez me importa; lo que si me incomoda son las agresiones a cualquier nivel de miembros conocidos.

coso 03-11-2008 21:17:47

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.

coso 03-11-2008 21:21:54

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.

cHackAll 03-11-2008 21:41:23

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.

coso 03-11-2008 21:46:42

:/ se esta yendo mucho de madre esto...personalmente cHackAll no he visto en ningun lado que Lepe dijera que estas en el lugar equivocado :confused: (hablaba de el mismo). Quizas un punto y aparte seria lo mejor...

Lepe 04-11-2008 10:23:34

Cita:

Empezado por cHackAll (Mensaje 323927)
Gracias por hacerme a un lado Lepe, voy a considerar vuestras palabras.

¿pero qué dices? :eek::eek:

Perdona si en algún momento ha parecido un ataque a tu persona, en ningún momento he pretendido molestarte u ofenderte.

No me hace falta ver las estadísticas para saber que no preguntas en el foro, sólo respondes y además con una calidad altísima en todas tus respuestas, es más me cito a mí mismo:
Cita:

Empezado por Lepe
Para ser sinceros, yo esas APIs ni las conocía; me dices el nombre y me costaría sacar el código

¿Cómo puedes pensar que iba por tí? Tú precisamente eres el que pone más código delphi sin que nadie te lo pida. Te molestas en hacer todo el trabajo y sé el tiempo que le dedicas a ello, es imposible que pueda criticarte.

Si te molestara que alguien se aprovechara de tu código, ni siquiera estarías en el foro, y amigo, llevas ya mucho recorrido como para que alguien dude de tí o tus intenciones.

Una vez más repito: Te pido disculpas si te he ofendido de alguna manera.

Saludos

cHackAll 04-11-2008 14:40:29

Cita:

Empezado por Lepe (Mensaje 324018)
...Te pido disculpas si te he ofendido de alguna manera...

Disculpa tu mi suceptibilidad. :o

Saludos


La franja horaria es GMT +2. Ahora son las 01:35:31.

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