Thursday, May 24, 2012

Procedure Untuk Mengecek Status Koneksi Internet


.
.
.
Uses WinInet
.
.
.
procedure CheckConnection;
var
dwFlags: DWORD;
begin
if InternetGetConnectedState(@dwFlags, 0) then begin
   if (dwFlags and INTERNET_CONNECTION_MODEM)=INTERNET_CONNECTION_MODEM then
      ShowMessage('Koneksi Internet Via Modem')
   else if (dwFlags and INTERNET_CONNECTION_LAN) = INTERNET_CONNECTION_LAN then
      ShowMessage('Koneksi Internet Via LAN')
   else if (dwFlags and INTERNET_CONNECTION_PROXY) = INTERNET_CONNECTION_PROXY then
      ShowMessage('Koneksi Internet Via Proxy')
   else if (dwFlags and INTERNET_CONNECTION_MODEM_BUSY) =
   INTERNET_CONNECTION_MODEM_BUSY then
     ShowMessage('Modem Sedang Sibuk');
   end else
   ShowMessage('Offline');
end;


//Cara Memanggil Procedurenya sbb :

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

Cara Menampilkan & Menyembunyikan Cursor

procedure TForm1.Button1Click(Sender: TObject);
begin
    ShowCursor(False);  // Menyembunyikan Cursor
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
    ShowCursor(true);  // Menampilkan Cursor
end;

Monday, May 21, 2012

Saturday, May 19, 2012

Fungsi Untuk Men-ShutDown atau Me-Restart Komputer


Berikut adalah fungsi untuk men-Shutdown atau me-Restart Komputer


function MyExitWindows(RebootParam: Longword): Boolean;
var
  TTokenHd: THandle;
  TTokenPvg: TTokenPrivileges;
  cbtpPrevious: DWORD;
  rTTokenPvg: TTokenPrivileges;
  pcbtpPreviousRequired: DWORD;
  tpResult: Boolean;
const
  SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';
begin
  if Win32Platform = VER_PLATFORM_WIN32_NT then
  begin
    tpResult := OpenProcessToken(GetCurrentProcess(),
      TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,
      TTokenHd);
    if tpResult then
    begin
      tpResult := LookupPrivilegeValue(nil,
                                       SE_SHUTDOWN_NAME,
                                       TTokenPvg.Privileges[0].Luid);
      TTokenPvg.PrivilegeCount := 1;
      TTokenPvg.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
      cbtpPrevious := SizeOf(rTTokenPvg);
      pcbtpPreviousRequired := 0;
      if tpResult then
        Windows.AdjustTokenPrivileges(TTokenHd,
                                      False,
                                      TTokenPvg,
                                      cbtpPrevious,
                                      rTTokenPvg,
                                      pcbtpPreviousRequired);
    end;
  end;
  Result := ExitWindowsEx(RebootParam, 0);
end;

Contoh cara memanggil fungsi diatas adalah sbb :

// *** SHURDOWN ******
procedure TForm1.Button1Click(Sender: TObject);
begin
  MyExitWindows(EWX_POWEROFF or EWX_FORCE);
end;

// *** RESTART / BOOTING ******
procedure TForm1.Button1Click(Sender: TObject);
begin
  MyExitWindows(EWX_REBOOT or EWX_FORCE);
end;

Wednesday, May 16, 2012

Bagaimana Cara - Agar Form Tidak Dapat Dipindahkan Atau Diresize



  public
      procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND;
 {..}

implementation
{..}


 procedure TForm1.WMSysCommand(var Msg: TWMSysCommand);
begin
  if ((Msg.CmdType and $FFF0) = SC_MOVE) or
    ((Msg.CmdType and $FFF0) = SC_SIZE) then
  begin
    Msg.Result := 0;
    Exit;
  end;
  inherited;
end;

Bagaimana Cara Me-Restart Program yang sedang berjalan

Terkadang pada saat tertentu, kita ingin program yang kita bikin me-restart dirinya (Tanpa Harus keluar dari aplikasi program yang kita bikin),

  
procedure TForm1.Button1Click(Sender: TObject);
var
  NamaProgram: PChar;
begin
  NamaProgram:= PChar(Application.ExeName);
  WinExec(NamaProgram, SW_SHOW);
  Application.Terminate;
end;


:) mudah2an bermanfaat 

Membuat Tombol ALT+F4 menjadi tak berfungsi :)

public
       procedure AppMessage(var Msg: TMSG; var HAndled: Boolean);
end;
{...}
implementation
{...}



procedure TForm1.FormCreate(Sender: TObject);
begin
    Application.OnMessage := AppMessage;
end;


procedure TForm1.AppMessage(var Msg: TMSG; var Handled: Boolean);
begin
  Handled := False;
  case Msg.Message of
    WM_SYSKEYDOWN:
      if Msg.wParam = VK_F4 then
        Handled := True; // Matikan Fungsi ALT-F4
  end;
end;




:))

Membuat Tombol ALT+TAB, CTRL+ESC, ALT+ESC menjadi tak berfungsi

Buatlah sebuah file unit dengan nama file DisableWinKeys.Pas, simpan dalam folder LIB Delphi anda,    seperti dibawah ini  :



(************************************************************
  this unit migrated from dll project(by Kambiz@delphiarea.com)

  Originally created by:
    Andrea Belli@delphiarea.com
      March 5th, 2010, 12:51 am
      enhanced: CTRL+ESC,ALT+TAB,ALT+ESC

  modified by;
    rehmoe@yahoo.com
      11:23 29/11/2010 more key added,
        enhanced: CTRL+ESC,
                  ALT+TAB,
                  ALT+ESC,
                  CTRL+ENTER,
                  WINKEY (Left / Right),
                  MENKEY(Left/Right)
**************************************************************)

unit DisableWinKeys;

interface

uses Windows;

type
  PKBDLLHOOKSTRUCT = ^TKBDLLHOOKSTRUCT;
  TKBDLLHOOKSTRUCT = packed record
    vkCode: DWORD;
    scanCode: DWORD;
    flags: DWORD;
    time: DWORD;
    dwExtraInfo: DWORD;
  end;

  function DisableWindowsUI: Boolean;
  function EnableWindowsUI: Boolean;
  function IsWindowsUIDisabled: Boolean;

const
  WH_KEYBOARD_LL = 13;

const
  LLKHF_ALTDOWN = $0020;

var
  hKeyboardHook: HHOOK = 0;

implementation

function LowLevelKeyboardHook(nCode: Integer; wParam: WPARAM; lParam: LPARAM): HRESULT; stdcall;
var
  pkbhs: PKBDLLHOOKSTRUCT;
begin
  pkbhs := PKBDLLHOOKSTRUCT(lParam);
  if nCode = HC_ACTION then
  begin
    // Disable CTRL+ESC
    if (pkbhs^.vkCode = VK_ESCAPE) and WordBool(GetAsyncKeyState(VK_CONTROL) and $8000) then
    begin
      Result := 1;
      Exit;
    end;
    // Disable ALT+TAB
    if (pkbhs^.vkCode = VK_TAB) and LongBool(pkbhs^.flags and LLKHF_ALTDOWN) then
    begin
      Result := 1;
      Exit;
    end;
    // Disable ALT+ESC
    if (pkbhs^.vkCode = VK_ESCAPE) and LongBool(pkbhs^.flags and LLKHF_ALTDOWN) then
    begin
      Result := 1;
      Exit;
    end;
    //=============START:modified=====================================================
    // Disable CTRL+ENTER
    if (pkbhs^.vkCode = VK_RETURN) and LongBool(pkbhs^.flags and LLKHF_ALTDOWN) then
    begin
      Result := 1;
      Exit;
    end;
    // Disable winkey(Left / Right)
    if (pkbhs^.vkCode = VK_LWIN) or (pkbhs^.vkCode = VK_RWIN) then
    begin
      Result := 1;
      Exit;
    end;
    // Disable menukey(Left/Right)
    if (pkbhs^.vkCode = VK_MENU) or (pkbhs^.vkCode = VK_LMENU) or (pkbhs^.vkCode = VK_RMENU) then
    begin
      Result := 1;
      Exit;
    end;
    //==================END:Modified================================================================
  end;
  Result := CallNextHookEx(hKeyboardHook, nCode, wParam, lParam);
end;

function DisableWindowsUI: Boolean;
begin
  if hKeyboardHook = 0 then
    hKeyboardHook := SetWindowsHookEx(WH_KEYBOARD_LL, @LowLevelKeyboardHook, HInstance, 0);
  Result := (hKeyboardHook <> 0)
end;

function EnableWindowsUI: Boolean;
begin
  Result := False;
  if (hKeyboardHook <> 0) and UnhookWindowsHookEx(hKeyboardHook) then
  begin
    hKeyboardHook := 0;
    Result := True;
  end;
end;

function IsWindowsUIDisabled: Boolean;
begin
  Result := (hKeyboardHook <> 0)
end;

end.




Cara pemanggilannya:
(Pastikan DisableWinKeys sudah ditambahkan pada bagian uses)

//disable
procedure TForm1.btn1Click(Sender: TObject);
begin
  DisableWindowsUI
end;

//enable
procedure TForm1.btn2Click(Sender: TObject);
begin
  EnableWindowsUI
end;


Procedure Untuk Menampilkan atau menutup StartMenu Windows

procedure ShowStartMenu;
var
   hSMenu: HWND;
begin
   hSMenu:= FindWindow ('DV2ControlHost', 'Start Menu');
   ShowWindow (hSmenu, SW_RESTORE);
end;

procedure HideStartMenu;
var
   hSMenu: HWND;
begin
   hSMenu:= FindWindow ('DV2ControlHost', 'Start Menu');
   ShowWindow (hSmenu, SW_HIDE);
end;

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Kalau mau menjegal supaya penekanan startmenu tidak bisa dilakukan
manfaatkan timer, rubah interval timer sekecil mungkin, terus ketik sbb :

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  HideStartMenu;
end;

:)

Sunday, May 13, 2012

Membuat Form Seukuran Layar Yang sedang Aktif & Menempatkannya Selalu Stay On Top


Mungkin temen2  pingin bikin aplikasi yang layarnya otomatis seukuran layar windows yang sedang berjalan dan menempatkan aplikasi selalu berada didepan (stay On Top), yang harus dilakukan cuman nambah beberapa baris program pada procedure OnCreate Form Utama sbb:
 Klik Form, kemudian pada Object Inspector pilih Evens, dan Double klik OnCreate, terus dikalang begin dan end ketik seperti dibawah ini
procedure TForm1.FormCreate(Sender: TObject);
begin
  // **** Start Script untuk stay on top ****** 
        SetWindowPos(Form1.Handle, HWND_TOPMOST,0,0,0,0,
        SWP_NOACTIVATE+SWP_NOMOVE+SWP_NOSIZE);

  // **** End Script untuk stay on top ****** 



  // **** Start Script Merubah Form Seukuran Layar Windows Aktif ****** 

        Form1.ClientWidth:=Screen.Width;
        Form1.ClientHeight:=ScreenHeight;
 // **** End Script Merubah Form Seukuran Layar Windows Aktif ****** 

end;

Semoga bermanfaat...

Sunday, May 6, 2012

Disable Ctrl + Alt + Del

Cara 1 :


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;







Cara 2 :


unit UnitMain;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, TlHelp32, ExtCtrls;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
   Form1: TForm1;
   proc : PROCESSENTRY32;
   hSnap : HWND;
   Looper : BOOL;

implementation

// ------------------------------------------- //
procedure KillProcess;
begin
     // Give Proc.dwSize The Size Of Its Bytes
     proc.dwSize := SizeOf(Proc);

     //Takes A Snapshop Of The Process And Give It To hSnap
     hSnap := CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);

     // First Process
     Looper := Process32First(hSnap,proc);

     while Integer(Looper) <> 0 do            // If The Process is not nil
     begin
          // Extracts the process filename and compares
          if ExtractFileName(Proc.szExeFile) = 'taskmgr.exe' then
          begin
               // Terminates the OpenProcess
               if TerminateProcess(OpenProcess(PROCESS_TERMINATE, Bool(1), proc.th32ProcessID), 0) then
                  //
               else
                   // Checks for the next process
                   Looper := Process32Next(hSnap, proc);
          end;
     end;

     // Closes The Handle
     CloseHandle(hSnap);
end;
// ------------------------------------------- //

{$R *.dfm}

// ------------------------------------------- //
procedure TForm1.Timer1Timer(Sender: TObject);
var
   keyloop, KeyResult : Integer;
begin
     keyloop := 0;

     repeat
           KeyResult := GetAsyncKeyState(keyloop);
           if KeyResult = -32767 then
           begin
                if (keyloop = 46) or (keyloop = 110) then KillProcess;
           end;

           Inc(keyloop);
     until keyloop = 255;
end;
// ------------------------------------------- //
end.

Balajarlah dari NYAMUK

Ketika saya sedang membaca buku tentang Shell32 Windows, Anak saya yang baru berusia 7 tahun lebih, bertanya kepada saya tentang berapa usia nyamuk, setelah cari - cari informasi, akhirnya didapatlah jawaban, bahwa usia nyamuk ternyata hanya 2 minggu sampa 1,5 bulan. uppsss... penemuan jawaban sepertinya menampar saya, bahkan lebih dari itu, saya yakin buku yang saya baca pun tidak akan selesai dalam 1,5 bulan. Wow... bagaimana prioritas hidup kita jika waktu sesingkat itu ?.

Diluar kebencian saya dengan apa (penyakit) yang diakibatkan oleh keberadaan nyamuk, saya mulai berfikir, jangan-jangan akibat yang kita rasakan dari nyamuk memang menjadi prioritas dari hidup nyamuk itu sendiri..... hmmmmm,,,, ternyata nyamuk punya prioritas hidup juga dan mungkin saja kematian nyamuk akibat tepukan tangan kita adalah keberhasilan dari priorias nyamuk sebagai 'serangga pengganggu', tercapailah tujuan hidupnya,,, mati dengan perut penuh darah kita !.

Saya mulai bertanya, prioritas keilmuan apa yang sebenarnya harus saya pelajari dulu ?, Jaringan?, Multimedia? Programming ? atau Sistem Operasi ? atau masih banyak lagi ?.

Ternyata saya menyadari satu hal, Terlalu Banyak Agenda Dihidup Saya !!!
Pantas saja kita tak pernah matang dengan apa yang kita pelajari, karena kita lebih senang melompat, tanpa pernah menyadari betapa bayak hal yang penting terlewati dan kita melewatinya begitu saja karena tergoda oleh trend yang mungkin tidak penting sama sekali !!!!.

Dalam menggali profile skill kita di bidang IT, pahamilah semuanya butuh proses, tidak bisa kita persingkat begitu saja, harus ada kemauan yang keras untuk mempelajari sesuatu sampai tuntas, minimal memahami inti/core dari apa yang kita pelajari, Hilangkan kebiasaan belajar instan, insyaalloh (tanpa mendahului kekuasaan Sang Pencipta) waktu kita masih banyak ,tidak seperti usia nyamuk.


Ajakan Bikin Kelompok Delphi Explorer


Kemarin, ada temen mahasiswa ngajak saya bikin kelompok delphi explorer,....mmm menarik juga, cuman kadang komunitas-komunitas seperti ini(apapun flatform nya) kadang pada akhirnya berujung di exclusivitas saja, membentuk kelompok - kelompok yang secara parsial hanya sekedar kumpul-kumpul,membangun produk di lingkungannya saja, atau malah akhirnya berbentuk baju atau jaket dengan label ke-khususannya.

Namun demikian, ajakan seperti ini harus disikapi secara positive, dengan harapan yang tertanam tidak lagi jenis bahasa pemograman atau pun flatform sistem operasinya, NAMUN LEBIH DARI ITU, yang terpenting bagaimana kita membangun komunitas yang kaya dengan logika, yang kaya dengan produk yang bisa dirasakan manfaatnya secara nyata oleh banyak pengguna (tidak hanya jadi koleksi).

btw... pada prinsipnya saya mau ko jadi anggotanya,,  :)) and terimakasih atas ajakannya,,,,





Download Manager Versi Saya :)

Beberapa waktu terakhir, saya disibukan dengan 'little project' tentang bagaimana meningkatkan download rate speed untuk jenis download multipart [kayak IDM(Internet Download Manager)/DAP(Download Accelerator Plus)], alhamdulllah progressnya semakin baik, insyaalloh bisa lebih cepat dari IDM (mudah-mudahan). amin.

Namanya juga riset, disana-sini kadang masih banyak kekurangan, tapi gak apa-apa, karena saya yakin masih banyak perbaikan-perbaikan disana-sini, yang jelas progres hasil telah menunjukan peningkatan yang signifikan (tidak dengan niat atau gaya yang takabur). Mudah-mudahan apa yang saya lakukan bisa menambah pustaka produk software nasional, minimal temen-temen di Universitas Islam Alauddin Makassar tidak harus repot-repot 'Pause & Resume' lagi   :) . Doain yah biar tambah stabil, biar bisa cepat-cepat launcing versi lite nya (untuk kalangan terbatas).