|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Oct 2004
Città: Rovereto (TN)
Messaggi: 1424
|
Delphi & IExplorer
ciao.. sapresti darmi una mano nel costruire un app che refreshi la pagina di tutte le istanze di internet explorer e poi gli "mandi" il tasto Invio?
procedure TForm1.Button1Click(Sender: TObject); var IExplorer, Prev: THandle; begin prev:=0; IExplorer:=FindWindow('IEFrame', nil); while (IExplorer<>0)and(IExplorer<>Prev) do begin PostMessage(IExplorer, WM_KEYDOWN, VK_F5, 0); PostMessage(IExplorer, WM_KEYUP, VK_F5, 0); PostMessage(IExplorer, WM_KEYDOWN, VK_RETURN, 0); PostMessage(IExplorer, WM_KEYUP, VK_RETURN, 0); Prev:=IExplorer; IExplorer:=FindWindow('IEFrame', nil); end; end; Io sono riuscito a costruire questa procedura ma non funziona..o meglio compila perfettamente ma non fa nulla Però se provo a fare un postmessage con WM_CLOSE o simili funziona egregiamente quindi il problema è solo nel mandare il messaggio con il tasto premuto. Ah ho winXp e Ie6.0 Qualche idea? grazie
__________________
..-.:[ My way is Wii: 5880 1342 4336 4625]:.-.:[Battalion Wars II]:..
..-.:[ Xbox360 ]:.-.:[ RROD ]:.-.. ..-.:[ Le mie trattative (14):Qui ]:.-.. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2003
Messaggi: 980
|
Prova ad usare SendInput o keybd_event
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Oct 2004
Città: Rovereto (TN)
Messaggi: 1424
|
il keybd_event funziona solo se la finestra è in primo piano mentre a me serviva qualcosa che riuscisse a fare il tutto con IExplorer in background mentre io faccio dell'altro
__________________
..-.:[ My way is Wii: 5880 1342 4336 4625]:.-.:[Battalion Wars II]:..
..-.:[ Xbox360 ]:.-.:[ RROD ]:.-.. ..-.:[ Le mie trattative (14):Qui ]:.-.. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Magari funziona con la SendMessage ed un messaggio WM_KEYDOWN seguito da un WM_KEYUP postato a tutte le istanze di IE...ma non ne sono sicuro...
|
|
|
|
|
|
#5 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
è esattamente quello che ha fatto lui, solo che con PostMessage anziché SendMessage.
x DaK_TaLeS: il problema è che quella routine funziona solo con una finestra, la prima che è stata creata per l'esattezza: chiamate successive a FindWindow non trovano mai finestre diverse; facendo come fai tu probabilmente il tuo programma si pianta finché non chiudi la finestra di IE. Se vuoi agire su tutte le finestre di IE esistono soluzioni: 1) enumeri tutte le finestre create sul sistema, ottieni di volta in volta il nome della classe, e se vedi che corrisponde a "IEFrame" agisci sulla finestra; oppure (metodo migliore ma più complessa) 2) enumeri tutti i processi, trovi tutte le istanze di iexplore.exe, enumeri i threads, e di ogni thread enumeri tutte le finestre; se si tratta di una "IEFRAME" ci fai quello che ci devi fare. PS: la simulazione della pressione di F5 non è buona come tecnica; usa piuttosto: PostMessage(hwndIE, WM_COMMAND, 41504, 0); |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:26.


















