Delphi - Se puede hacer esto ...?

 
Vista:

Se puede hacer esto ...?

Publicado por MIkey (1 intervención) el 25/09/2001 08:47:04
Hola me podrian decir como crear una aplicacion q no tenga form y q se cree un timer q cada 6000 milisegundos aga aparecer un showmessage.

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Se puede hacer esto ...?

Publicado por Triby (25 intervenciones) el 25/09/2001 19:25:41
Hola:
Debe crear una Unit (Files / New / Unit), este es un programa .PAS que no lleva asociado un Form osea es solo código.
Para hacer el Timer debes crear el objeto Timer

Uses ExtCtrls;

Var Tiempo: TTimer;

Procedure Inicio;
Procedure Termino;
Procedure FuncionMensaje(Sender: TObject);

Procedure Inicio;
Begin
Tiempo.Create;
Tiempo.Interval:=6000;
Tiempo.OnTimer:=FuncionMensaje;
End;

Procedure FuncionMensaje(Sender: TObject);
Begin
ShowMessage('Tiemo Cumplido...');
End;

Procedure Termino;
Begin
Tiempo.Free;
End;

Saludos Australes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Se puede hacer esto ...?

Publicado por Domingo Seoane (65 intervenciones) el 26/09/2001 00:50:33
Todas las aplicaciones de windows tienen que tener una ventana por lo menos
pero en vez de usar un form podemos crear por codigo una ventana invisible.
Esto ademas adelgaza el ejecutable creando archivos de solo 16Kb al no usar
la unit forms.

Para hacer esto primero eliminamos todas las unit del projecto para eso
vamos a view>project manager y eliminamos todas las unit que aparecen.
Ahora vamos a view>units y seleccionamos la que aparece que por defecto
es Project1. El codigo que tienes que escribir aqui es el siguiente:

program Project1;

uses
Windows,
Messages;

var
WinClass: TWndClassA;
Msg: TMsg;
inst: integer;
Handle: hwnd;

// Esta funcion procesa los mensages de la ventana
function WindowProc(hWnd, uMsg, wParam, lParam: Integer): Integer; stdcall;
begin
Result := DefWindowProc(hWnd, uMsg, wParam, lParam);

case uMsg of
WM_DESTROY:
begin
KillTimer(handle,100);
UnRegisterClass('Mi_ClassName',Inst);
ExitProcess(Inst);
end;
WM_TIMER:
begin
// Este es el evento del timer
messageboxA(handle,PChar('Hola'),PChar('Titulo'),MB_OK);
end;
end;
end;

begin
Inst := GetModuleHandle(nil);

with WinClass do
begin
style := CS_PARENTDC;
lpfnWndProc := @WindowProc;
hInstance := Inst;
hbrBackground := 0;
lpszClassname := 'Mi_ClassName';
hCursor := 0;
end;
RegisterClass(WinClass);

Handle := CreateWindowEx(0,'Mi_ClassName','',0,0,0,0,0,0,0,Inst,nil);

settimer(handle,100,6000,nil); // aqui creamos un timer con un intervalo de 6000ms

{ loop de mensages }
while(GetMessage(Msg, Handle, 0, 0)>FALSE) do
begin
TranslateMessage(msg);
DispatchMessage(msg);
end;
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar