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

SendMessage, EditBox Externe aplikacije

[es] :: Pascal / Delphi / Kylix :: SendMessage, EditBox Externe aplikacije

[ Pregleda: 1901 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

captPicard
programer
more i planine

Član broj: 216084
Poruke: 1119



+19 Profil

icon SendMessage, EditBox Externe aplikacije13.01.2011. u 10:37 - pre 161 meseci
Dakle, kao šta naslov kaže, kako da pošaljem text U EditBox neke eksterne aplikacije?

Pomoću EnumChildWindows dobijem slijedeće (dakle to su EditBoxovi u eksternoj aplikaciji):

ID: 1663, ClassName: Edit, Caption:
ID: 1664, ClassName: Edit, Caption:
ID: 1665, ClassName: Edit, Caption:
ID: 1666, ClassName: Edit, Caption:
ID: 1667, ClassName: Edit, Caption:


Kako da sada pomoću ID-a kontrole pošaljem tekst?

Hvala.
F
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: SendMessage, EditBox Externe aplikacije13.01.2011. u 17:19 - pre 161 meseci
> Dakle, kao šta naslov kaže, kako da pošaljem text U EditBox neke eksterne aplikacije?
> Pomoću EnumChildWindows dobijem slijedeće (dakle to su EditBoxovi u eksternoj aplikaciji):

> ID: 1663, ClassName: Edit, Caption:
> ID: 1664, ClassName: Edit, Caption:
> Kako da sada pomoću ID-a kontrole pošaljem tekst?

Ako imaš kontrol ID možeš koristiti SetDlgItemText. Mada ako već koristiš EnumChildWindows po defaultu ti dobijaš Handle edit boxa i onda samo možeš poslati WM_SETTEXT poruku.
 
Odgovor na temu

lan-mi
Lukic Milan
Zrenjanin

Član broj: 156359
Poruke: 140
*.dynamic.sbb.rs.

Sajt: https://lanmisoft.com


+1 Profil

icon Re: SendMessage, EditBox Externe aplikacije13.01.2011. u 20:26 - pre 161 meseci
kako dobijes ID?
Arduino Control Center
 
Odgovor na temu

captPicard
programer
more i planine

Član broj: 216084
Poruke: 1119



+19 Profil

icon Re: SendMessage, EditBox Externe aplikacije14.01.2011. u 07:55 - pre 161 meseci
Riješio sam ovako:

Code:
function FindWindowByTitle(WindowTitle: string): Hwnd;
var
  NextHandle: Hwnd;
  NextTitle: array[0..260] of char;
begin

  NextHandle := GetWindow(Application.Handle, GW_HWNDFIRST);
  while NextHandle > 0 do
  begin

    GetWindowText(NextHandle, NextTitle, 255);
    if Pos(WindowTitle, StrPas(NextTitle)) <> 0 then
    begin
      Result := NextHandle;
      Exit;
    end
    else

      NextHandle := GetWindow(NextHandle, GW_HWNDNEXT);
  end;
  Result := 0;
end;


Code:
procedure TForm1.Button1Click(Sender: TObject);
  function EnumChildProc(AHandle: THandle; AItems: TStrings): BOOL; stdcall;
  var
    buffer: array[0..255] of Char;
    caption: array[0..255] of Char;
  begin
    Result := True;
    GetClassName(AHandle, buffer, SizeOf(buffer) - 1);
    SendMessage(AHandle, WM_GETTEXT, 256, Integer(@caption));

    AItems.Add(Format('Handle: %d, Class: %s, Text: %s', [AHandle, buffer, caption]));
  end;

var
  wHnd: THandle;
begin
  wHnd := FindWindowByTitle('Program');
  ListBox1.Clear;

  EnumChildWindows(wHnd, @EnumChildProc, Integer(ListBox1.Items));

end;


Znači tu dobijem handle i onda

Code:
  SendMessage(handle, WM_SETTEXT, 0, Integer(PChar('tekst')));


I to radi, ali događa mi se jedna čudna stvar. U jednom od textboxova u koji upisujem, string se izbriše kada kliknem mišem na textbox, a vanjska aplikacija ga u obradi vidi kao praznog tj. kao da nema unosa. Ali to se ne događa na svim textboxovima već samo na određenima. Any advice?

@lan-mi

Pogledaj ovdje
F
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: SendMessage, EditBox Externe aplikacije14.01.2011. u 12:03 - pre 161 meseci
> I to radi, ali događa mi se jedna čudna stvar. U jednom od textboxova u koji upisujem, string se izbriše kada kliknem mišem na textbox, a vanjska aplikacija
> ga u obradi vidi kao praznog tj. kao da nema unosa. Ali to se ne događa na svim textboxovima već samo na određenima. Any advice?

Verovatno taj program briše, možeš pokušati da povremeno proveravaš da li je setovan text, ako nije da ponoviš WM_SETTEXT. Takođe pokušaj dodelu teksta sa WM_PASTE (prebaci prethodno željeni sadržaj u Clipboard) ili sa simuliranjem pritisaka na tastaturu (fokusiraš tu kontrolu prethodno).
 
Odgovor na temu

lan-mi
Lukic Milan
Zrenjanin

Član broj: 156359
Poruke: 140
*.dynamic.sbb.rs.

Sajt: https://lanmisoft.com


+1 Profil

icon Re: SendMessage, EditBox Externe aplikacije14.01.2011. u 12:56 - pre 161 meseci
<@lan-mi
Pogledaj ovdje>

Kao sto sam i mislio, pomocu ID-a ne bi mogao ni da grebujes tekst posto se menja pri svakom startu aplikacije.


Arduino Control Center
 
Odgovor na temu

captPicard
programer
more i planine

Član broj: 216084
Poruke: 1119



+19 Profil

icon Re: SendMessage, EditBox Externe aplikacije14.01.2011. u 13:35 - pre 161 meseci
Citat:
lan-mi: <@lan-mi
Pogledaj ovdje>

Kao sto sam i mislio, pomocu ID-a ne bi mogao ni da grebujes tekst posto se menja pri svakom startu aplikacije.


I handle se isto mijenja prilikom svakog starta aplikacije.
F
 
Odgovor na temu

captPicard
programer
more i planine

Član broj: 216084
Poruke: 1119



+19 Profil

icon Re: SendMessage, EditBox Externe aplikacije14.01.2011. u 13:37 - pre 161 meseci
Citat:
savkic: > I to radi, ali događa mi se jedna čudna stvar. U jednom od textboxova u koji upisujem, string se izbriše kada kliknem mišem na textbox, a vanjska aplikacija
> ga u obradi vidi kao praznog tj. kao da nema unosa. Ali to se ne događa na svim textboxovima već samo na određenima. Any advice?

Verovatno taj program briše, možeš pokušati da povremeno proveravaš da li je setovan text, ako nije da ponoviš WM_SETTEXT. Takođe pokušaj dodelu teksta sa WM_PASTE (prebaci prethodno željeni sadržaj u Clipboard) ili sa simuliranjem pritisaka na tastaturu (fokusiraš tu kontrolu prethodno).


Ali zanimljivo je da se to događa samo na nekim poljima (EditBox-ovima), a ima 10 identičnih. Također ako selektiram taj tekst, on ostaje, ali ako samo kliknem na polje onda se izbriše tekst.
Pokušati ću sa WM_PASTE. Kako da fokusiram kontrolu?

Hvala savkic.
F
 
Odgovor na temu

lan-mi
Lukic Milan
Zrenjanin

Član broj: 156359
Poruke: 140
*.dynamic.sbb.rs.

Sajt: https://lanmisoft.com


+1 Profil

icon Re: SendMessage, EditBox Externe aplikacije14.01.2011. u 13:47 - pre 161 meseci
SendMessage(hwnd,WM_SETFOCUS,0,0);
Arduino Control Center
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: SendMessage, EditBox Externe aplikacije

[ Pregleda: 1901 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

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