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

FindWindowEx i upisivanje vrednosti uz pomoc SendMessage

[es] :: Pascal / Delphi / Kylix :: FindWindowEx i upisivanje vrednosti uz pomoc SendMessage

[ Pregleda: 2251 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

anon68680

Član broj: 68680
Poruke: 528
79.101.77.*



+14 Profil

icon FindWindowEx i upisivanje vrednosti uz pomoc SendMessage20.10.2008. u 20:36 - pre 189 meseci
Dakle uspeo sam da dobijem handle nekog programa, recimo notepada, preko PID-a. Sad hocu da u taj notepad upisem neki text. Koristeci WinDowse zakljucio sam da se klasa u koju se upisuje text u notepad zove "Edit". Znaci to treba ovako nekako da izgleda:

var
handle, handle2: THandle;
begin
//dodeljivanje PIDa
Handle:=OpenProcess(PROCESS_ALL_ACCESS, BOOL(0),pid);
handle2:=FindWindowEx(handle,0,pchar('Edit'),nil);
SendMessage(handle2,WM_SETTEXT,sizeof(str1),integer(str1));
//zatvaranje handle-a
end;

Medjutim, ovo ne radi. U cemu bi mogao da bude problem?
 
Odgovor na temu

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 569
200.49.157.*

Sajt: ar.linkedin.com/pub/darko..


+13 Profil

icon Re: FindWindowEx i upisivanje vrednosti uz pomoc SendMessage21.10.2008. u 14:21 - pre 189 meseci
Citat:
krza:
Code:

var
handle, handle2: THandle;
begin
//dodeljivanje PIDa
Handle:=OpenProcess(PROCESS_ALL_ACCESS, BOOL(0),pid);
handle2:=FindWindowEx(handle,0,pchar('Edit'),nil);
SendMessage(handle2,WM_SETTEXT,sizeof(str1),integer(str1));
//zatvaranje handle-a
end;


Medjutim, ovo ne radi. U cemu bi mogao da bude problem?


Ti nigde ne proveravas sta ti vracaju API funkcije. Kako znas da je OpenProcess uspeo? Kako znas da je FindWindowEx nasao handle itd.

Druga stvar su standardne windows klase. Nije Edit vec EDIT. Dakle nesto kao ovako:

Code:

var
handle, handle2: THandle;
begin
//dodeljivanje PIDa
handle:=OpenProcess(PROCESS_ALL_ACCESS, BOOL(0),pid);
if handle <> nil then begin
  handle2:=FindWindowEx(handle,0,pchar('EDIT'),nil);
  if  handle2 <> nil then begin
    SendMessage(handle2,WM_SETTEXT,sizeof(str1),integer(str1));
  end;
  //zatvaranje handle-a
end;

end;


Informisi se o standardnim klasama

http://msdn.microsoft.com/en-us/library/ms632679(VS.85).aspx

Tko leti vrijedi
 
Odgovor na temu

anon68680

Član broj: 68680
Poruke: 528
79.101.77.*



+14 Profil

icon Re: FindWindowEx i upisivanje vrednosti uz pomoc SendMessage21.10.2008. u 17:09 - pre 189 meseci
ne mogu da koristim handle <> nil jer je THandle: Longword, tako da bi onda ako vec hocu da uporedjujem bilo handle <> 0 mada sam hteo samo primer da dam. Ali bez obzira na to kod ne radi. Verujem da je problem ili u FindWindowEx ili u SendMessage jer sam koristio TerminateProcess() za handle i radilo je.

update:
Problem je u FindWindowEx jer vraca vrednost 0...
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: FindWindowEx i upisivanje vrednosti uz pomoc SendMessage21.10.2008. u 18:51 - pre 189 meseci
Pogledaj par ovih threadova:

/* uklonjeni neispravni linkovi */

... ili bas insistiras na OpenProcess i FindWindowEx ?


[Ovu poruku je menjao X Files dana 21.10.2008. u 21:05 GMT+1]
 
Odgovor na temu

anon68680

Član broj: 68680
Poruke: 528
79.101.77.*



+14 Profil

icon Re: FindWindowEx i upisivanje vrednosti uz pomoc SendMessage21.10.2008. u 19:59 - pre 189 meseci
X Files:
za svaki od tih linkova izbaci error: Session timed out, please resubmit your search
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: FindWindowEx i upisivanje vrednosti uz pomoc SendMessage21.10.2008. u 20:04 - pre 189 meseci
Ah da:

http://www.tamaracka.com/search.htm

Keywords: SendMessage send text to notepad

Dace dovoljno rezultata.
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: FindWindowEx i upisivanje vrednosti uz pomoc SendMessage22.10.2008. u 08:42 - pre 189 meseci
Za početak kao što bi rekao naš nekadašnji Ministar inostranih poslova, you can't mix grandmothers and frogs ;)
FindWindowEx za prvi parametar očekuje HWND parent prozora ne Handle procesa u kome se prozor nalazi.
Do handla željenog prozora možeš doći iz nekoliko koraka:
1) Treba dobiti HWND parent prozora, ako je to top-level window (ili neki njegov predak jeste) onda se to lako radi pomoću EnumWindows i upoređivanjem rezultata funkcije GetWindowThreadProcessId i procesa koji ti već imaš. Ako nije TopLevel onda se mora ići okolnim putem, prvo se nađu svi thredovi datog procesa a onda se gledaju svi prozori tih threadova preko EnumThreadWindows dok se ne dođe do parenta.
2) Pozoveš EnumChildWindows za dobijeni HWND dok ne pronađeš željeni handle.

Možda postoji i lakši način, zavisno od organizacije (hijerarhije) prozora u tom programu, ali bez detaljnijih informacija ne može se reći. Primere upotrebe svih gore navedenih funkcija možeš naći u JCL biblioteci ili MSNDu.
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: FindWindowEx i upisivanje vrednosti uz pomoc SendMessage

[ Pregleda: 2251 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

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