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