Arsip: Buat Aplikasi tanpa form dan memakai timer

 
user image
more 19 years ago

DeulleDo-X

He All ... Langsung aja Aku ada masalah sedikit.. aku sedang buat program tanpa menggunakan form selanjutnya aku membutuhkan komponen timer, gimana yah solusinya.. nb : aku usahakan ukuran file applikasi saya dibawah 50 kb
user image
more 19 years ago

kaka-delphi

Emang mo buat aplikasi apaan ? form nya di hide aja atuh ! ataw bikin console application wakakakakakkakakkkkkaaakaka..... Atau sedikit kerja keras pake window API, dijamin ukuran filenya di bawah 50 kb
user image
more 19 years ago

deLogic

Bisa sekale... 1. jika Anda ingin memulai baru, create new project, jika sudha ad, langsung aja ke langkah 2.. 2. terus remove semua unit yang mengandung form dari menu Project->Remove from project, defaultnya adalah Unit1 (Form1). lalu bagaimana dengan TTimer...?? bisa juga, berikut snippetnya...

program Project1;
uses
  Forms,
  ExtCtrls,
  Dialogs,
  Classes;
type
  TClassHelper = class
    FExecuted : Integer;
    FTimer : TTimer;
  private
    procedure ActionTimer(Sender: TObject);
  public
    constructor Create;
    destructor Destroy;
  end;
var
  ClassHelper : TClassHelper;
  IsRunning   : Boolean;
{$R *.res}
{ TClassHelper }
procedure TClassHelper.ActionTimer(Sender: TObject);
begin
  if FExecuted = 10 then       // 10x pemanggilan
  begin
    FTimer.Enabled := False;
    ShowMessage('Terminated');
    IsRunning := False;
  end
  else
    Inc(FExecuted);
end;
constructor TClassHelper.Create;
begin
  FExecuted := 0;
  FTimer := TTimer.Create(nil);
  FTimer.OnTimer := ActionTimer;
  FTimer.Interval := 1000;  // eksekusi tiap 1 detik
  FTImer.Enabled := True;
end;
destructor TClassHelper.Destroy;
begin
  FTimer.Free;
end;
begin
  Application.Initialize;
  Application.Run;
  IsRunning := True;
  ClassHelper := TClassHelper.Create;
  while IsRunning do
    Application.ProcessMessages;
  ClassHelper.Free;
  Application.Terminate;
end.
saya create pake Delphi2006, file exe nya sekitar 410KB karena adanya uses Forms yang hasil kompilasinya cukup besar. jika Anda menghilangkan uses Dialogs dan ShowMessage, maka ukurannya menjadi sekitar 383KB. Nah untuk memperkecil file size, Anda bisa menggunakan UPX. Memang ukuran akhir masih lebih dari 50KB, tapi masih tetap kecil. Jika Anda ingin lebih kecil lagi.. pilihan Anda adalah WindowsAPI.. atau.. ada yang mau mencoba KOL...?? Atau Anda buat aplikasi tipe console, tapi dengan sedikit perubahan pada kode karena console tidak mengenal obyek Application. NB: kode diatas belum lulus tes MemoryLeak, optimalisasi dsb karena memang belum dilakukan.. hanya snippet aja, tapi run kok... :)
user image
more 19 years ago

DeulleDo-X

thanks yanh atas bantuannya,... KOL.. itu apaan sih, mungkin dapat membantu saya...........
user image
more 19 years ago

deLogic

KOL = Key Objects Library, itu VCL versi Lite.. kayaknya udah pernah dibahas sekilas mengenai kompatibilitasnya belum lama ini deh, sayang saya lupa nama thread nya..
user image
more 19 years ago

mat_koder

kode berikut bikin exe yang 9,5kb , so masih ada 40kb lagi utk kode laen.
program NoForm;
{$R *.RES}
uses
  windows,messages;

const
    TIMERINTERVAL = 1000; // 1000 milidetik
var
    MyWindowClass  : TWndClass;
    MyWindowHandle : HWND;
    msg            : tagMSG;
    TimerCount     : integer;
procedure DoTimer;
begin
    Inc(TimerCount);
    if (TimerCount>5) then  // lima kali aja....
       PostQuitMessage(0);  // quit program
    MessageBox(MyWindowHandle,'Timer minta di-service!','Oooops',MB_OK);
end;

function MyWindowProc(    // custom WndProc saya
    ahWnd   : HWND;
    auMsg   : Integer;
    awParam : WPARAM;
    alParam : LPARAM): Integer; stdcall;
begin
    case auMSG of
         WM_TIMER     : DoTimer;
         WM_DESTROY   : PostQuitMessage(0);
         end;
    Result := DefWindowProc(ahWnd, auMsg, awParam, alParam);
end;
// nih dia procedure utamanya.........
begin
    with MyWindowClass do 
        begin
        style         := 0;
        lpfnWndProc   := @MyWindowProc;   // alamat custom WndProc saya
        cbClsExtra    := 0;
        cbWndExtra    := SizeOf(Pointer);
        hInstance     := 0;
        hIcon         := 0;
        hCursor       := 0;
        hbrBackground := 0;
        lpszMenuName  := nil;
        lpszClassName := 'Bla-bla-bla';
        end;
    if windows.RegisterClass(MyWindowClass)=0 then
           Exit;
    MyWindowHandle := CreateWindowEx(WS_EX_TOOLWINDOW,
                             MyWindowClass.lpszClassName,
                             '',        { Window name   }
                             WS_POPUP,  { Window Style  }
                             0, 0,      { X, Y          }
                             0, 0,      { Width, Height }
                             0,         { hWndParent    }
                             0,         { hMenu         }
                             HInstance, { hInstance     }
                             nil);      { CreateParam   }
    if MyWindowHandle<>0 then begin
        TimerCount:=0;
        SetTimer(MyWindowHandle,0,TIMERINTERVAL,nil);
        while GetMessage(msg,0,0,0) do 
              DispatchMessage(msg);
        MessageBox(0,'Timer sdh 5 kali minta di-service , cukup sudah !','Selesai',MB_OK);
        end;
end.
more ...
  • Pages:
  • 1
Share to

AI Forward

🚀 We're thrilled to partner with Alibaba Cloud for "AI Forward - Alibaba Cloud Global Developer Summit 2025" in Jakarta! Join us and explore the future of AI. Register now: https://int.alibabacloud.com/m/1000400772/
#AlibabaCloud #DeveloperSummit #Jakarta #AIFORWARD

Local Business Directory, Search Engine Submission & SEO Tools FreeWebSubmission.com SonicRun.com