Mega Code Archive

 
Categories / Delphi / LAN Web TCP
 

Internet explorer adresinin veya başka bir uygulamadaki bir metnin alınması

{Bu kodu yavuzsevgi TDI olarak göndermiş, bende bu kodun Kodbank'ta bulunması gerektiğini düşündüm.Teşekkürler yavuz sevgi. Forma bir timer ve Listbox bileşeni koyun ve Ontimer olayına aşağıdaki kodu yazın. Bir internet explorer penceresinde fareyi adres çubuğu üzerine getirin.Hepsi bu kadar.} procedure TForm1.Timer1Timer(Sender: TObject); Var s : String ; h : THandle; px : PChar ; ss,se:Integer; begin h:=WindowFromPoint(mouse.CursorPos); SendMessage(h,EM_GETSEL,Integer(@Ss),Integer(@Se)); px:=StrAlloc(1024); SendMessage(h,WM_GETTEXT,1024,integer(pointer(px))); s:=px; StrDispose(px); s:=Copy(s,ss+1,se-ss); if (ListBox1.Items.IndexOf(s)=-1) and (s<>'') Then ListBox1.Items.Add(s); end; {Yavuz sevginin Açıklaması h:=WindowFromPoint(mouse.CursorPos); ile hangi edit/RichEdit/memoedit alanından veri çekileceğini buluyor. Yani mouse'un alındaki window/control nesnesinin handle'ını çekiyor. bu nesneden SendMessage(h,EM_GETSEL,Integer(@Ss),Integer(@Se)); satırı ile seçili alanın hangi karakterler arasında olduğunu çekiyor daha detaylı söylemek gerekirse EM_GETSEL mesajını gönderiyor paremetre olarak (integer kabul ettiğinden tip çevrimi yaptım) ss ve se adlı değişkenlerin adresini gönderiyor. sonuçta ss içine ilk karakter se içine son karakter indexi geliyor. px:=StrAlloc(1024); ile px pchar değişkenine (aslında bir pointer) 1K lık bir yer açıyoruz. SendMessage(h,WM_GETTEXT,1024,integer(pointer(px))); bu kez px in gösterdiği yer ki daha önce 1024 bytlık bir alan açmıştık... ve yerin boyutu ile h değikenine Handle'ını aldığımız nesneden TEXT bilgi istiyoruz.. bu pchar ı s adlı stringe alıp ss ten se ye kadar bölümü de copy ile parçalıyoruz.. Ancak bu işlem explorer da address alanında çalışıyor yada herhangi bir ekrandaki EDIT/RichEdit/MEMOEDIT gibi alanlarda çalıyor.. yavuzsevgi 26 Eyl 2002 12:08 yani mouse ile explorerde addres alanındaki url'yi çift tıklatırsan ve mouse'u üzerinde tutarsan bu kod çalışır .. mesela forma bir timer koy ve timerın ontimer eventinde bu kodu yaz, ozaman çalıştığını görürsün. yavuzsevgi }