Beranda > Computer > Membuat Single Run Executable

Membuat Single Run Executable

Windows merupakan aplikasi multitasking yang memungkinkan program yang sama berjalan lebih dari satu instance, hal ini secara umum sebenarnya efektif karena memungkinkan user untuk membuka dokumen yang berbeda dengan program yang sama. Contoh yang paling terlihat adalah aplikasi notepad yang terdapat di windows. Namun ada saat-saat tertentu dimana kita ingin menghindari program berjalan secara multiple instance, jadi benar-benar hanya satu aplikasi yang berjalan. Sebenarnya trik untuk hal ini sudah beberapa kali disampaikan dan banyak juga terdapat di internet, namun setiap tahunnya pasti ada saja yang menanyakan kembali cara-nya. Karena itu, saya coba untuk mengarsipkannya menjadi salah satu entri, mudah-mudahan bisa bermanfaat.

Fungsi ini merupakan modifikasi minor atas kode yang dibuat oleh rekan Hi Joen dan source code aslinya bisa didapat pada arsip delphindo.

uses
  Windows,
  ...;

var
  MutexHandle: THandle;
  hWind: hWnd;

begin
  MutexHandle := CreateMutex(nil, TRUE, '');
  if (MutexHandle <> 0) and
     (GetLastError = ERROR_ALREADY_EXISTS) then
  begin
    CloseHandle(MutexHandle);
    hWind := 0;
    repeat
      hWind := Windows.FindWindowEx(0, hWind, 'TApplication',
        '');
    until (hWind <> Application.Handle);
    if (hWind <> 0) then
    begin
      Windows.ShowWindow(hWind, SW_SHOWNORMAL);
      Windows.SetForegroundWindow(hWind);
    end;
  end else
  begin
    Application.Initialize;
    Application.CreateForm(...);
    Application.Run;
  end;
end.
Iklan
Kategori:Computer
  1. Belum ada komentar.
  1. No trackbacks yet.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: