Ekrandan Text Almak , yardım...

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
dameon
Üye
Mesajlar: 37
Kayıt: 04 Kas 2005 07:54

Ekrandan Text Almak , yardım...

Mesaj gönderen dameon »

Merhaba Arkadaşlar,

Benim istediğim Ekrandaki yazıları (text) bir buffer'a almak ve içinde aradığım bir kelime varsa alarm verdirmek.Ya da bir web sayfasındaki yazıları bir buffer'a almak ve içinde kalime aratmak.

Yardımlarınız için şimdiden teşekkürler...
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Mesaj gönderen mkysoft »

ram'in tamamını ascii olarak taratabilirsin. uzunca yolu biraz daha zahmetli, örnek kod veremediğim için üzgünüm. bizim windowsta kullandığmız her nesne windows tabanlı bir API 'den gelmektedir. Formunuzdaki her nesneye windows tarafından bir ID numarası verilir. açık olan processleri bulmalı, daha sonra bu prosessdeki nesne numaralarını bulmalı, bu nesnelerinden text tabanlı olanlara gerekli apileri göndererek içindeki değerleri alabilirsininiz. Örneğin GetTextA API'si vardır. Biraz karışık bir süreç. Sangit gibi programları incelemek ufkunuzu açabilir.
Kullanıcı avatarı
Trial_Cooder
Üye
Mesajlar: 236
Kayıt: 17 Nis 2006 04:44

Mesaj gönderen Trial_Cooder »

Kod: Tümünü seç

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, OleCtrls, SHDocVw, ComCtrls, SkinCaption, WinSkinData,
  RzStatus, ExtCtrls, RzPanel, RzButton, RzRadChk;

type
  TForm1 = class(TForm)
    Button1: TButton;
    ProgressBar1: TProgressBar;
    Label1: TLabel;
    SkinData1: TSkinData;
    SkinCaption1: TSkinCaption;
    RzStatusBar1: TRzStatusBar;
    RzStatusPane1: TRzStatusPane;
    RzStatusPane2: TRzStatusPane;
    RzStatusPane3: TRzStatusPane;
    WebBrowser1: TWebBrowser;
    Edit2: TEdit;
    ListBox2: TListBox;
    Button4: TButton;
    Edit1: TEdit;
    ListBox4: TListBox;
    Memo2: TMemo;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure WebBrowser1DocumentComplete(Sender: TObject;
      const pDisp: IDispatch; var URL: OleVariant);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  s: Integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 Edit2.SelStart := Length(Edit2.Text) - 1;
 Edit2.SelLength := Length(Edit2.Text);
 if Edit2.SelText = '/' then
 Edit2.SelText := '';
 Edit2.SelStart := 0;
 Edit2.SelLength := 7;
 if Edit2.SelText <> 'http://' then
 Edit2.Text := 'http://' + Edit2.Text;
 Button4.Enabled := False;
 Button1.Enabled := False;
 Edit2.Enabled := False;
 s := 0;
 Label2.Caption := ListBox4.Items.Strings[s];
 WebBrowser1.Navigate(Edit2.Text + ListBox4.Items.Strings[s]);
end;

procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
var
  Edit: String;
  i: integer;
  st: String;
  SAYFA: variant;
begin
 if s = ListBox4.Items.Count then
 begin
  Button4.Enabled := True;
  Button1.Enabled := True;
  Edit2.Enabled := True;
  Edit1.Text := 'Tarama Bitti!';
 end
 else
 begin
 st := 'Aranacak Kelime';
  SAYFA := WebBrowser1.Document;
  Memo2.Text := SAYFA.Body.OuterHTML;
  for i := 0 to Memo2.Lines.Count - 1 do
  begin
    if pos(st, Memo2.Lines[i]) > 0 then
    begin
      Edit := copy(Memo2.Lines[i], pos(st, Memo2.Lines[i]), length(st));
      if Edit <> '' then
        break;
    end;
  end;
  if Edit = st then
  ListBox2.Items.Add(Edit2.Text + ListBox4.Items.Strings[s]);
  s := s + 1;
  Label2.Caption := ListBox4.Items.Strings[s];
  ProgressBar1.Position := ProgressBar1.Position + 1;
  WebBrowser1.Navigate(Edit2.Text + ListBox4.Items.Strings[s]);
 end;
end;

end.

Kurcalarsan Kendine Göre Bir Sonuç Çıkarabilirsin ;)
Kullanıcı avatarı
fatihtolgaata
Üye
Mesajlar: 382
Kayıt: 04 Mar 2004 09:46
Konum: K.çekmece / İstanbul
İletişim:

Mesaj gönderen fatihtolgaata »

Babylon sözlüğündeki gibi bir şey istiyorsan, basit bir ocr tanımlamalısın. Bazı durumlarda, form, button, label gibi standart bileşenlerden GetWindowText gibi yöntemlerle textleri aldırtabilirsin. Bununla ilgili örnek internet üzerinde mevcut. Ama bu web sayfalarında işe yaramaz. Ekrandakilerin hangisinin web sayafası olduğu, hangisinin olmadığını anlayabilmek zor olacağından en iyi yöntem basit bir ocr tanımlamaktır, bence...
Cevapla