RE:Se puede hacer esto ...?
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.