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...
Ekrandan Text Almak , yardım...
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
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.
- Trial_Cooder
- Üye
- Mesajlar: 236
- Kayıt: 17 Nis 2006 04:44
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.

- fatihtolgaata
- Üye
- Mesajlar: 382
- Kayıt: 04 Mar 2004 09:46
- Konum: K.çekmece / İstanbul
- İletişim:
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...