| Autor | Správa |
Fico
 Skúsený užívateľ
 Založený: 11.01.2009 Príspevky: 908
 | Zaslal: So 30.01.10 15:33 |   |
Keďže píšeš, že chyba bude inde, zrejme si skúšal aj inú stránku. Fungovali ti správne? (inak poznámka k tomu kódu: #10 a #13 je bez apostrofov, lebo to sú znaky). |
| |
   |
 |
ha2
 Užívateľ
 Založený: 21.12.2008 Príspevky: 112
 | Zaslal: So 30.01.10 17:44 |   |
|
  |
 |
Fico
 Skúsený užívateľ
 Založený: 11.01.2009 Príspevky: 908
 | Zaslal: So 30.01.10 19:38 |   |
Na formulár si daj jeden TWebBrowser, jeden TButton a do OnClick buttonu daj presne toto:
| kód: | procedure TForm1.Button1Click(Sender: TObject);
var
Flags, Headers, TargetFrameName, PostData: OleVariant;
Url, Ref: string;
begin
flags := '1';
targetframename := '';
postdata := '';
url := 'http://www.whatismyreferrer.com';
ref := 'http://www.whatismyreferrer.com';
headers := 'Referer: ' + ref + #10 + #13;
webbrowser1.Navigate(url, flags, targetframename, postdata, headers);
end; |
mne to tránku riadne načítalo. Skús to takto. |
| |
   |
 |
ha2
 Užívateľ
 Založený: 21.12.2008 Príspevky: 112
 | Zaslal: So 30.01.10 21:03 |   |
ved som pisal, chyba nieje v kode pretoze mi ten referer ukazuje pekne, ale bude to asi neako inak kontrolovane, nez len refererom... |
| |
  |
 |
ha2
 Užívateľ
 Založený: 21.12.2008 Príspevky: 112
 |
Skusam poslat spravu o kliku ale nic sa nedeje. Zadavam suradnice na ktorych je button ale nieco je zle. (klikam sam naseba nie na cudziu aplikaciu)
| kód: | wnd:=findwindow('',nil);
dw := MakeLong(50,50);
SendMessageW(wnd,WM_LBUTTONDOWN,MK_LBUTTON,dw);
SendMessageW(wnd,WM_LBUTTONUP,MK_LBUTTON,dw); |
|
| |
  |
 |
stopa27
 Užívateľ
 Založený: 19.09.2006 Príspevky: 729 Bydlisko: Ružomberok<->Bratislava (21)
 |
nejde to preto, lebo funkcia FindWindow ti zakazdym failne koli tomu, ze jej nedavas dobre parametre, kedze prvy musi byt retazec, ktory oznacuje nazov triedy okna, a ty mu davas prazdny nazov, cize ho vlastne iba nenajde. Aj keby ho naslo, tak je problem s tym, ze musis najst handle konkretneho ovladacieho prvku na ktory chces kliknut, lebo to posle spravu iba jemu. Cize nieco ako wnd=FindWindow(0,'Form1'); by kliklo "pod" tlacitko, musis spravit wnd:=FindWindowEx(FindWindow(0,'Form1'),0,0,'Button1'); aby si nasiel handle toho, na co chces klinkut. Na druhej strane dost zavisi od konkretneho pripadu. Tlacitko v internet exploreri nie je plnohodnotne tlacitko, cize vyuzivas prvy sposob, kedze je to sucast hlavneho okna. to treba vediet este pred klikanim  |
_________________ Quick memory editor 5.5 (RAW 0xFC58C) : Hi crackers, please don't crack me. Thank you! | |
       |
 |
ha2
 Užívateľ
 Založený: 21.12.2008 Príspevky: 112
 | Zaslal: Ne 14.02.10 13:01 |   |
ked som zadal WM_QUIT tak to slo, ci som zadal nazov okna alebo nie. A ja potrebujem "kliknut" na suradnice, aby to bolo univerzalne |
| |
  |
 |
stopa27
 Užívateľ
 Založený: 19.09.2006 Príspevky: 729 Bydlisko: Ružomberok<->Bratislava (21)
 | Zaslal: Ne 14.02.10 13:15 |   |
ako vravim, pokial je to v okne prehliadaca, alebo v okne nejakej hry, tak sa to da "univerzalne" spravit tym jednym findwindow, ale pokial obsahuje dane okno klasicke tlacitka a ovladacie prvky, tak to asi bude vyzadovat iny pristup. Ano WM_QUIT mohol ist, findwindow vrati 0 ak je fail a zrejme sa nula puziva zaroven ako identifikator, ze to aplikacia posiela sama sebe. A kedze WM_QUIT nema nic spolocne s ovladacimi prvkami, nic to nemeni na veci, ze ak posles hlavnemu oknu spravu, neposles ju child oknu (tlacitku). |
_________________ Quick memory editor 5.5 (RAW 0xFC58C) : Hi crackers, please don't crack me. Thank you! | |
       |
 |
ha2
 Užívateľ
 Založený: 21.12.2008 Príspevky: 112
 | Zaslal: Ne 14.02.10 15:16 |   |
nj, treba najst komponentu lebo to klikne podnu. Skusal som to na button a v pohode ale webbrowser nie
| kód: | procedure TForm1.Button1Click(Sender: TObject);
var wnd :hwnd;
dw:longint;
begin
wnd:=FindWindowEx(FindWindow(0,'Form1'),0,0,'WebBrowser1');
dw := MakeLong(300,230);
SendMessageW(wnd,WM_LBUTTONDOWN,MK_LBUTTON,dw);
SendMessageW(wnd,WM_LBUTTONUP,MK_LBUTTON,dw);
end; |
posielam suradnice na ktorych je hyperlink a nic sa nedeje |
| |
  |
 |
stopa27
 Užívateľ
 Založený: 19.09.2006 Príspevky: 729 Bydlisko: Ružomberok<->Bratislava (21)
 | Zaslal: Ne 14.02.10 16:40 |   |
no ono komponent WebBrowser je dost specificky tym, ze nema caption WebBrowser1, dokonca nema ziadnu caption. Trieda WebBrowsera po vytvoreni sa vola 'Shell Embedding', problem nastava v okamihu ked spravis WebBrowser1.navigate..., ked sa napoji na server internet exploreru a handle sa zmeni, zmeni sa aj trieda okna na 'Internet Explorer_Server', ale uz nefiguruje medzi child oknami, cize nie je mozne najst ho pomocou findwindowex(findwindow(.....)); Vacsiu zmrdnost ako tento kod som uz dlho nevidel Takto to ide : wnd:=FindWindowEx(FindWindowEx(FindWindowEx(FindWindow(0,'Form1'),0,'Shell Embedding',0),0,'Shell DocObject View',0),0,'Internet Explorer_Server',0);
//pri najdeni tohto som pouzil Spy++ (velmi uzitocny tool) prilozeny k visual studio, kedze google nic nepovedal, |
_________________ Quick memory editor 5.5 (RAW 0xFC58C) : Hi crackers, please don't crack me. Thank you! | |
       |
 |
ha2
 Užívateľ
 Založený: 21.12.2008 Príspevky: 112
 | Zaslal: Ne 14.02.10 17:13 |   |
pekna "rekurzia", ale hlavne ze to funguje. No nedosiel by som ktomu sam v blizkej dobe jak nato pozeram. Vdaka |
| |
  |
 |
ha2
 Užívateľ
 Založený: 21.12.2008 Príspevky: 112
 | Zaslal: Ne 14.02.10 18:04 |   |
| stopa27 napísal: |
//pri najdeni tohto som pouzil Spy++ (velmi uzitocny tool) prilozeny k visual studio, kedze google nic nepovedal, |
mozes mi ho supnut?  |
| |
  |
 |
stopa27
 Užívateľ
 Založený: 19.09.2006 Príspevky: 729 Bydlisko: Ružomberok<->Bratislava (21)
 | Zaslal: Ne 14.02.10 18:11 |   |
|
       |
 |
ha2
 Užívateľ
 Založený: 21.12.2008 Príspevky: 112
 | Zaslal: Ne 14.02.10 18:47 |   |
|
  |
 |
ha2
 Užívateľ
 Založený: 21.12.2008 Príspevky: 112
 | Zaslal: Ne 14.02.10 19:07 |   |
inak... ked tam dam viac webbrowserov jak ich rozoznam podla handle? pretoze sa mi odkaz otvara nie v komponente ale v novom IE. tak som dal do OnNewWindow2
| kód: | cancel:=false;
ppDisp:=Form1.WebBrowser2.Application; |
|
| |
  |
 |
|
Nemôžete pridávať nové témy do tohto fóra. Nemôžete odpovedať na témy v tomto fóre. Nemôžete upravovať svoje príspevky v tomto fóre. Nemôžete mazať svoje príspevky v tomto fóre. Nemôžete hlasovať v tomto fóre.
|
|