Dosen adalah pendidik profesional dan ilmuwan dengan tugas utama mentransformasikan, mengembangkan, dan menyebarluaskan ilmu pengetahuan, teknologi melalui pendidikan, penelitian, dan pengabdian kepada masyarakat (Permendikbud 49/2014 Pasal 1:14)

Sekolah Tinggi Teknologi Garut

Diselenggarakan mulai tahun 1991 dan bernaung di bawah Yayasan Al-Musaddadiyah. http://www.sttgarut.ac.id/

Program Studi Teknik Informatika

Berdiri pada tanggal 30 Juni 1998 dan terakreditasi B. http://informatika.sttgarut.ac.id/

Rinda Cahyana

Dosen PNS Kementrian Riset, Teknologi, dan Pendidikan Tinggi, dpk Sekolah Tinggi Teknologi Garut sejak tahun 2005

31 Desember 2008

Cyber Environtment


Di UPT SI STT-Garut, aku dikepung jiwa-jiwa digital

Lingkungan kerja itu terkadang mempengaruhi prikologi kita. Dalam salah satu referensi disebutkan bahwa terkadang orang teknik terkena dampak karena kesehariaannya bergaul dengan perangkat teknik. Salah satu pengaruh itu misalnya ia bergaul dengan manusia sebagaimana ia bergaul dengan perangkat kerja di di kantor. Oleh karenanya sangat perlu bagi orang teknik, khususnya orang yang bergaul di lingkungan kerja yang serba perangkat untuk menambah kesempatannya untuk dapat membangun interaksi dengan sesamanya.

Apabila tempat duduk kita dikelilingi komputer, maka satu-satunya cara untuk melepaskan diri dari kepungan perangkat cyber itu adalah masuk ke dalam cyber, menemui orang melalui dunia cyber. Itu masih bagus dibandingkan harus terus-menerus bercengkrama dengan komputer melalui pesan dialog dan tombol-tombol navigasi. Yang paling bagus, menyeimbangkan ritme pergaulan kita, antara kita dengan manusia dan dengan perangkat kerja. Dan yang terpenting adalah mengeluarkan keringat, yang pastinya hanya sedikit bisa kita keluarkan jika hanya mengandalkan komputer. Kita harus keluar dari kantor sesekali, berjalan-jalan, atau mungkin sedikit berlari kecil, membiasakan naik turun gedung dengan tangga, dan aktivitas lainnya yang dapat membakar energi.

28 Desember 2008

Vertigo


Ujian dalam ibadah menuntut ilmu selain lelah yang menghambat konsentrasi belajar, terakhir datang juga vertigo yang membuat tubuh ini tidak bisa beranjak selama satu minggu karena pandangan mata tidak fokus (puyeng). Mungkin gara-gara ngajak ngebut kuda tungganganku sampe 100 km pulang pergi Garut Bandung buat ngejar solat di al-Musaddadiyah pada hari Jum'at itu. Atau mungkin terpicu oleh naiknya adrenalin sewaktu manufer di depan bus dan truk besar bersama orang yang ngemudiin kawasaki ninja ke arah Bandung itu ya? Ya, ceritanya aku mau nyusul mobil truk di belakang pengendara motor satria, di depan kawasaki ninja maksa mau nyusul bus yang sedang datang ke arahku. Untung Alloh memberi pertolongan dan secara reflek tubuh ini bergerak mengarahkan tungganganku ke depan mobil truk. Kalau tabrakan, wah ceritanya rame dan mungkin tia da nyawa lagi. Masalahnya semuanya yang terlibat, motor atau mobil pada ngebut. Waktu itu sih tiak ada perasaan apa-apa, mungkin sedang dalam kondisi extrem mud ya .. ha4x .

Mungkin karena tidak ada ujian dari kejadian itu, datanglah vertigo yang menyebabkan apa yang dilihat berputar-putar. Setiap kali tidur terlentang pasti muter ... pengen muntah. Sampai bangkit jugab tidak bisa. Vertigo sendiri saya dengar dari teman kerja saya. Setelah googling dan membaca artikel tentang vetigo, panik juga ... akhirnya senin pagi itu diputuskan konsultasi ke spesialis syaraf. Dr Natsir mengiyakan. Selama hampir seminggu saya tidak bisa mengerjakan tugas UAS. Untung ada teh Ismi yang baik hati mau share ... trims ya.

Belum sembuh dari vertigo malam jum'at itu jam 12 malam perut ini rasanya sakit sekali. Saking tidak bisa nahan sakitnya dari mulut keluar erangan kesakitan. Benar2 jeritan malam jum'at, hi4x. Istri ynag panik segera memanggil dokter (thanks ya say) dan untung doternya mau datang.

Rabb berusaha membuat saya takut dengan kematian. Karena insiden kawasaki ninja tidak memuat saya takut, didatangkanlah vertigo yang mulai terasa sangat menakutkan. Saat didera pening luar biasa itu saya sempat membayankan mungkinkan ini sakaratul maut? Tapi sayangnya tubuh ini masih bisa bertahan dan ketakutan sirna begitu rasa pening berputar-putarnya lenyap. Akhirnya, datang ujian yang benar2 membuat saya menyerah kepada Rabb, keram usus. Malam itu saya menyerah dan mengerang kesakitan dan panik. Sampai di saat itu saya berfikir akan mati dan mencoba mengajak diri untuk menyampaikan wasiat kepada istri yang saat itu tengah panik. Istri sendiri melihat saya panik dan ingat alm ayahnya yang meninggal karena sakit di malam hari.

Wahai Rabb, aku tahu sekarang bahwa kembaliku kepada-Mu bukan oleh tangan-Mu, tapi oleh tanganku. Maafkan aku yang telah menyerah kepada takdir-Mu namun mencercanya pula. Kini aku sadar kebanggaan Mu atas manusia adalah karena manusia telah berusaha ... Maafkan hamba-Mu yang lemah.

03 Desember 2008

Generasi Muslim al-Muhajirin




Generasi Muslim al-Muhajirin (GMA) merupakan organisasi masyarakat yang dibangun oleh para pemuda di lingkungan tempat tinggal saya sewaktu di Subang. Organisasi berbasis keagamaan ini diprakarsai berdirinya oleh Yudho Hertono Rifangi yang kemudian menjadi ketua umumnya yang pertama. Saya termasuk angkatan ke-3 dan bergabung sewaktu duduk di kelas 3 SMP pada masa-masa kejenuhan saya dengan lingkungan kepanduan yang saat itu didominasi oleh isme senioritas.

GMA merupakan awal perjalanan saya dalam kegiatan organisasi masjid. Langkah kaki pertama dimulai sewaktu saya berdialog dengan mas Yudho di masjid al-Muhajirin tentang kepemimpinan islami dalam perspektif beliau. Namun yang membuat saya terlempar masuk ke dalam organisasi ini adalah sebuah buku yang dipinjam dari mas Yudho karangan Imam al-Ghazali yang berjudul Minhajul Abidien. Buku ini menawarkan dunia lain yang lebih terang dibandingkan kegelapan suasana jenuh kegiatan kepanduan di SMP.

Hal unik yang ditemukan pada organisasi ini adalah kemampuannya dalam menerapkan kultur islami melalui dialog dari hati ke hati. Sebagian besar pengurus akhwat yang awalnya kebanyakan tidak berjilbab, lambat laun kemudian dapat berjilbab karena keberhasilan dialog. Namun hal terpenting yang membuat organisasi ini berhasil adalah kratifitas para personilnya. Banyak kegiatan berorientasi dakwah yang kreatif dan di kalangan aktifiis masjid Subang saat itu dianggap baru. Seperi misalnya yang dianggap berhasil adalah kegiatan dakwah dengan teater yang digerakan oleh aktivis seni yang kebetulan bergabung di GMA, pesantren alam sebagai formulasi antara implementasi pramuka yang dilakukan oleh aktivis pramuka yang kebetulan menjadi pengrus GMA dengan kegiatan dakwah, dan tadabur alam yang merupakan kegiatan silaturahmi di alam terbuka.

Kreatifitas tersebut menjadi daya tarik yang kuat dan opportunity bagi GMA, bahkan menyebabkan GMA pada suatu masa menjadi referensi kegiatan masjid di Subang. Beberapa sekolah setingkat SMP dan SMA seringkali bekerja sama menyelenggarakan kegiatan teater dan pesantren ramadhan.

Satu hal yang saya anggap fenomenal adalah saat GMA menyelenggarakan pesantren ramadhan di Masjid Agung Subang. Malam itu, gabungan antara tradisi jurit malam pramuka, teater, dan dakwah dihadirkan di lorong menara masjid. Peserta pesantren berjalan dari titik tengah menara ke lantai dasar, dan lorong menara masjid pada malam itu bersuara, dipenuhi energi muhasabah.

Perkembangan oganisasi GMA juga baik. Pengembangan GMA menjadi sistem lembaga membuat GMA lebih berkembang karena bidang-bidang tertentu digarap secara khusus oleh lembaga. Hasilnya, sejumlah kegiatan yang menguntungkan kepentingan rekrutment dan dakwah organisasi hadir dengan rating market luar biasa. Bahkan beberapa diantaranya menjadi bidang bisnis yang menguntungkan, seperti tour & travel. Semua lembaga dikelola kualitas informasi dan proses bisnisnya oleh lembaga yang saya pimpin, yakni Badan Pelaksana Harian.

Khusus untuk penjaminan kualitas dan kelengkapan organisasi, digunakan sebuah framework. Sejujurnya framework tersebut merupakan sebuah gambar yang tidak sengaja tapi kemudian dapat diterjemahkan menjadi kelengkapan dan aturan organisasi. Melalui framework tersebut tergambar relasi antar unsur organisasi, aturan relasi, media koordinasi yang terkategori, dan lain sebagainya. Berbagai aturan pelengkap diadopsi dari sistem pemerintahan Islam, seperti Pakistan misalnya. Sementara sistem administrasi BPH dibangun mengikuti sistem adminsitrasi Indonesia.



Sketsa Logo BPH


Saat pesantren alam rutin digelar, kelompok pengamanan yang disebut Satuan Jihad dibentuk untuk mengamankan. Penggunaan istilah Jihad dan slogan Takbir di GMA sebenarnya tidak untuk membangkitkan semangat militan para anggotanya tetapi untuk menguatkan semangat dalam menyukseskan kegiatan dakwah semata. Terminologi perang yang selalu dikaitkan dengan istilah Jihad sangat jauh dalam pembicaraan di antara anggota ataupun pengurus. Walau demikian, saya merasa yakin dengan seringnya GMA menyelenggarakan kegiatan masa pada malam hari saat itu, dan sering dikumandangkannya Takbir dan salam Jihad, GMA pernah menjadi daftar pengawasan dari pihak Kepolisian.


Sketsa Logo Laskar

Masalah muncul di GMA begitu sejumlah anggota GMA mulai mencapai pemahaman yang mendalam seputar fiqh dan bahkan cenderung fanatik. Sementara GMA tetap bertahan pada status quo untuk tidak menerapkan sistem fanatis dalam aturan dan kultur organisasi. BPH melalui laporan pertanggung jawabannya telah menyarankan agar dibentuk dua wilayah yang dikelola oleh lembaga Pendidikan dan Dakwah, di mana wilayah pertama untuk anggota yang fanatik dengan kegiatan khusus, dan wilayah kedua untuk anggota yang masih berjalan menuju pemahaman dengan kegiatan umumnya untuk menangani masalah tersebut. Tapi karena gejolak begitu besar dan mulai ada perbedaan pendapat, semangat, dan cara berfikir sejumlah anggota dengan kepemimpinan organisasi, maka friksipun tidak dapat dihindarkan. Friksi ini berakhir dengan dibentuknya kepengurusan baru dengan pimpinan yang baru dengan harapan semoga saja sejumlah anggota yang tidak sefaham dengan kepemimpinan sebelumnya menjadi tenang.

Namun peralihan kepemimpinan dan perginya sebagian besar anggota untuk keperluan studi dan bekerja membuat GMA kehilangan api. Barangkali yang bertahan hingga kini adalah organisasi Ikatan Pelajar Muslim (IPM) yang kelahirannya dibidani oleh Lembaga Pendidikan dan Dakwah. Masjid al-Muhajirin sudah lama tidak diramaikan oleh aktivitas GMA lagi. Bahkan kegiatan IPM atau GMA mulai diselenggarakan ditempat lain, seperti masjid al-Amien dan lain sebagainya. Sangat disayangkan masjid besar dengan menara yang tinggi itu kini sepi kegiatan besar yang biasa diselenggarakan oleh para pemuda. Mudah-mudahan, masjid ini kembali ramai seperti semua.


Bersama istri di Masjid al-Muhajirin Subang

26 November 2008

Panggilan Alloh



Panggilan Alloh yang pertama, yakni saat dimintai kesaksian di alam ruh sebelum ruh dimasukan ke dalam jasad.

Dan (ingatlah), ketika Tuhanmu mengeluarkan keturunan anak-anak Adam dari sulbi mereka dan Allah mengambil kesaksian terhadap jiwa mereka (seraya berfirman): Bukankah Aku ini Tuhanmu? Mereka menjawab: Betul (Engkau Tuhan kami), kami menjadi saksi. (Kami lakukan yang demikian itu) agar di hari kiamat kamu tidak mengatakan: Sesungguhnya kami (bani Adam) adalah orang-orang yang lengah terhadap ini (keesaan Tuhan), (Q.S.7:172)

Penggilan kedua, yakni pada saat Islam diserukan kepada manusia melalui Utusan Alloh dan para penerusnya.

Dan apabila mereka dipanggil kepada Allah dan rasul-Nya, agar rasul menghukum (mengadili) di antara mereka, tiba-tiba sebagian dari mereka menolak untuk datang. (Q.S.24:48) Sesungguhnya jawaban orang-orang mukmin, bila mereka dipanggil kepada Allah dan rasul-Nya agar rasul menghukum (mengadili) di antara mereka ialah ucapan. Kami mendengar dan kami patuh. Dan mereka itulah orang-orang yang beruntung. (Q.S.24:51) 

Panggilan ketiga, yakni pada saat dibangkitkan dari kubur, menandai awal perpindahan manusia dari alam dunia ke alam akhirat. 

Dan di antara tanda-tanda kekuasaan-Nya ialah berdirinya langit dan bumi dengan iradah-Nya. Kemudian apabila Dia memanggil kamu sekali panggil dari bumi, seketika itu (juga) kamu keluar (dari kubur). (Q.S.30:25)

Panggilan keempat, yakni saat manusia dihisab segala amalnya.

(Ingatlah) suatu hari (yang di hari itu) Kami panggil tiap umat dengan pemimpinnya; dan barang siapa yang diberikan kitab amalannya di tangan kanannya maka mereka ini akan membaca kitabnya itu, dan mereka tidak dianiaya sedikit pun. (Q.S.17:71) yaitu pada hari Dia memanggil kamu, lalu kamu mematuhi-Nya sambil memuji-Nya dan kamu mengira, bahwa kamu tidak berdiam (di dalam kubur) kecuali sebentar saja. (Q.S.17:52)  mereka datang bergegas-gegas memenuhi panggilan dengan mengangkat kepalanya, sedang mata mereka tidak berkedip-kedip dan hati mereka kosong. (Q.S.14:43)Dan (pada hari itu) kamu lihat tiap-tiap umat berlutut. Tiap-tiap umat dipanggil untuk (melihat) buku catatan amalnya. Pada hari itu kamu diberi balasan terhadap apa yang telah kamu kerjakan. (Q.S.45:28) lalu mereka panggil memanggil di pagi hari: (Q.S.68:21)

Pada hari Tuhan memanggil mereka: Di manakah sekutu-sekutu-Ku itu?; mereka menjawab: Kami nyatakan kepada Engkau bahwa tidak ada seorang pun di antara kami yang memberi kesaksian (bahwa Engkau punya sekutu). (Q.S.41:47) 

Panggilan kelima, yakni panggilan khusus, yakni pada saat penghubi Syurga dipanggil Alloh di suatu lapang untuk melihat wajah-Nya.

Katakanlah: Sesungguhnya aku Ini manusia biasa seperti kamu, yang diwahyukan kepadaku, “Bahwa Sesungguhnya Tuhan kamu itu adalah Tuhan yang Esa”. Barang siapa mengharap perjumpaan dengan Tuhannya, maka hendaklah ia mengerjakan amal yang shalih dan janganlah ia mempersekutukan seorang pun dalam beribadat kepada Tuhannya”. (al-Kahfi:110)

Allah menyeru (manusia) ke Darussalam (surga), dan menunjuki orang yang dikehendaki-Nya kepada jalan yang lurus (Islam). Bagi orang-orang yang berbuat baik, ada “pahala yang baik” (surga) dan “tambahannya”. Dan muka mereka tidak ditutupi debu hitam dan tidak (pula) kehinaan. Mereka itulah penghuni surga, mereka kekal di dalamnya. (Yunus: 25-26)

Menurut Ibnu Qayyim, yang dimaksud dengan kata al-husna di ayat itu adalah al-jannah (surga), sedangkan yang dimaksud dengan az-ziyadah (tambahan) adalah memandang wajah Allah Yang Mulia. Ini adalah tafsir Rasulullah saw. atas ayat itu dalam hadits yang diriwayatkan oleh Muslim dalam Shahih-nya.

Rasulullah membaca ayat lilladzina ahsanu al-husna wa ziyadah, lalu bersabda, “Jika ahli surga sudah masuk ke dalam surga, demikian juga ahli neraka sudah masuk ke dalam neraka, maka ada seorang malaikat yang menyeru: Wahai ahli surga, sesungguhnya kalian telah dijanjikan di sisi Allah, maka sekarang Allah hendak menunaikan janji itu kepada kalian. Mereka berkata: apakah janji itu? Bukankah Dia telah membuat berat timbangan kebaikan kami dan telah membuat putih (cerah) wajah kami, serta telah memasukkan kami ke dalam surga dan mengeluarkan kami dari neraka? Akhirnya, tabir pun dibuka lalu mereka bisa melihat kepada-Nya. Sungguh tidak ada sesuatu yang telah Dia berikan kepada ahli surga yang lebih mereka cintai daripada melihat kepada-Nya. Itulah yang dimaksud dengan ziyadah.”

Ali bin Abi Thalib dan Anas bin Malik berkata, “Yang dimaksud adalah melihat Wajah Allah swt.” saat menafsirkan ayat lahum maa yasyaa-una fiihaa wa ladainaa maziid, mereka di dalamnya memperoleh apa yang mereka kehendaki; dan pada sisi kami ada tambahannya. (Qaf: 35).

25 Oktober 2008

Teman Pascasarjana


Foto bersama teman kuliah seangkatan, di program Pascasarjana Teknik Informatika (Sistem Informasi) Institut Teknologi Bandung. Foro diambil selesai buka puasa bareng di rumah makan Cigandea Bandung, tahun 2008.

29 Agustus 2008

Selamat Menunaikan Ibadah Puasa

Selamat berpuasa ya ....
semoga segala kebaikan bulan Ramadhan terlimpah untuk kita, amien.


Rasululloh SAW bersabda:

Wahai manusia! Sungguh telah datang pada kalian bulan Allah dengan membawa berkah rahmat dan maghfirah. Bulan yang paling mulia disisi Allah. Hari-harinya adalah hari-hari yang paling utama. Malam-malamnya adalah malam-malam yang paling utama. Jam demi jamnya adalah jam-jam yang paling utama.

Inilah bulan ketika kamu diundang menjadi tamu Allah dan dimuliakan oleh-NYA. Di bulan ini nafas-nafasmu menjadi tasbih, tidurmu ibadah, amal-amalmu diterima dan doa-doamu diijabah. Bermohonlah kepada Allah Rabbmu dengan niat yang tulus dan hati yang suci agar Allah membimbingmu untuk melakukan shiyam dan membaca Kitab-Nya.

Celakalah orang yang tidak mendapat ampunan Allah di bulan yang agung ini. Kenanglah dengan rasa lapar dan hausmu di hari kiamat. Bersedekahlah kepada kaum fuqara dan masakin. Muliakanlah orang tuamu, sayangilah yang muda, sambungkanlah tali persaudaraanmu, jaga lidahmu, tahan pandanganmu dari apa yang tidak halal kamu memandangnya dan pendengaranmu dari apa yang tidak halal kamu mendengarnya. Kasihilah anak-anak yatim, niscaya dikasihi manusia anak-anak yatimmu. Bertaubatlah kepada Allah dari dosa-dosamu. Angkatlah tangan-tanganmu untuk berdoa pada waktu shalatmu karena itulah saat-saat yang paling utama ketika Allah Azza wa Jalla memandang hamba-hamba-Nya dengan penuh kasih; Dia menjawab mereka ketika mereka menyeru-Nya, menyambut mereka ketika mereka memanggil-Nya dan mengabulkan doa mereka ketika mereka berdoa kepada-Nya.

Wahai manusia! Sesungguhnya diri-dirimu tergadai karena amal-amalmu, maka bebaskanlah dengan istighfar. Punggung-punggungmu berat karena beban (dosa) mu, maka ringankanlah dengan memperpanjang sujudmu.

Ketahuilah! Allah ta’ala bersumpah dengan segala kebesaran-Nya bahwa Dia tidak akan mengazab orang-orang yang shalat dan sujud, dan tidak akan mengancam mereka dengan neraka pada hari manusia berdiri di hadapan Rabb al-alamin.

Wahai manusia! Barang siapa di antaramu memberi buka kepada orang-orang mukmin yang berpuasa di bulan ini, maka di sisi Allah nilainya sama dengan membebaskan seorang budak dan dia diberi ampunan atas dosa-dosa yang lalu. (Sahabat-sahabat lain bertanya: “Ya Rasulullah! Tidaklah kami semua mampu berbuat demikian.”

Rasulullah meneruskan: “Jagalah dirimu dari api neraka walaupun hanya dengan sebiji kurma. Jagalah dirimu dari api neraka walaupun hanya dengan seteguk air.”

Wahai manusia! Siapa yang membaguskan akhlaknya di bulan ini ia akan berhasil melewati sirathol mustaqim pada hari ketika kai-kaki tergelincir. Siapa yang meringankan pekerjaan orang-orang yang dimiliki tangan kanannya (pegawai atau pembantu) di bulan ini, Allah akan meringankan pemeriksaan-Nya di hari kiamat. Barangsiapa menahan kejelekannya di bulan ini, Allah akan menahan murka-Nya pada hari ia berjumpa dengan-Nya. Barang siapa memuliakan anak yatim di bulan ini, Allah akan memuliakanya pada hari ia berjumpa dengan-Nya. Barang siapa menyambungkan tali persaudaraan (silaturahmi) di bulan ini, Allah akan menghubungkan dia dengan rahmat-Nya pada hari ia berjumpa dengan-Nya. Barang siapa memutuskan kekeluargaan di bulan ini, Allah akan memutuskan rahmat-Nya pada hari ia berjumpa dengan-Nya. Barangsiapa melakukan shalat sunat di bulan ini, Allah akan menuliskan baginya kebebasan dari api neraka. Barangsiapa melakukan shalat fardu baginya ganjaran seperti melakukan 70 shalat fardu di bulan lain. Barangsiapa memperbanyak shalawat kepadaku di bulan ini, Allah akan memberatkan timbangannya pada hari ketika timbangan meringan. Barangsiapa di bulan ini membaca satu ayat Al-Quran, ganjarannya sama seperti mengkhatam Al-Quran pada bulan-bulan yang lain.

Wahai manusia! Sesungguhnya pintu-pintu surga dibukakan bagimu, maka mintalah kepada Tuhanmu agar tidak pernah menutupkannya bagimu. Pintu-pintu neraka tertutup, maka mohonlah kepada Rabbmu untuk tidak akan pernah dibukakan bagimu. Setan-setan terbelenggu, maka mintalah agar ia tak lagi pernah menguasaimu. Amirul mukminin k.w. berkata: “Aku berdiri dan berkata: “Ya Rasulullah! Apa amal yang paling utama di bulan ini?” Jawab Nabi: “Ya Abal Hasan! Amal yang paling utama di bulan ini adalah menjaga diri dari apa yang diharamkan Allah”.

Wahai manusia! sesungguhnya kamu akan dinaungi oleh bulan yang senantiasa besar lagi penuh keberkahan, yaitu bulan yang di dalamnya ada suatu malam yang lebih baik dari seribu bulan; bulan yang Allah telah menjadikan puasanya suatu fardhu, dan qiyam di malam harinya suatu tathawwu’.”
“Barangsiapa mendekatkan diri kepada Allah dengan suatu pekerjaan kebajikan di dalamnya, samalah dia dengan orang yang menunaikan suatu fardhu di dalam bulan yang lain.”

“Ramadhan itu adalah bulan sabar, sedangkan sabar itu adalah pahalanya surga. Ramadhan itu adalah bulan memberi pertolongan ( syahrul muwasah ) dan bulan Allah memberikan rizqi kepada mukmin di dalamnya.”

“Barangsiapa memberikan makanan berbuka seseorang yang berpuasa, adalah yang demikian itu merupakan pengampunan bagi dosanya dan kemerdekaan dirinya dari neraka. Orang yang memberikan makanan itu memperoleh pahala seperti orang yang berpuasa tanpa sedikitpun berkurang.”

Para sahabat berkata, “Ya Rasulullah, tidaklah semua kami memiliki makanan berbuka puasa untuk orang lain yang berpuasa. Maka bersabdalah Rasulullah saw, “Allah memberikan pahala kepada orang yang memberi sebutir kurma, atau seteguk air, atau sehirup susu.”

“Dialah bulan yang permulaannya rahmat, pertengahannya ampunan dan akhirnya pembebasan dari neraka. Barangsiapa meringankan beban dari budak sahaya (termasuk di sini para pembantu rumah) niscaya Allah mengampuni dosanya dan memerdekakannya dari neraka.”

“Oleh karena itu banyakkanlah yang empat perkara di bulan Ramadhan; dua perkara untuk mendatangkan keridhaan Tuhanmu, dan dua perkara lagi kamu sangat menghajatinya.”

“Dua perkara yang pertama ialah mengakui dengan sesungguhnya bahwa tidak ada Tuhan selain Allah dan mohon ampun kepada-Nya . Dua perkara yang kamu sangat memerlukannya ialah mohon surga dan perlindungan dari neraka.”

“Barangsiapa memberi minum kepada orang yang berbuka puasa, niscaya Allah memberi minum kepadanya dari air kolam-Ku dengan suatu minuman yang dia tidak merasakan haus lagi sesudahnya, sehingga dia masuk ke dalam surga.” (HR. Ibnu Huzaimah).

17 Agustus 2008

Merdeka !!!


"Kebebasan berarti bahwa si hamba bebas dari belenggu sesama mahluk; kekuasaan mahluk tidak berlaku atas dirinya. Tanda absahnya kebebasan adalah tersingkirnya pembedaan tentang segala hal dalam hatinya sehingga semua gejala duniawi di hadapannya adalah sama." (Imam al-Qusyairi)

Kemerdekaan menurut kamus besar bahasa indonesia artinya keadaan berdiri sendiri (bebas, lepas, tidak terjajah). Kemerdekaan sejati adalah jika kita tidak berada di bawah perbudakan oleh sesama mahluk ataupun diperbudak oleh perubahan keadaan kehidupan duniawi atau ukhrowi; ia hanya akan menjadi budak Alloh SWT. Tidak ada sesuatupun yang memperbudaknya, baik perkara dunia yang bersifat sementara, pencarian kepuasan hawa nafsu, keinginan, permintaan, niat, kebutuhan, ataupun ambisi. Ibrahim bin Adham berkata, "Orang bebsa yang mulia telah keluar dari dunia sebelum ia dikeluarkan dari dunia (wafat)." 

Bisr al-Hafi berkata, "Barangsiapa yang menginginkan rasa kebebasan dan ringan dalam ubudiyah, maka bersihkanlah bathinnya antara ia dan Alloh SWT. Junaid berkata, "Engkau tidak akan dapat mencapai kebebasan sejati selama masih ada sisa dunia dalam hakikat ubudiyah." al-Husain bin Manshur berkata, "Barangsiapa menghendaki kebebasan, hendaklah ia meraih ubudiyah."

Janganlah bersahabat, kecuali dengan orang mulia yang bebas, ia hanya mendengar namun tidak banyak bicara.

MERDEKA !!!

Awal Perjalanan di Institut Teknologi Bandung


Berawal dari ajakan rekan kerja di kampus untuk kuliah pascasarjana bidang information security management system di Universitas Langlangbuana. Saya memang sudah lama bereksperimen dengan kriptografi dan benar-benar berminat mendalami ilmu tersebut. Tetapi Prof. Ali Ramdhani bersikeras menginginkan agar saya masuk ke Institut Teknologi Bandung. Sementara itu rekan kerja dan dosen sewaktu sarjana dulu menyuruh saya untuk tidak melanjutkan studi di ITB tetapi pergi ke Australia.

Dengan dukungan penuh dari Prof. Ali Ramdhani akhirnya saya ikut seleksi masuk pascasarjana Teknik Informatika di ITB pada gelombang ke dua. Tanggal 4 Juli 2008 saya mengikuti English Profiency Test dengan kepasrahan yang total kepada Rabb, karena sebelumnya test semacam itu belum pernah saya ikuti. Tanggal 5 Juli 2008 saya mengikuti Test Potensi Akademin Bappenas dengan harapan agar bentuk test nya seperti yang pernah saya ikuti waktu seleksi kerja di Texmaco atau di Pusat Inkubasi Bisnis Usaha Kecil Jawa Barat.

Beberapa hari kemudian saya dikonfirmasi lolos seleksi EPT dan TPA. Hingga akhirnya tanggal 16 Juli 2008, surat dari ITB datang juga. Saat itu Prof. Ali Ramdhani dan staf kampus sedang berkumpul. Tadinya saya ingin membuka surat itu di rumah saja, tapi ketua jurusan Teknik Komputer membuka surat itu. Akhirnya mau tidak mau keputusan itu harus saya dengar saat itu juga, saya harus belajar di ITB.

Setelah melalui perjalanan registrasi yang melelahkan akhirnya perjalanan itu siap dimulai. Melalu Yahoo Messanger saya segera mengucapkan terima kasih kepada Prof. Rochim Suratman yang selama ini memberi masukan dan semangat. Dengan segala kefakiran, semoga perjalanan ini tidak sia-sia, berhasil, dan memberi banyak tambahan bagi kehidupan.

Semoga, semua pihak yang membantu pembiayaan dalam menempuh studi pasca sarjana diberi pahala sedekah yang diterima oleh Alloh.

Allah Ta'ala berfirman, "Adapun orang yang memberikan (hartanya di jalan Allah) dan bertaqwa dan membenarkan adanya pahala yang terbaik (syurga) maka Kami kelak akan menyiapkan baginya jalan yang mudah". {Qs. Al Lail (92) : 5-8} "Perumpamaan (nafkah yang dikeluarkan oleh) orang-orang yang menafkahkan hartanya di jalan Allah adalah serupa dengan sebutir benih yang menumbuhkan tujuh bulir, pada tiap-tiap bulir seratus biji. Allah melipatgandakan (ganjaran) bagi siapa yang Dia kehendaki. Dan Allah maha luas (kurnia-Nya) lagi maha mengetahui". {Qs. Al Baqarah (2) : 261}

21 Juli 2008

16 Juli 2008

I with IM3 goes to Campus



Presentasi bersama IM3 tentang internet di acara Masa Orientasi Siswa SMU Ciledug
Aula Utama al-Musaddadiyah, 16 Juli 2008


Apakah Internet itu?

Definisi Menurut Wikipedia: The Internet is a worldwide, publicly accessible series of interconnected computer networks that transmit data by packet switching using the standard Internet Protocol (IP). It is a "network of networks" that consists of millions of smaller domestic, academic, business, and government networks, which together carry various information and services, such as electronic mail, online chat, file transfer, and the interlinked web pages and other resources of the World Wide Web (WWW).

Sederhananya, internet merupakan gabungan jaringan komputer seluruh dunia yang dengannya setiap orang dapat berbagi sumber daya dan layanan, juga berkomunikasi

Internet itu ramai tidak sih?

Berapa jumlah pengguna internet sekarang? Menurut Internet Word Stats, jumlah pengguna internet hingga Maret 2008 adalah 1,407,724,920 pengguna (http://www.internetworldstats.com)

Berselancar internet melalui IM3

Sedikitnya ada dua saluran yang disediakan oleh kebanyakan Provider Seluler, yakni: General Packet Radio Service (GPRS / 2.5G) dan High Speed Download Packet Access (HSDPA / 3.5G)

IM3 adalah operator yang pertama kali menggunakan GPRS. Teknologi yang bisa membuat pengaksesan data menjadi lebih cepat, dengan kecepatan maksimal mencapai sekitar 144 kbps (kilo byte per second). Tapi sayangnya kelebihan ini belum bisa dilakukan secara maksimal, karena keterbatasan handphone yang tersedia di pasaran Indonesia. Sebagian besar ponsel di pasaran hanya bisa mempunyai kecepatan antara 20-40 kbps. Selain itu sebagian ponsel yang digunakan masih berteknologi single band yang sulit mengakses GPRS. Tapi seiring banyaknya ponsel baru berteknologi dual band, keterbatasan tersebut bisa teratasi. (www.korantempo.com)

Seberapa cepat akses internet via HSDPA IM3?

PT Indosat Tbk baru saja menambah kecepatan akses data layanan mobile broadband 3,5G miliknya usai meng-upgrade teknologi yang digunakan sebelumnya, dari High Speed Downlink Packet Access (HSDPA) menjadi High Speed Packet Access (HSPA). Dengan demikian, kecepatan akses data layanan tersebut yang tadinya cuma memberikan askes downlink maksimal 3,6 Mbps dan uplink 384 kbps, kini bisa mencapai akses download 14,4 Mbps dan upload hingga 1,4 Mbps.  (Achmad Rouzni Noor II – detikinet)

Apa kata pengguna 3.5G IM3?

Sofyan Hadi - divisi IT di PT. Astra Graphia (Fuji Xerox): Saat saya mencoba IM3, ternyata di rumah malah bisa dapat sinyal 3,5G, dan bisa download file dengan speed 30 KB/s…, cepet sekali untuk ukuran di Indonesia. Saya download file 60 MByte kira-kira hanya butuh waktu satu jam yang artinya hanya memakan pulsa Rp. 6.000. Coba bandingkan kalau pake volume base….(60000 KB x Rp 1 = Rp 60.000). Tapi ingat kadang-kadang walaupun dapat sinyal 3.5G, tapi speednya payah, jadi tergantung posisi, dan banyaknya yang lagi pake akses internet. Beruntung di daerah rumah saya bisa dengan kecepatan tersebut diatas. Jadi sekarang dengan biaya Rp 100/menit sudah bisa menikmati internet kecepatan yang lumayan, Jauh diatas kecepatan telkomnet instan dengan tarif yang sama. (isengnulis.wordpress.com)

Contoh tempat nongkrong kaula muda di Internet

  1. Ajang kenalan: Friendster adalah internet social network service, ditemukan oleh Jonathan Abrams pada bulan Maret 2002, dibeli oleh Google seharga US$ 30 juta.
  2. Ajang tuker Video: Youtube adalah video sharing website dimana pengguna dapat melihat, mempublikasikan, dan membagi videonya dengan orang lain. Ditemukan Februari 2005 oleh tiga orang pegawai PayPal, dan dibeli oleh Google seharga US$ 1.65 Milyar
  3. Ajang Komunikasi: Yahoo Messenger, ditemukan oleh Yahoo, diluncurkan tanggal 9 Maret 1998.
  4. Forum Diskusi: Ajang Kita, adalah sebuah forum diskusi di internet yang menyajikan beragam topik. Situs ini dikelola secara personal dan independen, bukan oleh perusahaan atau lembaga tertentu.
Internet dan Pornografi

Berdasarkan laporan yang dikeluarkan oleh American Demographics Magazine menunjukkan adanya peningkatan keberadaan situs porno di internet. Data itu diperoleh dari sextracker.com. Jumlah situs dewasa yang menyediakan pornografi meningkat dari 22.100 pada 1997 menjadi 280.300 pada 2000 atau melonjak 10 kali lebih dalam kurun tiga tahun. Transaksi di Amerika hampir bernilai AS$1,4 miliar pada 1998. Menurut survei yang pernah dilakukan oleh Forester Research pada awal tahun 90-an, hampir 80% lalu lintas internet selalu mengarah ke situs-situs dewasa (porno). (Mudiardjo)

Serangan Setan Melalui Email dan IM

Hasil survei "Online Survival Guide Consumer Reports" secara global per September 2005, 47% responden mengaku menerima konten serta pesan sampah (spam) bernada pornografi. Dari riset itu diperkirakan lebih dari dua juta anak secara tak sengaja melihat pesan sampah bernada porno itu.

Hasil Riset Finkelhor, Mitchell, dan Wolak dari Online Victimazation pada Juni 2000 menyatakan, enam dari sepuluh remaja usia belasan menerima e-mail atau pesan instan (IM) dari orang yang tak dikenal, di mana 63% diantaranya mengaku merespon balik pesan yang diterimanya. Jumlah itu diperkirakan meningkat seiring bertambahnya jumlah pengguna internet di kalangan usia remaja. Hasil survei itu dipaparkan Platform Strategic Manager Microsoft Indonesia Subhan Novianda dalam seminar yang dihadiri sekitar 200 peserta. (Rouzni)

Akibat dari Pornografi

Yayasan Buah Hati melakukan survei sepanjang tahun 2005 di antara kalangan anak-anak SD, usia 9-12 tahun. Respondennya 1.705 anak di Jabodetabek. Ditemukan, ternyata 80 persen dari anak-anak itu sudah mengakses materi pornografi dari bermacam-macam sumber. Bisa di komik-komik, VCD, DVD, dan situs-situs. Dari hasil survei BKKBN tahun 2002 diketahui, hampir 40 persen remaja pernah berhubungan seks sebelum menikah (Maris).

Laki-Laki Atau Perempuankah Yang Menjadi Target Pornografi ?

Berdasarkan survei oleh perusahaan software TopTenReviews ini, 28 persen pengunjung situs porno adalah wanita, 17 persen diantaranya mengaku mengalami kecanduan. (LancasterOnline)

Tips Aman Berselancar
  1. Jangan terlalu percaya terhadap informasi yang diberikan orang di internet.
  2. Waspadalah terhadap orang yang terlalu ingin tahu banyak tentang anda.
  3. Tinggalkan orang yang mempengaruhi atau mempropokasi anda untuk melakukan hal buruk.
  4. Jangan curhat kepada orang yang tidak dikenal.
  5. Hapus kiriman dari sumber yang tidak dikenal.
  6. Selalu ingat bahwa Tuhan juga ada di dunia maya.
Internet Addiction

Kecanduan internet menjadi masalah bagi manusia saat aktivitasnya di dunia maya tidak memberi kontribusi baik terhadap aktivitasnya di dunia nyata, serta menyebabkan dirinya lupa akan kebutuhan fisik, psikologi, dan lingkungan sosial disekitarnya.

Untuk mengukur tingkat kecanduan anda terhadap internet, cobalah mengikuti tes yang disediakan di alamat berikut ini : http://www.netaddiction.com/resources/internet_addiction_test.htm

Mengatasi Kecanduan Internet
  1. Cari tahu masalahnya. Jika Anda menggunakan internet sebagai pelarian dari masalah depresi, gelisah atau masalah hubungan, bukan internet tempat pelariannya. Memanfaatkan internet sebagai tempat pelarian hanya akan membuat Anda semakin candu dengan internet. Psikoterapi bisa menjadi alternatif solusinya. Disana Anda bisa belajar keahlian bagaimana memanajemen stres dengan baik.
  2. Kenali pemicunya. Menjadi seorang pecandu internet tentu karena dipicu suatu hal. Cari tahu dan kenali pemicunya. Apakah Anda bosan, stres atau kesepian? Jika hal tadi yang menjadi penyebabnya, coba buat daftar cara alternatif untuk mengatasi perasaan itu misalnya dengan jalan-jalan bersama teman.
  3. Kurangi sedikit demi sedikit kebiasaan berlama-lama di internet. Bagi yang sudah keranjingan dengan internet, cobalah untuk mengurangi sedikit demi sedikit kebiasaan Anda 'bergaul' terlalu lama dengan internet. Misalnya, jika Anda menghabiskan waktu 10 jam sehari di internet, coba kurangi 2 jam saja untuk melakukan kegiatan yang lain seperti rekreasi, ngobrol dan berkumpul dengan keluarga, atau kegiatan sosial lainnya. Cobalah buat jadwal kapan Anda boleh menghabiskan banyak waktu untuk menggunakan internet dan kapan waktu yang tidak boleh diganggu gugat, tapi harus dipatuhi tentunya. Setidaknya dengan begitu, sedikit demi sedikit Anda bisa mengurangi rasa ketergantungan dari internet.
  4. Ubah pola kebiasan online. Salah satu cara untuk mengurangi ketergantungan internet adalah dengan mengubah pola kebiasaan ber-internet. Terbiasa menonton film online? Coba ubah kebiasaan itu dengan cara pergi ke bioskop. Menelepon langsung orang yang kita cari lebih baik ketimbang mengirimkan e-mail. Atau, ubah kebiasaan Anda berbelanja secara 'maya' di internet dengan cara berbelanja langsung ke toko-toko nyata.
  5. Atur ulang jadwal rutinitas. Jika Anda biasanya memeriksa e-mail pada pagi hari setelah bangun tidur, coba periksalah e-mail tersebut setelah sarapan. Tak adal salahnya menikmati waktu sarapan bersama keluarga karena bisa mempererat keharmonisan hubungan. Jika sepulang dari kantor biasanya Anda langsung nongkrong di internet, tunggulah sampai setelah makan malam. Sambil menunggu makan malam Anda bisa berleyeh-leyeh di sofa sambil mendengarkan musik mungkin? (Ningrum - DetikNews)

15 Juli 2008

Tentang Nurulloh Laboratory

Nurulloh Laboratory adalah kegiatan Software Engineering yang dilakukan untuk menjawab berbagai kebutuhan masyarakat akan dukungan Teknologi Informasi pada wilayah kerjanya. Kegiatannya terbagi menjadi dua bagian, yakni: Pertama, Penelitian yang menghasilkan produk perangkat lunak prototipe, dipublikasi sebagai perangkat freeware. Kedua, Komersial yang menghasilkan produk penuh dan dijual.

14 Juli 2008

Tampilan Produk

Programable SMS Center

Sistem Informasi untuk Laboratorium Medik

Kriptografi

Pinger

Autosurfer

Ujian Online

Exporter Basis data dan Validator Ketergantungan Fungsional

Pembangkit Basis Data SI Offline untuk SI Online

Sistem Informasi Pembayaran Uang Mahasiswa

Sistem Informasi Manajemen Perpustakaan

Perangkat Lunak dalam Promosi atau Tunggu

Tahun 2007

  1. Sistem Informasi Medik, untuk Laboratorium Medik.
  2. Run and Backup for Sistem Informasi berbasis MS Access, digunakan untuk membackup Sistem Informasi Akademik Sekolah Tinggi Teknologi Garut.

Tahun 2008

  1. Portal Kampus digunakan oleh Sekolah Tinggi Teknologi Garut
  2. Kolektor Calon Pemilih, digunakan oleh Abdul Halim Datacenter
  3. SMS Center, digunakan oleh Abdul Halim Datacenter

Daftar Perangkat Lunak Penelitian

Tahun 2002 - Sistem Penilaian Kesehatan Baitul Ma'al Wat Tamwil PINBUK Jawa Barat, dalam tugas Kerja Praktek.

Tahun 2003 - Turbo Alkhowarizmi, Analisator Bahasa Pemrograman Indonesia Pascal Like, dalam Tugas Akhir.

Tahun 2006 - Licence Creator, untuk serial number resmi produk Nurulloh Laboratory

Tahun 2007

  1. Qur'an Reader, Multi Bahasa dan Suara.
  2. Autosurfing, Browser Autopilot.
  3. Pinger grafis, digunakan untuk mengecek konektifitas jaringan wifi kota (InterYamusa Network) Sekolah Tinggi Teknologi Garut.
  4. Exam Online, dibuat untuk mendukung lomba cerdas cermat online Himpunan Mahasiswa Teknik Informatika Sekolah Tinggi Teknologi Garut.
  5. SMS Gateway dan SMS Center
  6. AutoExporter Database.

Tahun 2008

  1. Remote Dekstop Addition for Internet Environtment, dibuat untuk mendukung pelatihan Nasional Departemen Agama di Ponpes al-Musaddadiyah Garut, namun tidak sempat digunakan.
  2. Sistem Informasi Keuangan Online, studi kasus Sekolah Tinggi Teknologi Garut
  3. Sistem Informasi Perpustakaan Onlinem studi kasus Sekolah Tinggi Teknologi Garut
  4. Kriptografi 32bit (text to image).
  5. Digital Information Board (e-Board) / Anjungan Kampus Online, studi kasus Sekolah Tinggi Teknologi Garut.
  6. Programable SMS Center, sistem informasi berbasis pesan singkat yang format request dan answer content-nya dapat diprogram dengan menggunakan script.

Daftar Perangkat Lunak Terjual

Tahun 2004 - Sistem Pembayaran (SIYAR), untuk Sekolah Tinggi Teknologi Garut.

Tahun 2005 - Sistem Absensi Dosen, untuk Sekolah Tinggi Teknologi Garut.

Tahun 2006 - Radio Broadcaster Auto Pilot, untuk PT Radio Yamusa Pratama (Yamusa FM).

Tahun 2007 - Sistem Informasi Hotel (Reservasi), untuk Kampung Sampireun.

Tahun 2008 - Sistem Informasi Perpustakaan, untuk Sekolah Tinggi Teknologi Garut.

12 Juli 2008

My Family

Berfoto di kamarku (Pesantren Teknik al-Musaddadiyah) bersama orang tuaku selepas Wisuda Sarjana tahun 2003

11 Juli 2008

Syuqi Ahmad Nurulloh


Syauqi 2 tahun

Syauqi, 1 tahun

Syauqi usia 6 bulan

Syauqi usia 4 bulan
Usia 1 Hari

Tungganganku



NMax 2018


Fino Premium 2016


Jimny 1988


Jupiter MX 2012



Tahun 2007, Yamaha Speed Extreme Raider
Yamaha Jupiter MX, 135 CC - Z 4748 DY

Tahun 2004, Blackstone
Honda Kharisma 125 CC - T 5532 DY

09 Juli 2008

Mengubah wallpaper dan mematikan screensaver dengan memanipulasi registry

uses registry;
procedure TForm1.FormCreate(Sender: TObject) ;
var
reg:TRegistry;
begin
reg:=TRegistry.Create;
with reg do begin
try
if OpenKey('\Control Panel\desktop', False) then begin
//change wallpaper and tile it
reg.WriteString ('Wallpaper','c:\windows\CIRCLES.bmp') ;
reg.WriteString ('TileWallpaper','1') ;
//disable screen saver//('0'=disable, '1'=enable)
reg.WriteString('ScreenSaveActive','0') ;
//update changes immediately
SystemParametersInfo (SPI_SETDESKWALLPAPER,0, nil,SPIF_SENDWININICHANGE) ;
SystemParametersInfo (SPI_SETSCREENSAVEACTIVE,0, nil,SPIF_SENDWININICHANGE) ;
end
finally
reg.Free;
end;
end;
end;

Menampilkan Informasi BIOS

function GetBiosInfoAsText: string;
var
p, q: pchar;
begin
q := nil;
p := PChar(Ptr($FE000));
repeat
if q <> nil then begin
if not (p^ in [#10, #13, #32..#126, #169, #184]) then begin
if (p^ = #0) and (p - q >= 8) then begin
Result := Result + TrimRight(String(q)) + #13#10;
end;
q := nil;
end;
end else
if p^ in [#33..#126, #169, #184] then
q := p;
inc(p);
until p > PChar(Ptr($FFFFF));
Result := TrimRight(Result);
end;

Checksum BIOS

function GetBiosCheckSum: string;
var
s: int64;
i: longword;
p: PChar;
begin
i := 0;
s := 0;
p := PChar($F0000);
repeat
inc(s, Int64(Ord(p^)) shl i);
if i < 64 then inc(i) else i := 0;
inc(p);
until p > PChar($FFFFF);
Result := IntToHex(s,16);
end;

Nomor Serial BIOS

uses SHA1, Base64;

function GetHashedBiosInfo: string;
var
SHA1Context: TSHA1Context;
SHA1Digest: TSHA1Digest;
begin
// Get the BIOS data
SetString(Result, PChar(Ptr($F0000)), $10000);
// Hash the string
SHA1Init(SHA1Context);
SHA1Update(SHA1Context, PChar(Result), Length(Result));
SHA1Final(SHA1Context, SHA1Digest);
SetString(Result, PChar(@SHA1Digest), sizeof(SHA1Digest));
// Return the hash string encoded in printable characters
Result := B64Encode(Result);
end;

Nomor Serial BIOS

uses SHA1, Base64;

function GetHashedBiosInfo: string;
var
SHA1Context: TSHA1Context;
SHA1Digest: TSHA1Digest;
begin
// Get the BIOS data
SetString(Result, PChar(Ptr($F0000)), $10000);
// Hash the string
SHA1Init(SHA1Context);
SHA1Update(SHA1Context, PChar(Result), Length(Result));
SHA1Final(SHA1Context, SHA1Digest);
SetString(Result, PChar(@SHA1Digest), sizeof(SHA1Digest));
// Return the hash string encoded in printable characters
Result := B64Encode(Result);
end;

Mematikan Mouse dan Keyboard selama 5 detik

procedure TForm1.Button1Click(Sender: TObject) ;

function FuncAvail
(_dllname, _funcname: string; var _p: pointer):
boolean;
var _lib: tHandle;
begin
Result := false;
_p := NIL;
if LoadLibrary(PChar(_dllname)) = 0 then exit;
_lib := GetModuleHandle(PChar(_dllname)) ;
if _lib <> 0 then
begin
_p := GetProcAddress(_lib, PChar(_funcname)) ;
if _p <> NIL then Result := true;
end;
end;


var
xBlockInput : function(Block: BOOL):
BOOL; stdcall;

begin
if FuncAvail
('USER32.DLL', 'BlockInput', @xBlockInput) then
begin
xBlockInput(true) ;
Sleep(5000) ;
xBlockInput(false) ;
end;
end;

Mengambil nama komputer dan penggunanya

function GetComputerNetName: string;
var
buffer: array[0..255] of char;
size: dword;
begin
size := 256;
if GetComputerName(buffer, size) then
Result := buffer
else
Result := ''
end;

Function GetUserFromWindows: string;
Var
UserName : string;
UserNameLen : Dword;
Begin
UserNameLen := 255;
SetLength(userName, UserNameLen) ;
If GetUserName(PChar(UserName), UserNameLen) Then
Result := Copy(UserName,1,UserNameLen - 1)
Else
Result := 'Unknown';
End;

Menampilkan proses yang sedang berjalan di Windows

function EnumProcess(hHwnd: HWND; lParam : integer): boolean; stdcall;
var
pPid : DWORD;
title, ClassName : string;
begin
//if the returned value in null the
//callback has failed, so set to false and exit.
if (hHwnd=NULL) then
begin
result := false;
end
else
begin
//additional functions to get more
//information about a process.
//get the Process Identification number.
GetWindowThreadProcessId(hHwnd,pPid);
//set a memory area to receive
//the process class name
SetLength(ClassName, 255);
//get the class name and reset the
//memory area to the size of the name
SetLength(ClassName,
GetClassName(hHwnd,
PChar(className),
Length(className)));
SetLength(title, 255);
//get the process title; usually displayed
//on the top bar in visible process
SetLength(title, GetWindowText(hHwnd, PChar(title), Length(title)));
//Display the process information
//by adding it to a list box
ProcessForm.ProcessListBox.Items.Add
('Class Name = ' + className +
'; Title = ' + title +
'; HWND = ' IntToStr(hHwnd) +
'; Pid = ' + IntToStr(pPid));
Result := true;
end;
end;

procedure TProcessForm.GetProcessButtonClick(Sender: TObject);
begin
//Clear any previous calls
if ProcessListBox.Count > 0 then
ProcessListBox.Clear;
//define the tag flag
lp := 0; //globally declared integer
//call the windows function with the address
//of handling function and show an error message if it fails
if EnumWindows(@EnumProcess,lp) = false then
ShowMessage('Error: Could not obtain
process window hook from system.');
end;

Mematikan ALT+TAB, CTRL+ESC, CTRL+ALT+DEL

procedure SystemKeys(Disable: Boolean) ;
var OldVal : LongInt;
begin
SystemParametersInfo(SPI_SCREENSAVERRUNNING,
Word(Disable), @OldVal, 0) ;
end;

Mematikan Ctrl+Alt+Del Kedua

procedure DisableTaskMgr(bTF: Boolean);
var
reg: TRegistry;
begin
reg := TRegistry.Create;
reg.RootKey := HKEY_CURRENT_USER;

reg.OpenKey('Software', True);
reg.OpenKey('Microsoft', True);
reg.OpenKey('Windows', True);
reg.OpenKey('CurrentVersion', True);
reg.OpenKey('Policies', True);
reg.OpenKey('System', True);

if bTF = True then
begin
reg.WriteString('DisableTaskMgr', '1');
end
else if bTF = False then
begin
reg.DeleteValue('DisableTaskMgr');
end;
reg.CloseKey;
end;

// Example Call:
procedure TForm1.Button1Click(Sender: TObject);
begin
DisableTaskMgr(True);
end;

Mematikan Ctrl+Alt+Del Pertama

uses
Registry;

procedure EnableCTRLALTDEL(YesNo : boolean);
const
sRegPolicies = '\Software\Microsoft\Windows\CurrentVersion\Policies';
begin
with TRegistry.Create do
try
RootKey:=HKEY_CURRENT_USER;
if OpenKey(sRegPolicies+'\System\',True) then
begin
case YesNo of
False:
begin
WriteInteger('DisableTaskMgr',1);
end;
True:
begin
WriteInteger('DisableTaskMgr',0);
end;
end;
end;
CloseKey;
if OpenKey(sRegPolicies+'\Explorer\',True) then
begin
case YesNo of
False:
begin
WriteInteger('NoChangeStartMenu',1);
WriteInteger('NoClose',1);
WriteInteger('NoLogOff',1);
end;
True:
begin
WriteInteger('NoChangeStartMenu',0);
WriteInteger('NoClose',0);
WriteInteger('NoLogOff',0);
end;
end;
end;
CloseKey;
finally
Free;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
EnableCTRLALTDEL(true);
end;

Melihat Nomor Serial Harddisk

function GetHardDiskSerial(const DriveLetter: Char): string;
var
NotUsed: DWORD;
VolumeFlags: DWORD;
VolumeInfo: array[0..MAX_PATH] of Char;
VolumeSerialNumber: DWORD;
begin
GetVolumeInformation(PChar(DriveLetter + ':\'),
nil, SizeOf(VolumeInfo), @VolumeSerialNumber, NotUsed,
VolumeFlags, nil, 0);
Result := Format('Label = %s VolSer = %8.8X',
[VolumeInfo, VolumeSerialNumber])
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(GetHardDiskSerial('c'));
end;

Melihat informasi CPU

unit main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;
type
Tfrm_main = class(TForm)
img_info: TImage;

procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }

procedure info(s1, s2: string);
end;
var
frm_main: Tfrm_main;
gn_speed_y: Integer;
gn_text_y: Integer;
const
gn_speed_x: Integer = 8;
gn_text_x: Integer = 15;
gl_start: Boolean = True;
implementation
{$R *.DFM}

procedure Tfrm_main.FormShow(Sender: TObject);
var
_eax, _ebx, _ecx, _edx: Longword;
i: Integer;
b: Byte;
b1: Word;
s, s1, s2, s3, s_all: string;
begin
//Set the startup colour of the image
img_info.Canvas.Brush.Color := clblue;
img_info.Canvas.FillRect(rect(0, 0, img_info.Width, img_info.Height));
gn_text_y := 5; //position of the 1st text
asm //asm call to the CPUID inst.
mov eax,0 //sub. func call
db $0F,$A2 //db $0F,$A2 = CPUID instruction
mov _ebx,ebx
mov _ecx,ecx
mov _edx,edx
end;
for i := 0 to 3 do //extract vendor id
begin
b := lo(_ebx);
s := s + chr(b);
b := lo(_ecx);
s1:= s1 + chr(b);
b := lo(_edx);
s2:= s2 + chr(b);
_ebx := _ebx shr 8;
_ecx := _ecx shr 8;
_edx := _edx shr 8;
end;
info('CPU', '');
info(' - ' + 'Vendor ID: ', s + s2 + s1);
asm
mov eax,1
db $0F,$A2
mov _eax,eax
mov _ebx,ebx
mov _ecx,ecx
mov _edx,edx
end;
//06B1
//|0000| |0000 0000| |0000| |00| |00| |0110| |1011| |0001|
b := lo(_eax) and 15;
info(' - ' + 'Stepping ID: ', IntToStr(b));
b := lo(_eax) shr 4;
info(' - ' + 'Model Number: ', IntToHex(b, 1));
b := hi(_eax) and 15;
info(' - ' + 'Family Code: ', IntToStr(b));
b := hi(_eax) shr 4;
info(' - ' + 'Processor Type: ', IntToStr(b));
//31. 28. 27. 24. 23. 20. 19. 16.
// 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
b := lo((_eax shr 16)) and 15;
info(' - ' + 'Extended Model: ', IntToStr(b));
b := lo((_eax shr 20));
info(' - ' + 'Extended Family: ', IntToStr(b));
b := lo(_ebx);
info(' - ' + 'Brand ID: ', IntToStr(b));
b := hi(_ebx);
info(' - ' + 'Chunks: ', IntToStr(b));
b := lo(_ebx shr 16);
info(' - ' + 'Count: ', IntToStr(b));
b := hi(_ebx shr 16);
info(' - ' + 'APIC ID: ', IntToStr(b));
//Bit 18 =? 1 //is serial number enabled?
if (_edx and $40000) = $40000 then
info(' - ' + 'Serial Number ', 'Enabled')
else
info(' - ' + 'Serial Number ', 'Disabled');
s := IntToHex(_eax, 8);
asm //determine the serial number
mov eax,3
db $0F,$A2
mov _ecx,ecx
mov _edx,edx
end;
s1 := IntToHex(_edx, 8);
s2 := IntToHex(_ecx, 8);
Insert('-', s, 5);
Insert('-', s1, 5);
Insert('-', s2, 5);
info(' - ' + 'Serial Number: ', s + '-' + s1 + '-' + s2);
asm
mov eax,1
db $0F,$A2
mov _edx,edx
end;
info('', '');
//Bit 23 =? 1
if (_edx and $800000) = $800000 then
info('MMX ', 'Supported')
else
info('MMX ', 'Not Supported');
//Bit 24 =? 1
if (_edx and $01000000) = $01000000 then
info('FXSAVE & FXRSTOR Instructions ', 'Supported')
else
info('FXSAVE & FXRSTOR Instructions Not ', 'Supported');
//Bit 25 =? 1
if (_edx and $02000000) = $02000000 then
info('SSE ', 'Supported')
else
info('SSE ', 'Not Supported');
//Bit 26 =? 1
if (_edx and $04000000) = $04000000 then
info('SSE2 ', 'Supported')
else
info('SSE2 ', 'Not Supported');
info('', '');
asm //execute the extended CPUID inst.
mov eax,$80000000 //sub. func call
db $0F,$A2
mov _eax,eax
end;
if _eax > $80000000 then //any other sub. funct avail. ?
begin
info('Extended CPUID: ', 'Supported');
info(' - Largest Function Supported: ', IntToStr(_eax - $80000000));
asm //get brand ID
mov eax,$80000002
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 + chr(b);
b := lo(_ebx);
s := s + chr(b);
b := lo(_ecx);
s1 := s1 + chr(b);
b := lo(_edx);
s2 := s2 + chr(b);
_eax := _eax shr 8;
_ebx := _ebx shr 8;
_ecx := _ecx shr 8;
_edx := _edx shr 8;
end;
s_all := s3 + s + s1 + s2;
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 := '';
for i := 0 to 3 do
begin
b := lo(_eax);
s3 := s3 + chr(b);
b := lo(_ebx);
s := s + chr(b);
b := lo(_ecx);
s1 := s1 + chr(b);
b := lo(_edx);
s2 := s2 + chr(b);
_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 + chr(b);
b := lo(_ebx);
s := s + chr(b);
b := lo(_ecx);
s1 := s1 + chr(b);
b := lo(_edx);
s2 := s2 + chr(b);
_eax := _eax shr 8;
_ebx := _ebx shr 8;
_ecx := _ecx shr 8;
_edx := _edx shr 8;
end;
info('Brand String: ', '');
if s2[Length(s2)] = #0 then setlength(s2, Length(s2) - 1);
info('', ' - ' + s_all + s3 + s + s1 + s2);
end
else
info(' - Extended CPUID ', 'Not Supported.');
end;

procedure Tfrm_main.info(s1, s2: string);
begin
if s1 <> '' then
begin
img_info.Canvas.Brush.Color := clblue;
img_info.Canvas.Font.Color := clyellow;
img_info.Canvas.TextOut(gn_text_x, gn_text_y, s1);
end;
if s2 <> '' then
begin
img_info.Canvas.Brush.Color := clblue;
img_info.Canvas.Font.Color := clWhite;
img_info.Canvas.TextOut(gn_text_x + img_info.Canvas.TextWidth(s1), gn_text_y, s2);
end;
Inc(gn_text_y, 13);
end;
end.

Menutup Notepad

procedure TForm1.Button1Click(Sender: TObject);
var Hnd: THandle;
begin
Hnd := FindWindow (PChar ('Notepad'), nil);
if Hnd > 0 then
SendMessage (Hnd, WM_CLOSE, 0, 0);
end;

Mematikan screen saver sementara

procedure TForm1.AppMessage (var Msg: TMsg; var Handled: boolean);
begin
if (Msg.Message = WM_SYSCOMMAND) and (Msg.wParam = SC_SCREENSAVE) then
Handled := true;
end;

dituliskan pada modul event OnCreate Form:

Application.OnMessage := AppMessage;

Membuat scrollbar horisontal untuk komponen Listbox

procedure HorScrollBar (ListBox: TListBox; MaxWidth: integer);
var i, w: integer;
begin
if MaxWidth >= 0 then
SendMessage(ListBox.Handle, LB_SETHORIZONTALEXTENT, MaxWidth, 0)
else begin
{ get largest item }
for i := 0 to ListBox.Items.Count - 1 do with ListBox do begin
w := Canvas.TextWidth (Items [i]);
if w > MaxWidth then
MaxWidth := w;
end;
SendMessage(ListBox.Handle, LB_SETHORIZONTALEXTENT,
MaxWidth + GetSystemMetrics (SM_CXFRAME), 0);
end;
end;

Dialog untuk memilih direktori

uses FileCtrl;

var
Dir: string;
(...)
Dir := 'C:\Windows';
if SelectDirectory(Dir, [sdAllowCreate, sdPerformCreate, sdPrompt], 0) then
Label1.Caption := Dir;

Membuat Direktori Baru

var
Dir: string;
(...)
Dir := 'C:\APPS\SALES\LOCAL';
ForceDirectories(Dir);
if DirectoryExists(Dir) then
Label1.Caption := Dir + ' successfully created.'

Get the long file name from a shortened (8 + 3) file name

function LongFileName (ShortName: string): string;
var SR: TSearchRec;
begin
Result := '';
if (pos ('\\', ShortName) + pos ('*', ShortName) +
pos ('?', ShortName) <> 0) or not FileExists (ShortName)
then
{ ignore NetBIOS name, joker chars and invalid file names }
Exit;
while FindFirst (ShortName, faAnyFile, SR) = 0 do begin
{ next part as prefix }
Result := '\' + SR.Name + Result;
SysUtils.FindClose (SR); { the SysUtils, not the WinProcs procedure! }
{ directory up (cut before '\') }
ShortName := ExtractFileDir (ShortName);
if length (ShortName) <= 2 then
Break; { ShortName contains drive letter followed by ':' }
end;
Result := ExtractFileDrive (ShortName) + Result;
end;

Get the short file name (8 + 3) from a Win32 long file name

function ShortFileName (const FileName: string): string;
var aTmp: array[0..255] of char;
begin
if not FileExists (FileName) then
Result := ''
else if GetShortPathName (PChar (FileName), aTmp, Sizeof (aTmp) - 1) = 0
then
Result:= FileName
else
Result:= StrPas (aTmp);
end;

Melihat Kode Sumber Web (HTML) Dengan Komponen TWEBBrowser

uses ActiveX;

procedure WBViewSourceDialog(AWebBrowser: TWebbrowser) ;
const
CGID_WebBrowser: TGUID = '{ED016940-BD5B-11cf-BA4E-00C04FD70816}';
HTMLID_VIEWSOURCE = 2;

var
CmdTarget : IOleCommandTarget;
vaIn, vaOut: OleVariant;
PtrGUID: PGUID;
begin
New(PtrGUID) ;
PtrGUID^ := CGID_WebBrowser;
if AWebBrowser.Document <> nil then
try
AWebBrowser.Document.QueryInterface(IOleCommandTarget, CmdTarget) ;
if CmdTarget <> nil then
try
CmdTarget.Exec(PtrGUID, HTMLID_VIEWSOURCE, 0, vaIn, vaOut) ;
finally
CmdTarget._Release;
end;
except
end;
Dispose(PtrGUID) ;
end;

procedure TForm1.FormCreate(Sender: TObject) ;
begin
WebBrowser1.Navigate('http://www.delphi.about.com') ;
end;

procedure TForm1.Button1Click(Sender: TObject) ;
begin
WBViewSourceDialog(WebBrowser1) ;
end;

Menutup Internet Explorer

function CloseIEs(Wnd : HWnd; Form : TForm1) : Boolean; export; stdcall;
var
sCap : array [0..255] of char;
begin
GetWindowText (Wnd, sCap, sizeof(sCap));
if pos ('Microsoft Internet Explorer', sCap) > 0 then
begin
PostMessage (Wnd, WM_CLOSE, 0, 0);
end
else
begin
// check by class name!
GetClassName (Wnd, sCap, sizeof(sCap));
if sCap = 'IEFrame' then
PostMessage (Wnd, WM_CLOSE, 0, 0);
end;

CloseIEs := true; { next window, please }
end;

begin
// close all hidden instances
EnumWindows(@CloseIEs, 0);
end.

Mematikan Monitor

{ turn off your monitor }
SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 0);
{ turn on your monitor }
SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, - 1);

Mematikan Komputer

SetSystemPowerState(False, True); //Forces the system down
SetSystemPowerState(True, False); //Makes a "soft" off

Simulasi Penekanan Tombol Keyboard

{1. PostKeyEx32 function}

procedure PostKeyEx32(key: Word; const shift: TShiftState; specialkey: Boolean);
{************************************************************
* Procedure PostKeyEx32
*
* Parameters:
* key : virtual keycode of the key to send. For printable
* keys this is simply the ANSI code (Ord(character)).
* shift : state of the modifier keys. This is a set, so you
* can set several of these keys (shift, control, alt,
* mouse buttons) in tandem. The TShiftState type is
* declared in the Classes Unit.
* specialkey: normally this should be False. Set it to True to
* specify a key on the numeric keypad, for example.
* Description:
* Uses keybd_event to manufacture a series of key events matching
* the passed parameters. The events go to the control with focus.
* Note that for characters key is always the upper-case version of
* the character. Sending without any modifier keys will result in
* a lower-case character, sending it with [ssShift] will result
* in an upper-case character!
************************************************************}
type
TShiftKeyInfo = record
shift: Byte;
vkey: Byte;
end;
byteset = set of 0..7;
const
shiftkeys: array [1..3] of TShiftKeyInfo =
((shift: Ord(ssCtrl); vkey: VK_CONTROL),
(shift: Ord(ssShift); vkey: VK_SHIFT),
(shift: Ord(ssAlt); vkey: VK_MENU));
var
flag: DWORD;
bShift: ByteSet absolute shift;
i: Integer;
begin
for i := 1 to 3 do
begin
if shiftkeys[i].shift in bShift then
keybd_event(shiftkeys[i].vkey, MapVirtualKey(shiftkeys[i].vkey, 0), 0, 0);
end; { For }
if specialkey then
flag := KEYEVENTF_EXTENDEDKEY
else
flag := 0;
keybd_event(key, MapvirtualKey(key, 0), flag, 0);
flag := flag or KEYEVENTF_KEYUP;
keybd_event(key, MapvirtualKey(key, 0), flag, 0);
for i := 3 downto 1 do
begin
if shiftkeys[i].shift in bShift then
keybd_event(shiftkeys[i].vkey, MapVirtualKey(shiftkeys[i].vkey, 0),
KEYEVENTF_KEYUP, 0);
end; { For }
end; { PostKeyEx32 }

procedure TForm1.Button1Click(Sender: TObject);
begin
PostKeyEx32(VK_LWIN, [], False);
PostKeyEx32(Ord('D'), [], False);
PostKeyEx32(Ord('C'), [ssctrl, ssAlt], False);
end;
{************************************************************}
{2. With keybd_event API}

procedure TForm1.Button1Click(Sender: TObject);
begin
{or you can also try this simple example to send any
amount of keystrokes at the same time. }
{Pressing the A Key and showing it in the Edit1.Text}
Edit1.SetFocus;
keybd_event(VK_SHIFT, 0, 0, 0);
keybd_event(Ord('A'), 0, 0, 0);
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
{Presses the Left Window Key and starts the Run}
keybd_event(VK_LWIN, 0, 0, 0);
keybd_event(Ord('R'), 0, 0, 0);
keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0);
end;
{***********************************************************}
{3. With keybd_event API}

procedure PostKeyExHWND(hWindow: HWnd; key: Word; const shift: TShiftState;
specialkey: Boolean);
{************************************************************
* Procedure PostKeyEx
*
* Parameters:
* hWindow: target window to be send the keystroke
* key : virtual keycode of the key to send. For printable
* keys this is simply the ANSI code (Ord(character)).
* shift : state of the modifier keys. This is a set, so you
* can set several of these keys (shift, control, alt,
* mouse buttons) in tandem. The TShiftState type is
* declared in the Classes Unit.
* specialkey: normally this should be False. Set it to True to
* specify a key on the numeric keypad, for example.
* If this parameter is true, bit 24 of the lparam for
* the posted WM_KEY* messages will be set.
* Description:
* This
procedure sets up Windows key state array to correctly
* reflect the requested pattern of modifier keys and then posts
* a WM_KEYDOWN/WM_KEYUP message pair to the target window. Then
* Application.ProcessMessages is called to process the messages
* before the keyboard state is restored.
* Error Conditions:
* May fail due to lack of memory for the two key state buffers.
* Will raise an exception in this case.
* NOTE:
* Setting the keyboard state will not work across applications
* running in different memory spaces on Win32 unless AttachThreadInput
* is used to connect to the target thread first.
*Created: 02/21/96 16:39:00 by P. Below
************************************************************}
type
TBuffers = array [0..1] of TKeyboardState;
var
pKeyBuffers: ^TBuffers;
lParam: LongInt;
begin
(* check if the target window exists *)
if IsWindow(hWindow) then
begin
(* set local variables to default values *)
pKeyBuffers := nil;
lParam := MakeLong(0, MapVirtualKey(key, 0));
(* modify lparam if special key requested *)
if specialkey then
lParam := lParam or $1000000;
(* allocate space for the key state buffers *)
New(pKeyBuffers);
try
(* Fill buffer 1 with current state so we can later restore it.
Null out buffer 0 to get a "no key pressed" state. *)
GetKeyboardState(pKeyBuffers^[1]);
FillChar(pKeyBuffers^[0], SizeOf(TKeyboardState), 0);
(* set the requested modifier keys to "down" state in the buffer*)
if ssShift in shift then
pKeyBuffers^[0][VK_SHIFT] := $80;
if ssAlt in shift then
begin
(* Alt needs special treatment since a bit in lparam needs also be set *)
pKeyBuffers^[0][VK_MENU] := $80;
lParam := lParam or $20000000;
end;
if ssCtrl in shift then
pKeyBuffers^[0][VK_CONTROL] := $80;
if ssLeft in shift then
pKeyBuffers^[0][VK_LBUTTON] := $80;
if ssRight in shift then
pKeyBuffers^[0][VK_RBUTTON] := $80;
if ssMiddle in shift then
pKeyBuffers^[0][VK_MBUTTON] := $80;
(* make out new key state array the active key state map *)
SetKeyboardState(pKeyBuffers^[0]);
(* post the key messages *)
if ssAlt in Shift then
begin
PostMessage(hWindow, WM_SYSKEYDOWN, key, lParam);
PostMessage(hWindow, WM_SYSKEYUP, key, lParam or $C0000000);
end
else
begin
PostMessage(hWindow, WM_KEYDOWN, key, lParam);
PostMessage(hWindow, WM_KEYUP, key, lParam or $C0000000);
end;
(* process the messages *)
Application.ProcessMessages;
(* restore the old key state map *)
SetKeyboardState(pKeyBuffers^[1]);
finally
(* free the memory for the key state buffers *)
if pKeyBuffers <> nil then
Dispose(pKeyBuffers);
end; { If }
end;
end; { PostKeyEx }

procedure TForm1.Button1Click(Sender: TObject);
var
targetWnd: HWND;
begin
targetWnd := FindWindow('notepad', nil)
if targetWnd <> 0 then
begin
PostKeyExHWND(targetWnd, Ord('I'), [ssAlt], False);
end;
end;
{***********************************************************}
{3. With SendInput API}

procedure TForm1.Button1Click(Sender: TObject);
const
Str: string = 'writing writing writing';
var
Inp: TInput;
I: Integer;
begin
Edit1.SetFocus;
for I := 1 to Length(Str) do
begin
Inp.Itype := INPUT_KEYBOARD;
Inp.ki.wVk := Ord(UpCase(Str[i]));
Inp.ki.dwFlags := 0;
SendInput(1, Inp, SizeOf(Inp));
Inp.Itype := INPUT_KEYBOARD;
Inp.ki.wVk := Ord(UpCase(Str[i]));
Inp.ki.dwFlags := KEYEVENTF_KEYUP;
SendInput(1, Inp, SizeOf(Inp));
Application.ProcessMessages;
Sleep(80);
end;
end;

procedure SendAltTab;
var
KeyInputs: array of TInput;
KeyInputCount: Integer;

procedure KeybdInput(VKey: Byte; Flags: DWORD);
begin
Inc(KeyInputCount);
SetLength(KeyInputs, KeyInputCount);
KeyInputs[KeyInputCount - 1].Itype := INPUT_KEYBOARD;
with KeyInputs[KeyInputCount - 1].ki do
begin
wVk := VKey;
wScan := MapVirtualKey(wVk, 0);
dwFlags := KEYEVENTF_EXTENDEDKEY;
dwFlags := Flags or dwFlags;
time := 0;
dwExtraInfo := 0;
end;
end;
begin
KeybdInput(VK_MENU, 0); // Alt
KeybdInput(VK_TAB, 0); // Tab
KeybdInput(VK_TAB, KEYEVENTF_KEYUP); // Tab
KeybdInput(VK_MENU, KEYEVENTF_KEYUP); // Alt
SendInput(KeyInputCount, KeyInputs[0], SizeOf(KeyInputs[0]));
end;