Untuk button ‟tutup koneksi‟ ditambahkan kode program sebagai berikut : Untuk komponen IdIPwatch digunakan untuk mengecek atau mendeteksi IdTCPServer bisa digunakan untuk pengiriman data. Pengiriman data

58

b. Fungsi nmm NMM untuk remote control

Data kode diatas, port yang digunakan telah diinisialisasi dalam program, nomor port yang digunakan adalah nomor port “dynamic” atau “unprivileged”.

2. Untuk button ‟tutup koneksi‟ ditambahkan kode program sebagai berikut :

Button ‟tutup koneksi‟ ini digunakan ketika akan memutuskan hubungan dengan server. Jika koneksi telah terputus maka akan tampil jendela baru seperti berikut ini : function nmm:string; begin form1.Server.Port:= 3123; form1.Server.Active:= true; end; function koneksipenuh:string; begin form1.Server.Port:= strtointform1.Edit3.Text; form1.Server.Active:= true; end; procedure TForm1.Button2ClickSender: TObject; begin try non aktifkan server IdTCPServer1.Bindings := Bindings; IdTCPServer1.Active := false; Bindings.Free; except on E:Exception do ShowMessagekoneksi telah terputus; end; label4.Caption:= IP Client Tidak Aktif; end; 59 Gambar 4.16 Tampilan apabila terjadi tutup koneksi

3. Untuk komponen IdIPwatch digunakan untuk mengecek atau mendeteksi

IP address komputer dimana aplikasi ini berjalan, berikut adalah kode program untuk mengecek IP sebuah komputer atau host.

4. IdTCPServer bisa digunakan untuk pengiriman data. Pengiriman data

disini untuk mengirimkan data spesifikasi komputer client kepada server. Pada Aplikasi saat dijalankan client aktif atau dalam posisi Listening, menerima koneksi dari server dan menampilkan Alamat IP client di treeview ada pada aplikasi server. server akan menerima pesan yang dikirimkan oleh client dan menampilkannya dalam treeview aplikasi server : procedure TFormserver.FormCreateSender: TObject; begin edit1.Text:=idipwatch1.LocalIP; end; 60 Pada kode program diatas terjadi pemanggilan fungsi-fungsi untuk mengecek data spesifikasi komputer client. Algoritma yang digunakan untuk penampilkan data spesifikasi komputer client adalah algoritma loopingpengulangan dan selectionpemilihan. Algoritma loopingpengulangan digunakan untuk mengecek komputer client yang akan ditampilkan spesifikasi komputernya. Pengulangan ini apabila terjadi koneksi antara client dan server. perintah procedure TForm1.IdTCPServer1ExecuteAThread: TIdPeerThread; var Pesan,pesan2:string; convert:string; untuk keyboard dan mouse penonaktikan Begin While Athread.Connection.Connected do Begin Pesan:=athread.Connection.readln; if pesan = cekmemori2 then begin Athread.connection.writelnIdIPWatch1.LocalIP; Athread.connection.writelnidipwatch1.LocalName; Athread.connection.writelninformasi.GetMetrics; Athread.connection.writelninformasi.GetCPU; Athread.connection.writelninformasi.Getbrandidcpu; Athread.connection.writelninformasi.Getvendoridcpu; convert := Format f MHz, [informasi.GetCPUSpeed]; Athread.connection.writelnconvert; Athread.connection.writelninformasi.GetMemory; Athread.connection.writelninformasi.memfree; Athread.connection.writelninformasi.memoripakai; Athread.connection.writelninformasi.GetOS; Athread.connection.writelninformasi.GetWindowsPath; Athread.connection.writelninformasi.GetSystemPath; end; end; end; 61 looping atau pengulangan yang digunakan adalah while-do. pemakaian perintah while hanya diperlukan satu kondisi untuk menjalankan looping dan perintah yang di looping pada perintah while adalah perintah setelah kondisi client konek atau terhubung dengan server. Algoritma selection digunakan untuk menampilkan data spesifikasi komputer di komputer server. Algoritma ini ditandai dengan perintah if- then. Perintah if jika cek memori dipanggil dari aplikasi server. Perintah selection terjadi setelah loopingpengulangan terhadap koneksi client ke server , kemudian terjadi kondisi untuk membaca pesan cek memori. Pada source code di atas, ketika dipanggil cek memori maka akan memanggil fungsi-fungsi yang tergabung dan dideklarasikan pada unit informasi. Berikut adalah fungsi-fungsi yang dipanggil : 1. Function Getbrandidcpu adalah fungsi yang digunakan untuk mengetahui brand cpu yang digunakan pada sebuah komputer. function Getbrandidcpu :string; var _eax, _ebx, _ecx, _edx: Longword; i: Integer; b: Byte; s, s1, s2, s3, s_all: string; begin asm mov eax,80000003 db 0F db A2 mov _eax,eax mov _ebx,ebx mov _ecx,ecx mov _edx,edx end; s := ; s1 := ; s2 := ; s3 := ; 62 for i := 0 to 3 do begin b := lo_eax; s3 := s3 + chrb; b := lo_ebx; s := s + chrb; b := lo_ecx; s1 := s1 + chrb; b := lo_edx; s2 := s2 + chrb; _eax := _eax shr 8; _ebx := _ebx shr 8; _ecx := _ecx shr 8; _edx := _edx shr 8; end; s_all := s_all + s3 + s + s1 + s2; asm mov eax,80000004 db 0F db A2 mov _eax,eax mov _ebx,ebx mov _ecx,ecx mov _edx,edx end; s := ; s1 := ; s2 := ; s3 := ; for i := 0 to 3 do begin b := lo_eax; s3 := s3 + chrb; b := lo_ebx; s := s + chrb; b := lo_ecx; s1 := s1 + chrb; b := lo_edx; s2 := s2 + chrb; _eax := _eax shr 8; _ebx := _ebx shr 8; _ecx := _ecx shr 8; _edx := _edx shr 8; end; if s2[Lengths2] = 0 then setlengths2, Lengths2 - 1; result:=s_all + s3 + s + s1 + s2; end 63 2. Function getCPU adalah fungsi yang digunakan untuk mengetahui tipe prosesor yang digunakan pada sebuah komputer. 3. Fungsi getspeedcpu digunakan untuk mengetahui kecepatan dalam menjalankan aplikasi yang ada. function GetCPU : string; var sysinfo: SYSTEM_INFO; str: string; begin GetSystemInfosysinfo; case sysinfo.dwProcessorType of 386:str:=386; 486:str:=486; 586:str:=Pentium; end; Result :=str; end; function GetCPUSpeed : Double; const DelayTime = 500; var TimerHi, TimerLo: DWORD; PriorityClass, Priority: Integer; begin PriorityClass := GetPriorityClassGetCurrentProcess; Priority := GetThreadPriorityGetCurrentThread; SetPriorityClassGetCurrentProcess, REALTIME_PRIORITY_CLASS; SetThreadPriorityGetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL; Sleep10; asm dw 310Fh mov TimerLo, eax mov TimerHi, edx end; SleepDelayTime; 64 4. Function Getcurrentuser digunakan untuk mendeteksi username yang digunakan oleh komputer. 5. Fungsi getmemory akan dipanggil untuk mengecek besarnya kapasitas suatu memori dalam hardisk di komputer client. function GetCurrentUser : string; var lpName: PAnsiChar; lpUserName: PAnsiChar; lpnLength: DWORD; begin Result := ; lpnLength := 0; lpName:=; warning WNetGetUsernil, nil, lpnLength; È¡µÃ×Ö´®³¤¶È if lpnLength 0 then begin GetMemlpUserName, lpnLength; if WNetGetUserlpName, lpUserName, lpnLength = NO_ERROR then Result := lpUserName; FreeMemlpUserName, lpnLength; end; end; function GetMemory : string; var meminfo: Memorystatus; begin meminfo.dwLength :=SizeOfMemorystatus; GlobalMemoryStatusmeminfo; Result :=inttostrmeminfo.dwTotalPhys div 1024+KB; end; asm dw 310Fh sub eax, TimerLo sbb edx, TimerHi mov TimerLo, eax mov TimerHi, edx end; SetThreadPriorityGetCurrentThread, Priority; SetPriorityClassGetCurrentProcess, PriorityClass; Result := TimerLo 1000 DelayTime; end; 65 6. Fungsi getOS, digunakan untuk mengetahui sistem operasi yang digunakan oleh suatu komputer. 7. Fungsi getwindowspath untuk mengetahui path dari directory windows pada komputer client. 8. Fungsi GetSystemPath untuk mengetahui path dari system32 pada komputer client. function GetOS : string; var osInfo: OSVERSIONINFO; begin osInfo.dwOSVersionInfoSize:=SizeOfOSVERSIONINFO; GetVersionExosInfo; result:=Windows +IntToStrosInfo.dwMajorVersion+.+ IntToStrosInfo.dwMinorVersion; end; function GetWindowsPath : string; var WindowsDir: array [0..255] of char; begin GetWindowsDirectoryWindowsDir,255; Result :=WindowsDir; end; function GetSystemPath : string; var SysDir: array [0..255] of char; begin GetSystemDirectorySysDir,255; Result :=SysDir; end; 66 9. Fungsi memoripakai untuk mengetahui kapasitas memori yang sedang dipakai. 10. Fungsi resolusi layar client

5. Button chatting apabila di klik akan memanggil form chatting. Kode untuk