Help - Excel - VCL form

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
loaded
Üye
Mesajlar: 122
Kayıt: 12 Eki 2010 09:45
Konum: Konya
İletişim:

Re: Help - Excel - VCL form

Mesaj gönderen loaded »

Firstly;
-CreateToolHelp32SnapShot and Process32First
You should take a snapshot of the system with its commands. The ThreadId information of the application you want will be included in the image you receive.
-GetWindowThreadProcessID
It will give the window handle of the ThreadId information.
And with the EnumChildWindows command you will get the handles of other child windows. Respects.
Kalk ve işe yarar bir şey yap! Çünkü Allah (c.c.) yeniden başlayanların yardımcısıdır.
Kullanıcı avatarı
loaded
Üye
Mesajlar: 122
Kayıt: 12 Eki 2010 09:45
Konum: Konya
İletişim:

Re: Help - Excel - VCL form

Mesaj gönderen loaded »

Konu ile ilgili daha önce yaptığım bir çalışma (Lazarus kullanılarak yapılmıştır.) işimi görmüştü. İncelemenizde yarar var diye düşünüyorum.
O zaman yararlandığım bir kaynak ; http://aziga.x10.mx/delphi/index.php?op ... &Itemid=11
Dosya ekleri
PidConvertoHandle.rar
(126.15 KiB) 52 kere indirildi
Kalk ve işe yarar bir şey yap! Çünkü Allah (c.c.) yeniden başlayanların yardımcısıdır.
Kullanıcı avatarı
loaded
Üye
Mesajlar: 122
Kayıt: 12 Eki 2010 09:45
Konum: Konya
İletişim:

Re: Help - Excel - VCL form

Mesaj gönderen loaded »

Lazarus kullanıyorum, delphi kullanmıyorum. O yüzden delphi için biraz değişiklik yapmanız gerekebilir.
En basit şekliyle ;
Unit1.pas içerisindeki kodları inceleyerek, ilgilendiğiniz Uygulamaya ve içerisindeki handle verisi olan kontrollere erişebilirsiniz. Bence, işin en önemli kısmı EnumChildWindows. İlgili kullanımı ise ;

Kod: Tümünü seç

function blah( HWnd : Cardinal; Param : longint):bool;stdcall;
    function GetWindowContents(WindowHandle: Integer): string;
    var
      Buffer: String;
        BufLen: Integer;
    begin
      BufLen := SendMessage(WindowHandle, WM_GETTEXTLENGTH, 0, 0);
      SetLength(Buffer, BufLen + 1);
      SendMessage(WindowHandle, WM_GETTEXT, BufLen + 1, LParam(PChar(Buffer)));
      result:=buffer;
    end;

var
  a: pchar;
  New: String;
begin
 a:= stralloc(256);
 getclassname(hwnd, a, 255);
    with Form1.TreeView1.Items do
    begin
    AddChild(MyTreeNode1,
        inttostr(HWnd)+'    '+
        IntToHex(HWnd,8)+'    '+
        //a+'     ' +
        GetWindowContents(HWnd)
    );
    end;
 strdispose(a);
 Result := true;
end;


procedure Fenum(fhandle:integer);
begin
  if EnumChildWindows(fhandle, @blah, 0) then
  begin
  end
  else
  begin
  end;
end; 
Kalk ve işe yarar bir şey yap! Çünkü Allah (c.c.) yeniden başlayanların yardımcısıdır.
Cevapla