Sebenarnya pada postingan untuk kali ini fungsinya sama dengan postingan kemarin yaitu tentang cara menutup aplikasi lain dengan delphi tetapi untuk kali ini saya coba dengan menggunakan sebuah fungsi.
Dimana apabila dengan cara pada postingan kemarin untuk menutup aplikasi lain tidak bisa maka dengan cara kali ini mungkin bisa sebagai alternatip untuk melakukan proses close aplikasi.
Langkah Pembuatan
Karena untuk kali ini saya akan mencoba dengan menggunakan sebuah fungsi maka saya kemudian membuka aplikasi delphinya dulu dan saya coba tambahkan pada Form 2 buah Button dimana satu button untuk membuka aplikasi dan satu button lagi untuk menutup aplikasi yang di telah dibuka saya posisikan button tersebut pada form seperti pada gambar berikut dibawah ini
![]() |
Penambahan 2 Buah Button |
Kode Function Killtask
Disini saya akan coba membuat sebuah function Killtask yaitu fungsinya untuk menutup aplikasi,karena disini akan saya coba untuk membuat fungsi dan dimana untuk membuat fungsi ini perlu tambahan unit pada uses yang mana unitnya adalah TLHelp32,setelah saya coba tambahkan unit tersebut pada uses kemudian pada kode editor saya coba buat kode function sebagai berikut
function KillTask(ExeFileName: string): integer;
const
PROCESS_TERMINATE = $0001;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
Result := 0;
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
while Integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
UpperCase(ExeFileName))) then
Result := Integer(TerminateProcess(
OpenProcess(PROCESS_TERMINATE,
BOOL(0),
FProcessEntry32.th32ProcessID),
0));
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;
Procedure Cleanup system Tray
Selain itu disini saya akan coba dengan membuat sebuah procedure CleanUpSystemTray yang mana fungsinya adalah untuk merefresh icon aplikasi yang diclose yang masih tertinggal pada sysytem tray,dan disini saya perlu tambahan unit ShellApi pada uses yang mana procedurenya adalah sebagai berikut
procedure CleanUpSystemTray;
var
hTaskbar: HWND;
hSysTray: HWND;
R: TRect;
iXPos: Integer;
iYPos: Integer;
iLeft: Integer;
iRight: Integer;
iTop: Integer;
iBottom: Integer;
iMouseFlag: Integer;
p: TPoint;
const
cMax = 65535;
cXStep = 1000;
cYStep = 100;
begin
hTaskbar := FindWindow(PChar('Shell_TrayWnd'), nil);
hSysTray := FindWindowEx(hTaskbar, 0, 'TrayNotifyWnd', nil);
GetWindowRect( hSysTray, R );
iLeft := R.Left * cMax div Screen.Width;
iRight := R.Right * cMax div Screen.Width;
iTop := R.Top * cMax div Screen.Height;
iBottom := R.Bottom * cMax div Screen.Height;
GetCursorPos(p);
iMouseFlag := MOUSEEVENTF_MOVE + MOUSEEVENTF_ABSOLUTE;
iXPos := iLeft;
repeat
iYPos := iTop;
repeat
mouse_event(iMouseFlag, iXPos, iYPos, 0, 0);
iYPos := iYPos + cYStep;
until iYPos >= iBottom;
iXPos := iXPos + cXStep;
until iXPos >= iRight;
SetCursorPos(p.x, p.y);
end;
Procedure Button Open
Disini saya akan mencobanya dengan membuka sebuah aplikasi Bitvise yang mana aplikasi bitvise ini berada di folder C:\Program Files (x86)\Bitvise SSH Client\BvSsh.exe karena saya menggunakan OS 64Bit apabila menggunakan OS 32Bit mungkin posisi bitvise berada di C:\Program Files\Bitvise SSH Client\BvSsh.exe.Dan untuk procedure button1 yang mana difungsikan untuk membuka bitvise maka saya coba dengan membuat procedurenya sebagai berikut
procedure TForm1.Button1Click(Sender: TObject);
var
bitvise: String;
begin
bitvise := 'C:\Program Files (x86)\Bitvise SSH Client\BvSsh.exe';
ShellExecute(Handle, 'open', PAnsiChar(bitvise), nil, nil, SW_NORMAL);
end;
procedure Button Close
Untuk button2 yang mana saya coba difungsikan untuk menutup bitvise yang telah dibuka,yang mana untuk procedurenya saya buat sebagai berikut
procedure TForm1.Button2Click(Sender: TObject);
begin
KillTask('BvSsh.exe');
CleanUpSystemTray;
end;
Setelah saya buat procedure semua tersebut diatas kemudian saya coba Run untuk melihat apakah berfungsi dan kemudian saya coba klik tombol open dan tombol close setelah itu ahirnya hasilnya wow...
![]() |
Tes Running |
Demikianlah untuk postingan kali ini sesuai dengan judul diatas semoga dengan postingan ini bermanfa'at bagi teman-teman.
Ok Salam Blogger And Happy Coding.
No comments:
Post a Comment