29
BAB III TEORI REMOTE KOMPUTER
3.1
Pengertian Remote Komputer Pengendali komputer atau remote komputer pada umumnya digunakan untuk
mengetahui dan mengatur suatu sistem komputer dari jarak jauh dan sistem yang dimaksud dalam hal ini adalah sistem operasi. Dimana sistem operasi adalah sekumpulan sumber daya untuk memindahkan, menyimpan dan memproses data serta mengendalikan fungsi-fungsi. Sistem operasi bertangggung jawab mengelola sumber daya-sumber daya sistem komputer. Contoh dari sistem operasi adalah Windows, Linux dan Machintosh. Dalam hal ini untuk sistim operasi yang digunakan oleh aplikasi yang dibuat adalah seluruh keluarga Windows yaitu : Windows98, WindowsMe, WindowsNt, WindowsXp, dan Windows 2003 Server. 3.2
Internet Direct (Indy) Untuk mengendalikan komputer dari jarak jauh menggunakan komponen
Internet Direct atau indy yang merupakan komponen socket library yang bersifat open source ditulis dalam bahasa pascal sebagai bagian dari pemograman object oriented pascal. Indy mendukung beberapa macam protokol seperti TCP, UDP, SMTP, NNTP, HTTP dan lain sebagainya. Indy terdapat dalam delphi, kylix dan borland c++ builder. Indy dirancang untuk menyediakan tingkatan abstrak yang sangat tinggi. Sehingga seluk beluk kesulitan dan rincian data diagram tcp/ip tersembunyi dari program Indy.
29
30
3.3
Metodologi Indy .Indy berbeda dari komponen Winsock,
karena winsock
menggunakan
panggilan non-blocking (asynchronous). Sehingga harus menunggu untuk merespon kejadian, mengatur state mesin, dan sering menunggu untuk melakukan loop. jauh lebih mudah dan cocok melakukan threading, indy pun juga dapat menggunakan metode blok dan non blok untuk mempermudah dalam proses. Proses penggunaan blok dan non blok terlihat sebagai berikut: 1. Bloking, program akan menuggu pembacaan data dan penulisan data sampai selesai baru baris program berikutnya akan disekusi. 2. Non Bloking, User Interface "Freeze" dengan client - socket blokir panggilan tidak kembali sebelum menyelesaikan tugas.
Bila panggilan
tersebut dibuat di benang utama aplikasi, aplikasi tidak dapat memproses pesan antar muka pengguna. Hal ini menyebabkan antarmuka pengguna untuk "membekukan" karena pembaruan, memeriksa kembali dan pesan lain tidak dapat diproses sampai memblokir panggilan socket kembali kontrol ke aplikasi pengolahan pesan loop. 3. Threading, sering disebut Light Weght Process (LWP), yaitu unit dasar utilisasi pemroses dan berisi program counter, register set dan stack space. Thread-thread disatu proses berbagi ( memakai bersama ) bagian kode data dan sumber daya sistim operasi seperti file dan signal. Pemakaian ekstensif menyebabkan alih proses antara thread-thread disatu proses tidak mahal dibanding alih konteks antara proses. Meski alih thread masih memerlukan alih himpunan register, namun tidak ada keterlibatan manajemen memori[7]. Dalam menangani proses threading memiliki kelebihan diantaranya sebagai berikut: 3.4.
Kelebihan Indy Dari metodologi bekerjanya maka dapat terlihat kelebihan indy diantaranya:
31
1.
Menggunakan pemblokiran panggilan secara eksklusif dan dapat memasukan program kedalam sebuah thread atau menggunakan komponen tambahan yaitu IdAntiFreeze.
2. Tidak mengandalkan event - Indy memiliki event yang dapat digunakan untuk tujuan informasi. 3.
Dirancang untuk threaded - Indy dirancang dengan threading dan dapat digunakan tanpa threading.
4.
Sequential pemrograman, menggunakan program secara berurutan.
3.5 Indy Client Indy dirancang untuk menyediakan tingkat yang sangat tinggi dari abstraksi. Seluk-beluk dan rincian dari tcp/ip stack yang tersembunyi dari Indy pemrogram. Khas indy client terlihat seperti berikut:
Kode 3.1 Potongan kode program Indy client.
3.6
Indy Server Komponen server indy membuat masukan thread yang terpisah dari thread
utama dari program. Thread masukan mendengarkan permintaan client. Setiap client dipastikan menjawab perintah, kemudian memunculkan thread baru untuk melayani
32
client. Peristiwa ini kemudian dipecah dalam konteks beberapa benang. Gambar berikut menunjukan proses terjadinya threading[12].
Gambar 3.1 Terjadinya proses treading (http://www.swissdelphicenter.ch/en/showarticle.php?id=4)
3.7
Fungsi dan Prosedur Pada Komponen Internet Direct Dalam penelitian ini menggunakan Indy 8 dimana versi ini yang pertama kali
dikeluarkan, berikut ini penjelasan Internet Direct yang memiliki bagian seperti Classes, Records / Structs, Functions, Types, dan Variables, pada khususnya Indy 8: 1. EIdAlreadyConnected, exception terjadi
ketika
koneksi menggunakan
fungsi an already open connection. EIdAlreadyConnected = class(EIdException) EIdAlreadyConnected berada dalam komponen Indy berfungsi mengkoneksikan dengan komponen lain sehingga siap diaktifkan.
33
2. EIdCorruptServicesFile, exception class terjadi ketika services mengalami kerusakan. EIdCorruptServicesFile = class(EIdException) Exception class terjadi pada IdPorts function sehingga file services tidak dapat membaca. File services memiliki tempat berbeda biasannya terlihat dalam operasi sistim berikut, BSD Unix - /etc/, Windows 95, 98, dan Me - Windows directory, Windows NT - Windowssystem32drivers. 3. TClientData,
merupakan
data
client
sebelum
terkoneksi
dengan
TIdTunnelSlave. TClientData = class TClientData bagian komponen yang disimpan didalam TIdPeerThread. Ketika data properti peer thread koneksi dengan TIdTunnelSlave, TClientData memberikan data client untuk operasi Connect dan Execute di server TIdTunnelSlave.
4. TIdAntiFreeze,
merupakan
pencegahan
aplikasi
user
interface
dari
pembekuan. TIdAntiFreeze = class(TIdAntiFreezeBase) Indy bekerja dengan metode bloking, dan memiliki komponen untuk mengatasi pembekukan aplikasi user interface. Dengan TIdAntiFreeze pada aplikasi, dapat melakukan panggilan bloking Indy standar dalam program tanpa aplikasi user interface yang beku.
Ketika
bekerja di internal, TIdAntiFreeze mengakhiri
panggilan melalui stack dan memanggil Application.ProcessMessages selama proses pembekuan. Panggilan eksternal indy terus diblok, dan dengan demikian proses bekerja seperti tanpa TIdAntiFreeze.
34
5. TIpStruct, pengaturan penyimpanan untuk komponen IP address atau Subnet mask. TIpStruct = record case integer of 0: (Byte1: byte; Byte2: byte; Byte3: byte; Byte4: byte;); 1: (FullAddr: Longword;); end; TIpStruct adalah jenis record untuk penyimpanan IP address, TIpStruct memiliki format seperti berikut: +-------+-------+-------+-------+ | Byte4 | Byte3 | Byte2 | Byte1 | (Byte variant) +-------+-------+-------+-------+ |
FullAddr
| (LongWord variant)
TIpStruct mengatur IP address secara berurutan per Byte, yang digunakan dari Byte1, Byte2, Byte3, dan Byte4. TIpStruct juga mengatur akses sampai nilai IP address LongWord nilai yang digunakan adalah
FullAddr. TIpStruct digunakan untuk
TIpProperty dan function IP dan StrToIP yang digunakan untuk penyimpanan IP addresses. 6. TIdSocksRequest, merupakan isi data pengiriman sock proxy sampai koneksi request.
35
TIdSocksRequest = record Version: Byte; OpCode: Byte; Port: Word; IpAddr: TIdInAddr; UserId: String[255]; end; TIdSocksRequest merupakan
type record yang sebelumnya akan mengirim
data ke Socket proxy selama TIdTCPClient terkoneksi ke socket proxy server. Version bernilai byte adalah bagian dari socket protocol, version merupakan nomor yang digunakan
untuk koneksi. OpCode bernilai byte merupakan bagian untuk
mengidentifikasi aksi performen pada saat koneksi . Port bernilai word adalah bagian untuk mengidentifikasi Port number pada saat client terkoneksi. IpAddr sama dengan TIdInAddr anggota sebelum menjadi struktur IP address digunakan untuk koneksi client.
UserId adalah
Short String merupakan bagian untuk
mengidentifikasi user name digunakan untuk autotentikfikasi
pada saat koneksi
client. TIdSocksRequest digunakan dalam bagian dari TIdTCPClient. 7. AnsiSameText, perform case-insensitive kompresi dari dua Ansi string. functions AnsiSameText(const S1: string; const S2: string): Boolean; Parameter const S1: string String pertama digunakan dalam kompresi. const S2: string
36
String kedua digunakan dalam kompresi. AnsiSameText adalah fungsi boolean digunakan pada perform case-insensitive untuk mengkomputersi dua string lokal untuk digunakn lokal sistem komputer. AnsiSameText kembali True jika string dapat mengembalikan nilai, atau False ketika string tidak dapat mengembalikan kenilai yang sama seperti permintaan. AnsiSameText telah di encapsulate dalam platform-specific procedure dan fungsi untuk perform string kompresi. Dalam platform windows, fungsi WIN32 API telah mengunakan CompareString. 8. InMainThread, indikasi jika terjadi thread adalah main thread aplikasi itu sendiri. Function InMainThread: boolean; InMainThread terdapat fungsi boolean untuk mengidentifikasi jika terjadi thread kemudian mencegah main thread melakukan esekusi aplikasi. InMainThread mengisolasi indy untuk memanggil platform-specific seperti yang diinginkan agar mengidentifikasi thread dan aplikasi main thread. GetCurrentThreadID
dan
MainThreadID.
Untuk WIN32, memanggil
InMainThread
menggunakan
TIdAntiFreeze untuk implementasi proses pekerjaan fungsionalnya. 9. TIdPeerThread, thread digunakan agar client terkoneksi. TIdPeerThread = class(TIdThread) TIdPeerThread sebuah thread untuk membuat setiap koneksi dari TIdTCPServer. Setiap koneksi client berjalan didalam thread masing-masing pada TIdTCPServer. Permintaan untuk TIdPeerThreads dibuat di TIdListenerThread, dan didelegasikan untuk TIdThreadMgr pada TCP server. 10. TAccessFileEvent, spesifikasi terjadinya pembacaan atau penulisan pada file server.
37
TAccessFileEvent = procedure (Sender: TObject; var FileName: String; const PeerInfo: TPeerInfo; var GrantAccess: Boolean; var AStream: TStream; var FreeStreamOnComplete: Boolean) of object; TAccessFileEvent merupakan event type memberikan signal ketika Trivial FTP server ingin mengakses isi dari file stored pada lokal file sistem server. FileName mengidentifikasi name dari file pada file system server . PeerInfo berisikan PeerIp dan PeerPort pada koneksi client mempunyai berbentuk file access berikutnya tidak teridentifikasi. Ketika GrantAccess bernilai true, pada saat event file operation diizinkan. False mengindikasikan operation tidak diizinkan atau terjadi error. Update GrantAccess didalam
TAccessFileEvent terjadi pristiwa reflek pada operasional
tetap. AStream berisikan data untuk menulis file system local selama result file operation. Ketika FreeStreamOnComplete bernilai True, TAccessFileEvent event handler menjadikan terbebasnya aliran dalam AStream. 11. TIdServeFile, tipe fungsi untuk optimize file procedure transmissi. TIdServeFile = function (ASocket: TIdStackSocketHandle; AFileName: string): cardinal; TIdServeFile meupakan fungsi tipe kardinal sebuah fungsi sebelum digunakan untuk perform file transmisi. TIdServeFile merupakan abstraksi dari ServeFile mempunyai fungsi dibawah Windows NT untuk mengoptimasi akses sequential read-only. 12. TIdServerThreadEvent sepesifikasi event type untuk koneksi TCP server. TIdServerThreadEvent = procedure (AThread: TIdPeerThread) of object; TIdServerThreadEvent meupakan
event type untuk mengizinkan
TCP server
merespon requests berikutnya dari TIdPeerThread yang terkoneksi pada server. Berikutnya ketika TIdServerThreadEvent terjadi koneksi peer thread requests , melanjutkan event , atau tetap menutup koneksi pada TCP server.
38
13. GAntiFreeze, aplikasi variable global AntiFreeze. GAntiFreeze: TIdAntiFreezeBase = nil; TIdAntiFreezeBase menggunakan variable global GAntiFreeze, deklarasi didalam TIdAntiFreezeBase, untuk determinasi jika bagian yang lain belum siap untuk create. Hanya bagian TIdAntiFreezeBase yang selau mengikuti per aplikasi. GAntiFreeze merupakan awal dalam create konstruksi dari bagian pertama dari TAntiFreezeBase. 14. IndyPos, sepesifikasi fungsi pos memegang single atau multi byte set character. IndyPos: TPosProc = nil; IndyPos merupakan unit global TPosProc variable itu determinasi fungsi digunakan untuk fungsi single-byte dan multi-byte equivalent dari RTL Pos function. IndyPos juga diperuntukan pada bagian inisialisasi dari unit IdGlobal.pas,
dan akan
mengisikan pointer ke funsi digunakan untuk run-time support. Untuk single-byte set character, dimana leading byte adalah bilangan 0 (Desimal 0), IndyPos akan menggunakan alamat dari SBPos. SBPos merupakan implementasi dari fungsi pos yang ditutupi oleh Object Pascal "compiler magic". Untuk multi-byte set character, Indy pos akan menggunakan alamat dari AnsiPos [10].
3.8
Keuntungan dan kekurangan indy versi 9 & 10 Pada bagian ini, akan meninjau beberapa perubahan tertentu terhadap objek dalam
hirarki Indy 10, perubahan ini memiliki dampak pada kode dari Indy 9. 1. TIdInitializerComponent, adalah turunan TComponent sebagai kelas ancestor untuk visual komponen Indy. TIdInitializerComponent digunakan untuk mengkonsolidasikan perbedaan komponen visual seperti yang digunakan .Net dan
VCL. Komponen visual .Net biasanya dipanggil tanpa argumen.
39
TIdInitializerComponent
untuk membedaan hal ini dengan menerapkan
konstruktor overload untuk kedua platform yang menerima argumen. 2. TIdTCPConnection, merupakan bagian kecil
revisi ke antarmuka
TIdTCPConnection di Indy 10. Perubahan ini terdapat pada IOHandler dan properti Intercept. Indy 9 memperkenalkan konsep IOHandler, dirancang untuk mengenkapsulasi mekanisme input dan output digunakan untuk menghubungkan, memutuskan, mengirim, dan menerima data pada koneksi. Intinya untuk menyediakan sebuah antarmuka untuk IO. Kesulitannya adalah bahwa metode yang digunakan untuk membaca dan menulis dengan menggunakan IOHandler dimasukkan dalam
TIdTCPConnection. Metode
sering berlebihan untuk menerima jenis argumen yang benar untuk dilanjutkan, sehingga properti IOHandler meminta metode dengan benar. Indy 10 mengenkapsulasi ini kemudian ditingkatkan dan diperpanjang dengan menggerakan metode yang membaca atau menulis ke IOHandler misalnya class. Hal sama untuk properti Intercept kode akibatnya, yang diakses metode di
TIdTCPConnection
perlu
diperbarui
untuk
menggunakan
TIdTCPConnection. IOHandler atau properti TIdTCPConnection.Intercept. Sebagai contoh, sebagai berikut:
Kode 3.2 Potongan kode program Indy 9.
40
Kode 3.3 Potongan kode program Indy 10.
3. TIdTCPServerr, dasar TCP/IP server
telah direvisi untuk menggunakan
arsitektur threading untuk koneksi client ke server. Win32 menggunakan benang dan benang ringan dalam Win32 API. Untuk mengakomodasi berbagai tugas yang dieksekusi client, penjadwal TIdTCPServer
memperoleh
arsitektur yang menangani creation, execution, dan penutup koneksi client. Penjadwalan menggantikan ThreadMgr yang digunakan Indy 9. Pada dasarnya ada dua jenis penjadwal tersedia untuk TIdTCPServer: Thread-based dan Fiber-based. Setiap penjadwalan dirancang untuk bekerja dengan spesifik dan executable yang mewakili koneksi client. Penjadwalan threed tergantung pada Threed Fibers. Thread merupakan penjadwalan implementasi standar dalam TIdTCPServer yang menggunakan Thread untuk mewakili setiap koneksi client, juga sebagai fitur umum yang ditemukan pada semua platform dan sistem operasi hosting Indy library. 4. Protocol
Clients
dan
Servers
Indy
10,
client
dan
server
mengimplementasikan protokol Internet standar seperti TIdHTTP, TIdFTP, dll. Kompatibilitas disediakan dalam Indy Sistim dan Indy core. Perubahan lain menggunakan alamat IP versi 6 pada protokol client. Beberapa client dan server telah diubah untuk menerapkan fitur baru atau kemampuan seperti otentifikasi SASL, zlib kompresi / dekompresi, TLS (Transport Level Security), OTP (One-Time Password), OTP (One-Time Password)[11].
41
3.9
Windows Registry Windows registry adalah database yang menyimpan pengaturan konfigurasi
dan pilihan pada sistem operasi Microsoft windows. Berisikan pengaturan tingkat komponen sistem operasi dasar serta aplikasi yang berjalan di platform ini seperti : kernel, driver hardwere , service , Security Accounts Manager (SAM) , user interface dan aplikasi yang akan dirancang memanfaatkan registry. Registry menyediakan sarana untuk mengakses counter profil perfomen sistem. Pertama kali diperkenalkan dengan windows 3.1 , windows registry mempunyai tujuan utama menyimpan informasi konfigurasi untuk Component Object Model (COM) yang berdasarkan komponen. 3.9.1
Struktur dan values
Registry memiliki dua elemen dasar yaitu: keys dan values, registry keys mirip dengan folder di samping nilai-nilai, setiap key dapat berisi subkey, yang mungkin mengandung subkey berikutnya, dan seterusnya. Key direferensikan dengan sintaks sama dengan windows path name , menggunakan backslashes untuk menunjukkan tingkat hirarki. Misalnya :
HKEY_LOCAL_MACHINE \ Software \ Microsoft \
Windows mengacu pada subkey "Windows" , subkey "Microsoft" , subkey "Software" dan key adalah HKEY_LOCAL_MACHINE, ada enam key pada registry yaitu: 1. HKEY_CLASSES_ROOT (HKCR) HKEY_CLASSES_ROOT (HKCR) digunakan untuk kompilasi dari pengguna berbasis HKCU\Software\Classes dan mesin berbasis HKLM \ Software \ Classes. Jika nilai yang diberikan ada di kedua sub kunci di atas, diutamakan di HKCU \ Software \ Classes \. Desain memungkinkan untuk salah satu atau user tertentu sebesar mesin objek Component Object Model( COM ). 2. HKEY_CURRENT_USER (HKCU)
42
HKEY_CURRENT_USER menyimpan setting secara khusus digunakan untuk user saat login-in. Key HKCU adalah link subkey dari HKEY_USERS yang berhubungan dengan user, informasi yang sama dapat diakses di kedua lokasi. Pada Windows-NT berbasis sistem, pengaturan masing-masing user disimpan dalam file mereka sendiri yang disebut NTUSER.DAT dan USRCLASS.DAT.
3. HKEY_LOCAL_MACHINE (HKLM) HKEY_LOCAL_MACHINE menyimpan pengaturan spesifik ke komputer lokal. Pada versi berbasis Windows NT, HKLM berisi empat subkey, SAM, SECURITY, SOFTWARE dan SYSTEM, yang ditemukan dalam file masing-masing. Sebuah subkey kelima, HARDWARE, bersifat volatile dibuat secara dinamis, sehinggaa tidak disimpan dalam file. 4. HKEY_USERS (HKU) HKEY_USERS berisi subkey sesuai dengan key HKEY_CURRENT_USER setiap profil user yang aktif dimuat pada mesin, tempat user biasanya hanya dimuat untuk saat ini login-user. 5. HKEY_CURRENT_CONFIG HKEY_CURRENT_CONFIG mengandung informasi yang dikumpulkan saat runtime, informasi dalam key tidak disimpan permanen pada disk, melainkan diregenerasikan saat boot link ke HKEY_LOCAL_MACHINE\System\Current ControlSet\Hardware Profiles\Current . 6. HKEY_DYN_DATA HKEY_DYN_DATA kunci ini digunakan pada Windows 95, Windows 98 dan Windows Me, berisikan informasi perangkat keras, statistik performa jaringan
43
termasuk plug dan play. Informasi dalam key tidak disimpan di hard drive. Plug dan play informasi dikumpulkan, dikonfigurasi saat startup dan disimpan dalam memori. Value registry adalah pasangan nama data dalam key kecil. Value yang direferensikan secara terpisah dari key. Value dapat berisi nama, backslashes tetapi membuat sulit membedakan dari key utama. memanipulasi value,
Windows API mempunyai fungsi meminta dan
value registry mengambil nama lain dari key utama dan
menangani identifikasi istilah key [12].
3.10.
Mengenal API( Aplication Programming Interface )
Agar Indy dapat berjalan dalam program windows maka memerlukan aplikasi pendukung, dimana aplikasi tersebut sudah ada dalam windows itu sendiri dengan nama API( Aplication Programming Interface ). Aplication Programming Interface (API) salah satu atau beberapa prosedur atau fungsi yang terdapat pada sistem operasi, dimana fungsi-fungsi tersebut dapat diakses oleh bahasa pemrograman agar pembuatan program lebih efektif. Secara fisik API disimpan dalam sebuah file DLL (Dynamic Link Library) dan terdapat pada direktori sistem operasi windows. File DLL (Dynamic Link Library) adalah file library Windows merupakan file yang sudah dikompilasi dan dapat digunakan oleh program lain. Selain digunakan
oleh
sistem
operasi
Microsoft
Windows
dalam
menjalankan
operasinya, biasanya fungsi API ini digunakan untuk melakukan instruksi pemrograman tingkat rendah yang tidak dapat langsung digunakan oleh suatu bahasa pemrograman misalnya untuk mengakses file secara langsung, mengakses jaringan atau mencetak ke printer dan sebagainya. Dapat juga untuk mengakses sebuah perintah yang ada didalam sebuah tampilan windows, sebagai contoh untuk tampilan desktop, screen server, shutdown komputer. Berikut beberapa contoh fungsi yang dapat menjalankan insturksi tersebut:
44 •
Memulai aplikasi: ShellExecute(Handle, 'open', PChar('c:\test\app.exe'), nil, nil, SW_SHOW);
•
Memulai NotePad dan load file (sistem "mengetahui" lokasi Notepad.exe, sehingga
tidak
perlu
menentukan
path
lengkap):
ShellExecute(Handle, 'open', PChar('notepad'), PChar('c:\test\readme.txt'), nil, SW_SHOW); •
Open HTML page , local or remote. ShellExecute(Handle, 'open', PChar('http://www.festra.com/'), nil, nil, SW_SHOW);
•
Melakukan trik previuos dengan semua jenis file terdaftar data, misalnya membuka Text file : ShellExecute(Handle, 'open', PChar('c:\test\readme.txt'), nil, nil, SW_SHOW); HTML Help File : ShellExecute(Handle, 'open', PChar('c:\windows\help\calc.chm'), nil, nil, SW_SHOW);
•
Explore folder dengan Windows Explorer: ShellExecute(Handle, 'explore', PChar('c:\windows)', nil, nil, SW_SHOW);
•
Menjalankan perintah DOS dan kembali segera: ShellExecute(Handle, 'open', PChar('command.com'), PChar(' /c copy file1.txt file2.txt'), nil, SW_SHOW);
•
Menjalankan perintah DOS dan menjaga Dos-window terbuka ("tinggal di DOS"): ShellExecute(Handle, 'open', PChar('command.com'), PChar(' /k dir'), nil, SW_SHOW);
Fungsi- fungsi tersebut diatas menunjukkan bagaimana aplikasi tersebut dijalankan, fungsi ini dapat bernilai seperti pada table berikut :
45
Tabel 3.1 Parameter dan nilai kebalikan Fungsi dan nilai Kembalian SW_SHOWMINIMIZED
Arti Menampilkan aplikasi secara minimal (berbentuk icon)
SW_SHOWMAXIMIZED
Menampilkan aplikasi dengan (ukuran) window maksimal
SW_SHOWNORMAL
Menampilkan aplikasi dengan window normal.
0
Windows mengalami out of memory atau resources.
ERROR_BAD_FORMAT
File yang dijalankan bukan merupakan file aplikasi Windows
ERROR_FILE_NOT_FOUND
File yang dijalankan tidak ditemukan
ERROR_PATH_NOT_FOUND
Path file salah
3.10.1 Menghide Applikasi dalam Windows Task Manager Fungsi ini akan menghubungkan ke KERNEL32.DLL hanya bekerja pada Windows 95,98 dan ME untuk diwindows NT/ 2000/ XP tidak dapat mengeksport fungsi ini karena delphi tidak selalu suport pada windows fungsi ini.
46
// Works only on Windows 95,98 and ME. // The kernels of Windows NT/2000/XP do not export this function function RegisterServiceProcess(dwProcessID, dwType: DWORD): DWORD; stdcall; external 'KERNEL32.DLL'; begin // hide by registering as a service RegisterServiceProcess(GetCurrentProcessID, 1); // show again RegisterServiceProcess(GetCurrentProcessID, 0); end Kode 3.5 Potongan kode program menghide windows task manager.