Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Necesito una pantalla azul de error Windows (https://www.clubdelphi.com/foros/showthread.php?t=42875)

Namaris 25-04-2007 00:00:54

Necesito una pantalla azul de error Windows
 
Hola,

no sabia donde publicar este tema, ante la duda lo he puesto aqui.

El caso esque por algunos motivos razonables personales necesito alguna mini aplicacion o algo para que cuando Windows Xp encienda aparezca una pantalla (a tamaño completo, es decir, pantalla completa) de color azul como la de los errores de windows que diga error_memory_process, unas largas columnas de codigo cualquiera (010EX84934048, lo que sea xD) y que ahi se quede....que para quitarlo haga falta alguna combinacion especial de teclas o el ctrl+alt+supr para que salga taskman.


A continuacion explico porque quiero esto tal y como digo:

El caso esque necesito un nuevo modulo de RAM porque este da fallos, muchos mientras estas trabjando y te reinicia y adios trabajos.

Se lo he dicho a mi padre pero el como no entiende de esto lo ve funcionar y se piensa que lo digo porque si xDD (es un cabezon :D)

Almenos asi podre mostrale esa pantalla y le convezco que me pille una xDD

Entonces....¿Alguien me hace el favor de ayudarme con el tema? :(

P O R F A V O R :(:(:(


P.D: Un saludo a todos y gracias de antemano :)

roman 25-04-2007 00:06:14

Respuesta estilo Casimiro:

No hagas nada, sólo prende la máquina y espera unos minutos :D

Si no funciona pues ármate de una aplicación cuyo formulario principal sea de color azul, sin bordes y maximizado. Sobre él pones los labels necesarios y colocas la aplicación en el menú inicio, y que tu padre me perdone :o :D

// Saludos

dec 25-04-2007 00:07:01

Hola,

En Google encuentras algunas imágenes que lo mismo te sirvan o puedan darte ideas...

kinobi 25-04-2007 00:11:40

Cita:

Empezado por roman
Respuesta estilo Casimiro:

No hagas nada, sólo prende la máquina y espera unos minutos :D


Si no funciona pues ármate de una aplicación cuyo formulario principal sea de color azul, sin bordes y maximizado. Sobre él pones los labels necesarios y colocas la aplicación en el menú inicio, y que tu padre me perdone :o :D

¡Simplemente genial! :D

Cita:

Empezado por dec
Yo hablaría con mi padre y se lo diría de otro modo, pero, en fin... en Google encuentras algunas imágenes que lo mismo te sirvan o puedan darte ideas...

Eso sí, que no utilice la que sale Bill... http://members.ozemail.com.au/~lbras...GATES-bsod.jpg... ni esta http://www.gdargaud.net/Humor/Pics/BlueScreen.jpg

Todo tiene un límite ;)

Saludos

kinobi 25-04-2007 00:13:50

Cita:

Empezado por Namaris
El caso esque necesito un nuevo modulo de RAM porque este da fallos, muchos mientras estas trabjando y te reinicia y adios trabajos.

Por cierto, sólo por si las moscas: ¿no tendrá algo que ver el problema con una mala refrigeración?

Saludos... y suerte

seoane 25-04-2007 00:21:15

Prueba con esto
http://www.microsoft.com/technet/sys...lueScreen.mspx

Casimiro Noteví 25-04-2007 10:02:41

Ja, ja, ja... ¡¡¡ qué bueno !!!

Justo iba a escribir lo que ha puesto roman, es lógico, si falla... entonces simplemente debes esperar un ratito :D

Ñuño Martínez 25-04-2007 13:46:58

Pues mira, puedes utilizar Allegro.pas (si utilizas Delphi deberás trucarlo un poco, pero seoane dijo que no era complicado) para abrir un programa en pantalla completa, dibujar el pantallazo azul y capturar el teclado. Como es una librería para juegos, podrás capturar combinaciones como la que dices sin muchos problemas.

Perdón por el spam, pero creo que merece la pena para una broma así. :cool:

Namaris 26-04-2007 00:44:37

Cita:

Empezado por Ñuño Martínez
Pues mira, puedes utilizar Allegro.pas (si utilizas Delphi deberás trucarlo un poco, pero seoane dijo que no era complicado) para abrir un programa en pantalla completa, dibujar el pantallazo azul y capturar el teclado. Como es una librería para juegos, podrás capturar combinaciones como la que dices sin muchos problemas.

Perdón por el spam, pero creo que merece la pena para una broma así. :cool:

Me he bajado eso pero nose de que va xD
Esque yo no se programar en realidad, postee aqui porque pense que como aqui si sabes me podrian ayudar :confused:

Simplemente necesito que salga una ventana azul al inciar y que solo se pueda quitar cn una combinacion de teclas :(

Caral 26-04-2007 01:48:35

Hola
Bueno que tal esto:
Creas una nueva aplicacion, colocas un boton, un timer, cuatro labels.
Eliminas todo del unit y colocas el codigo completo que esta abajo.
Tienes que colocar los eventos, osea darle un click al boton, un click al label1 un click al onformshow y destroy, fijate bien, la unica manera de salir del programa sera dando click sobre el label1.
Puedes darle el color y formato que quieras a los label.
Bueno como dice Roman, que me perdone tu papa.
Va:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Timer1: TTimer;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Label1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
   // La posicion del label que estamos dibujando (de 1..9)
    _labelActual:Integer;
    { Private declarations }
    procedure CreateParams(var Params: TCreateParams); override;


  public
    { Public declarations }
  end;

  // Define una lista de posiciones
  labelPosition = array[1..20] of integer;

const
  // Amarillo
  POSITION_lab1X:labelPosition = (1152,1144,1040,992,904,856,768,728,640,592,512,472,392,352,280,240,160,120,48,16);
  POSITION_lab1Y:labelPosition = (216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216);
  // Violeta
  POSITION_lab2X:labelPosition = (1152,1144,1040,992,904,856,768,728,640,592,512,472,392,352,280,240,160,120,48,16);
  POSITION_lab2Y:labelPosition = (304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304);
  // Rojo
  POSITION_lab3X:labelPosition = (1152,1144,1040,992,904,856,768,728,640,592,512,472,392,352,280,240,160,120,48,16);
  POSITION_lab3Y:labelPosition = (248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248);

var
  Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.CreateParams(var Params: TCreateParams);
 begin
 inherited CreateParams(Params);
 with Params do
 Style := (Style or WS_POPUP) and not WS_DLGFRAME;

 end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Close;

end;

procedure TForm1.Label1Click(Sender: TObject);
begin
   Button1.Perform(WM_LButtonDown,0,0);
   Sleep(250);
   Button1.Perform(WM_LButtonUp,0,0);


end;

procedure TForm1.FormShow(Sender: TObject);
begin
 Form1.Align:= alClient;
 Form1.Color:= clActiveCaption;
 Button1.Visible:= False;
 Label1.Caption:= 'Falla grave  Microsoft ....................................';
 Label2.Caption:= 'Este ordenador esta por fallar';
 Label4.Caption:= 'Necesita memoria urgente';
 Label3.Caption:= 'Que papa, me la compra?';
 //Esconde Barra de inicio
     ShowWindow(FindWindow
    ('Shell_TrayWnd',nil), SW_HIDE) ;

end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  total:Integer;
begin

  // Que pez estamos dibujando
  _labelActual := _labelActual + 1;
  total := Length(POSITION_lab1X);

  // Se ha acabado?
  if (_labelActual > total) then begin
     _labelActual:= 0;
  {  TimerAnim.Enabled := False;
    I1.Visible := False;
    IV1.Visible := False;
    IR1.Visible := False;
    // Sacar el Main
    //...

   Exit;}
  end
  else begin
    // Amarillo
    label2.Visible := True;
    label2.Transparent := True;
    label2.Left := POSITION_lab1X[_labelActual];
    label2.Top := POSITION_lab1Y[_labelActual];
    // Violeta
    label3.Visible := True;
    label3.Transparent := True;
    label3.Left := POSITION_lab2X[_labelActual];
    label3.Top := POSITION_lab2Y[_labelActual];
    // Rojo
    label4.Visible := True;
    label4.Transparent := True;
    label4.Left := POSITION_lab3X[_labelActual];
    label4.Top := POSITION_lab3Y[_labelActual];


end;
  end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
   //Muestra Barra de inicio
     ShowWindow(FindWindow
    ('Shell_TrayWnd',nil), SW_SHOWNA) ;
end;

end.
Este codigo es en parte aporte de mis Maestros del foro.
Saludos

Namaris 26-04-2007 03:17:26

Gracias Caral por tu ayuda pero esto.........que hago con este codigo? me bajo alcun complilador de Delphi y lo copio y pego ahi? :confused:


Una vez que lo tng pues que hago? lo coloco en inicio de windows?


Un saludo

Ñuño Martínez 26-04-2007 13:19:01

Cita:

Empezado por Namaris
Me he bajado eso pero nose de que va xD
Esque yo no se programar en realidad, postee aqui porque pense que como aqui si sabes me podrian ayudar :confused:

Gracias Caral por tu ayuda pero esto.........que hago con este codigo? me bajo alcun complilador de Delphi y lo copio y pego ahi?


Una vez que lo tng pues que hago? lo coloco en inicio de windows?

Sólo puedo decir una palabra: ¡LOLAZO!

No te lo tomes como insulto, lo que pasa es que no me lo esperaba (bueno, ni yo ni nadie de este foro :rolleyes: ).

A ver, alguien que compile el programa que ha publicado nuestro amigo y eterno padawan Caral y le pase el ejecutable a Namaris, a ser posible bien envuelto para su fácil instalación. Yo es que no tengo el compilador listo y estoy haciendo limpieza. Gracias. :cool:;)

seoane 26-04-2007 15:53:49

1 Archivos Adjunto(s)
Namaris, espero que esto no se vuelva una costumbre. Tanto lo de pedir programas a la carta, como lo de engañar a tu familia, que esta muy feo :p :D

Aquí te dejo una aplicación que al ejecutarse muestra un pantallazo azul. La única forma de salir es con Ctr+Alt+Supr.

El código (el ejecutable esta en el zip):
Código Delphi [-]
program BlueScreen;

{$APPTYPE CONSOLE}

uses
  Windows, SysUtils;


const
  Mensaje =
  '*** STOP: 0x0000007B (0xF201B84C,0xC0000034,0x00000000,0x00000000)' +#13#10+
  'INACCESIBLE_BOOT_DEVICE'                                      +#13#10#13#10+
  'If this is the first time you have seen this Stop error screen,'    +#13#10+
  'restart your computer. If this screen appears again, follow'        +#13#10+
  'these steps:'                                                 +#13#10#13#10+
  'Check for viruses on your computer. Remove any newly installed'     +#13#10+
  'hard drives or hard drive controllers. Check your hard drive'       +#13#10+
  'to make sure it is properly configured and teminated.'              +#13#10+
  'Run CHKDSK /F to check for hard drive corruption, and then'         +#13#10+
  'restart your computer.'                                       +#13#10#13#10+
  'Refer to tour Getting Started manual for more information on'       +#13#10+
  'troubleshooting Stop errors.';

const
  WH_KEYBOARD_LL = 13;

function SetConsoleDisplayMode(hConsoleOutput: THandle; dwFlags: DWORD;
  var pNewScreenBufferDimensions: TCoord): BOOL; stdcall;
  external 'Kernel32.dll' name 'SetConsoleDisplayMode';

function HandlerRoutine(dwCtrlType: DWORD): BOOL; stdcall;
begin
  Result:= TRUE;
end;

function KbdHook(Code: Integer; WParam, LParam: DWORD): HHook; stdcall;
begin
  Result:= 1;
end;

procedure Loop;
var
  Msg: TMsg;
begin
  while GetMessage(Msg,0,0,0) do
    DispatchMessage(Msg); 
end;

procedure WriteMsg;
var
  F: TextFile;
  Str: String;
begin
  if FileExists(ChangeFileExt(ParamStr(0),'.txt')) then
  begin
    AssignFile(F,ChangeFileExt(ParamStr(0),'.txt'));
    {$I-}
      Reset(F);
    {$I+}
    if IOResult=0 then
    begin
      while not EOF(F) do
      begin
        Readln(F,Str);
        Writeln(Str);
      end;
      CloseFile(F);
    end else
      Writeln(Mensaje);
  end else
    Writeln(Mensaje);
end;

var
  BufferSize: DWORD;
  Hook: HHook;
  ScreenBuffer: THandle;
  Coord: TCoord;

begin
  ScreenBuffer:= GetStdHandle(STD_OUTPUT_HANDLE);
  if ScreenBuffer <> INVALID_HANDLE_VALUE then
    if SetConsoleDisplayMode(ScreenBuffer,1,Coord) then
    begin
      FillChar(Coord,Sizeof(Coord),0);
      FillConsoleOutputAttribute(ScreenBuffer,FOREGROUND_RED or FOREGROUND_BLUE or
        FOREGROUND_GREEN or FOREGROUND_INTENSITY or BACKGROUND_BLUE,
        MAXINT, Coord, BufferSize);
      SetConsoleTextAttribute(ScreenBuffer,FOREGROUND_RED or FOREGROUND_BLUE or
        FOREGROUND_GREEN or FOREGROUND_INTENSITY or BACKGROUND_BLUE);
      SetConsoleCursorPosition(ScreenBuffer,Coord);
      if SetConsoleCtrlHandler(@HandlerRoutine,TRUE) then
      begin
        Hook:= SetWindowsHookEx(WH_KEYBOARD_LL, @KbdHook, HInstance, 0);
        if Hook <> 0 then
        begin
          WriteMsg;
          Loop;
          UnhookWindowsHookEx(Hook);
        end;
      end;
    end;
end.

PD: Hace tanto tiempo que no veía ninguna que tuve que copiar el mensaje de la wikipedia. :D

dec 26-04-2007 16:46:03

Hola,

Está muy bien Seoane. Ayer inicié yo un intento... y terminé mal porque comenzé peor, a lo que veo. :)

seoane 26-04-2007 17:06:40

Bueno, lo modifique un poco. Ahora si encuentra en el mismo directorio un archivo con su mismo nombre pero con la extensión .txt (ej: BlueScreen.txt) muestra el contenido de ese archivo, en vez del mensaje que yo puse.

Ahora solo falta que a alguien se le ocurra un buen mensaje de error.

Algo así (BlueScreen.txt):
Código:

*** STOP: 0x0000007B (0xF201B84C,0xC0000034,0x00000000,0x00000000)
INACCESIBLE_BOOT_DEVICE

Si es la primera vez que lees este mensaje te sentiras confuso
y asustado, pero sera mejor que te relajes porque no sera la
ultima vez.

Ahora probaremos un par de cosas sin sentido para que te sientas
mejor, no solucionaran el problema, pero aliviaran tu sensacion
de impotencia. Pero cuando todo falle lo mejor sera reiniciar y
rezar para que todo funcione ... esto me recuerda el chiste que
dice que van un informatico, un mecanico y un electricista en
un coche y el coche se para ....


Sabias lo que hacias cuando instalaste Windows. Ahora no te quejes.

PD: El mensaje se lo dedico a Casimiro :p , y alguno mas ...

Caral 26-04-2007 20:54:21

Hola
Seoane Y=?:
Cita:

un coche y el coche se para ....
Bueno, nos dejas colgados:D , vamos terminalo que no lo conozco:D
Saludos

seoane 26-04-2007 21:06:37

Cita:

Empezado por Caral
Bueno, nos dejas colgados:D , vamos terminalo que no lo conozco:D

En un coche van un electricista, un mecánico y un informático. Entonces el coche se para y el electricista dice que evidente es un problema eléctrico. El mecánico, sin embargo, insiste en que por el ruido que hace el motor el problema es mecánico. El informático se queda pensativo durante un rato y dice: ¿Y si nos bajamos y nos volvemos a subir?

Caral 26-04-2007 21:37:04

Hola
Esta buenisimo, me he reido a mas no poder, esto va bien para windows, tipico.
Con razon se lo dedicaste a Casimiro.:D
Saludos

Casimiro Noteví 26-04-2007 23:36:32

Cita:

Empezado por seoane
Sabias lo que hacias cuando instalaste Windows. Ahora no te quejes.
[/code]
PD: El mensaje se lo dedico a Casimiro :p , y alguno mas ...


Muchas gracias, se me han saltado unas lagrimitas, de la emoción, qué bonito, lo voy a imprimir y ponerlo en la pizarra de anuncios, en el trabajo, para que todos lo vean :D

Namaris 27-04-2007 03:04:16

Jajaja, no Seoane, no es costumbre pero es que solo recurro a esto cuando la situacion es extrema, tengo en mente empezar a estudiar pogramacion en verano :D asi no molesto a nadie xD Gracias.

Mira, el caso esque ami me hace falta que esa pantalla salga al inicio de windows y por eso la copie en la carpeta inicio para que arranque con el sistema pero lo malo esque sale un seg y se minimiza al inicio :S

Supongo que sera pk estaran cargandose los otros progamas de inicio y habra una cola o algo...pero no sirve pk si se minimiza mi padre lo cierra y listo xD

Aparte me baje el .zip como dijiste pero dentro estaba solo el .exe, ese .txt del que ablas para cambiar el texto no lo llege a ver :rolleyes: (y lo baje 3 veces)


La franja horaria es GMT +2. Ahora son las 14:52:45.

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