Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Dobijanje child kontrola nekog prozora.

[es] :: Pascal / Delphi / Kylix :: Dobijanje child kontrola nekog prozora.

[ Pregleda: 2545 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

bancika
Branislav Stojkovic

Član broj: 24844
Poruke: 631
213.244.208.*

Sajt: www.diy-fever.com


+1 Profil

icon Dobijanje child kontrola nekog prozora.14.03.2005. u 02:06 - pre 232 meseci
Pozdrav,
pokusavam sa EnumChildWindows funkcijom (rekurzivno) prodjem kroz sve kontrole nekog prozora, ali dobijem samo manji deo njih. Npr, TMenuItem-si se ne izlistaju, TToolbarButton-s takodje. Jel zna neko kako to uraditi
Tnx

Btw, koristion sam sledeci kod (sa torry-ja):
Code:

type
  PMyEnumParam = ^TMyEnumParam;
  TMyEnumParam = record
    Nodes: TTreeNodes;
    Current: TTreeNode;
  end;

function EnumWindowsProc(Wnd: HWND; Param: PMyEnumParam): BOOL; stdcall;
const
  MyMaxName = 64;
  MyMaxText = 64;
var
  ParamChild: TMyEnumParam;
  ClassName: string;
  WindowText: string;
begin
  Result := True;
  SetLength(ClassName, MyMaxName);
  SetLength(ClassName, GetClassName(Wnd, PChar(ClassName), MyMaxName));
  SetLength(WindowText, MyMaxText);
  SetLength(WindowText, SendMessage(Wnd, WM_GETTEXT, MyMaxText, lParam(PChar(WindowText))));
  ParamChild.Nodes   := Param.Nodes;
  ParamChild.Current := Param.Nodes.AddChildObject(Param.Current,
    '[' + ClassName + '] "' + WindowText + '"' + ' Handle: ' + IntToStr(Wnd), Pointer(Wnd));
  EnumChildWindows(Wnd, @EnumWindowsProc, lParam(@ParamChild));
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  Param: TMyEnumParam;
begin
  Param.Nodes := TreeView1.Items;
  Param.Current := TreeView1.TopItem;
  TreeView1.Items.BeginUpdate;
  EnumWindows(@EnumWindowsProc, lParam(@Param));
  TreeView1.Items.EndUpdate;
end;

Ride the rainbow, crack the sky

DIY gitare, pojacala i efekti www.diy-fever.com
 
Odgovor na temu

bondja

Član broj: 10286
Poruke: 167
*.adsl.sezampro.yu.



+3 Profil

icon Re: Dobijanje child kontrola nekog prozora.14.03.2005. u 08:20 - pre 232 meseci
EnumChildWindows funkcija ti vraca HWND prozora (koji moze dobiti fokus),
(TForm, TPanel...), odnosno samo za ono sto je tipa TWinControl.
Zato i imas u funkciji koju si naveo: function EnumWindowsProc( Wnd: HWND <----

Da bi izvukao npr Menu koja ima neka aplikacija, probaj sa API GetMenu(Handle),
i sa TMenuItemInfo strukturom.... (preko GetMenuItemInfo f-je)...

Pozdrav!


 
Odgovor na temu

bancika
Branislav Stojkovic

Član broj: 24844
Poruke: 631
213.244.208.*

Sajt: www.diy-fever.com


+1 Profil

icon Re: Dobijanje child kontrola nekog prozora.14.03.2005. u 14:59 - pre 232 meseci
tnx, a jel znas kako da dobijem TButton-e, TToolbarButton-e i slicne
Ride the rainbow, crack the sky

DIY gitare, pojacala i efekti www.diy-fever.com
 
Odgovor na temu

bondja

Član broj: 10286
Poruke: 167
*.adsl.sezampro.yu.



+3 Profil

icon Re: Dobijanje child kontrola nekog prozora.15.03.2005. u 14:56 - pre 232 meseci
Pokrenuo sam deo koda koji si naveo, i vraca mi TToolButton, TButton... (vidi attachment...)

TToolButton je nasledjen iz TGraphicControl, nema HWND : (

Ali nisam siguran sta tebi treba, samo nazivi TToolButton-a?
Ili hoces da imas mogucnost da ih kontrolises (kliknes na njih) iz svoje aplikacije?

probaj ovo ( da kliknes na dugme u drugoj aplikaciji):
http://www.swissdelphicenter.ch/torry/showcode.php?id=727

Pozdrav!
Prikačeni fajlovi
 
Odgovor na temu

Vdjuric
Vladimir Djuric
student
Beograd

Član broj: 20863
Poruke: 64
*.eutelsat.net.

Sajt: www.marettasoftware.com


Profil

icon Re: Dobijanje child kontrola nekog prozora.17.03.2005. u 19:59 - pre 232 meseci
Zna li neko nacin na koji moze da se nesto upise u editbox nekog programa koji je aktivan?

Poz :)
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
82.208.201.*

ICQ: 246436949


+10 Profil

icon Re: Dobijanje child kontrola nekog prozora.17.03.2005. u 21:01 - pre 232 meseci
Sa EnumChildWindows nadjes handle edit boxa i posaljes mu poruku WM_SETTEXT sa tekstom koji zelis.
 
Odgovor na temu

Vdjuric
Vladimir Djuric
student
Beograd

Član broj: 20863
Poruke: 64
*.eutelsat.net.

Sajt: www.marettasoftware.com


Profil

icon Re: Dobijanje child kontrola nekog prozora.17.03.2005. u 21:41 - pre 232 meseci
Citat:
Srki_82: Sa EnumChildWindows nadjes handle edit boxa i posaljes mu poruku WM_SETTEXT sa tekstom koji zelis.


E sad... fora je u tome sto u tom editbox-u korisnik unosti tekst, pa enter,..., tekst, pa enter... a ja bi da to malcice automatizujem, pa bi mi trebala i neka povratna informacija - tj. da li se izmedju slanja 2 WM_SETTEXT poruke sadrzaj editbox-a u medjuvremenu promenio, jer moj program bi trebao da saceka da taj edit box obradi komandu koju sam mu poslao - pa tek onda da posaljem sledecu poruku... jel to mnogo komplikovanije, ili isto moze preko neke poruke da se odradi ?

poz
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
82.208.201.*

ICQ: 246436949


+10 Profil

icon Re: Dobijanje child kontrola nekog prozora.17.03.2005. u 23:04 - pre 232 meseci
Imas WM_GETTEXT. Kad posaljes svoju WM_SETTEXT poruku mozes svakih 1000 ms (ili koliko vec hoces) da posaljes WM_GETTEXT i da vidis da li se edit ili neka druga kotrola promenila pa ako jeste saljes sledecu WM_SETTEXT i tako dalje.
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Dobijanje child kontrola nekog prozora.

[ Pregleda: 2545 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.