Thursday, 13 February 2014

Mendapatkan Directory Aktif [Delphi]

Assalamualaykum wr. wb.
selamat malam kawan, udah lama saya gak ngeposting Artikel di blog ini
Pada kesempatan kali ini saya akan berbagi ilmu
bagaimana mendapatkan Directory Aktif di delphi


nah biasanya ya
fitur ini itu buat kesempurnaan fitur RTP pada suatu antivirus
tapi kebanyakan mereka dibuat dari Visual Basic 6
Oke langsung saja!

-buat 1 buah kotak textbox atau biasa disebut edit text
-buat 1 buah timer dengan interval 1000

masukkan code dibawah ini
procedure TForm1.Timer1Timer(Sender: TObject);
var wnd, wnd2: HWND;
Buffer : array[0..255] of Char;
begin
wnd := FindWindow('CabinetWClass', nil);
if wnd <> 0 then  begin
    wnd2 := FindWindowEx(wnd, 0, 'WorkerW', nil);
      if wnd2 <> 0 then
      begin
        wnd2 := FindWindowEx(wnd2, 0, 'ReBarWindow32', nil);
          if wnd2 <> 0 then
          begin
          wnd2 := FindWindowEx(wnd2, 0, 'Address Band Root', nil);
            if wnd2 <> 0 then
            begin
            wnd2 := FindWindowEx(wnd2, 0, 'msctls_progress32', nil);
              if wnd2 <> 0 then
              begin
                wnd2 := FindWindowEx(wnd2, 0, 'Breadcrumb Parent', nil);
                if wnd2 <> 0 then
                begin
                  wnd2 := FindWindowEx(wnd2, 0, 'ToolbarWindow32', nil);
                  SendMessage(wnd2, WM_GETTEXT, 255, integer(@Buffer));
                  Edit1.Text := Buffer;
                  edit1.Text := copy(edit1.Text, 10, length(edit1.Text)-4);
                end;

              end;
            end;
          end;
      end;
  end;
end;


maka hasilnya akan seperti dibawah ini

Konsep
FindWindow ==> FindWindowEx..sampai yang terakhir class tempat ==> SendMessage[WM_GETTEXT]
FindWindow = dapatkan class explorernya
FindWindowEx   = dapatkan childclass
SendMessage[WM_GETTEXT] = dapatkan tulisannya

Telah diUji coba di Windows 7

0 comments:

Post a Comment

Pembaca yang baik pasti akan meninggalkan jejak dengan cara meninggalkan komentar

berkomentarlah dengan bijak :)