Internet Explorerin ikkunat

Olen tekemässä ohjelmaa joka mm. tunnistaa Internet Explorerin avonaiset ikkunat mitkä käyttäjä on avannut.

Tämä alla oleva koodi on ajastimessa joka "vakoilee" koska käyttäjä avaa uuden Internet Explorerin ikkunan.
Kuten huomaatte se on nimettykin nerokkaasti "tmrSpying" :)

Dim IE As InternetExplorer
Dim WIN As New ShellWindows
Public WithEvents Browser As InternetExplorer

Private Sub tmrSpying_Timer()
For Each IE In WIN
   Set Browser = IE
Next
Set WIN = Nothing
End Sub

Sitten tämä seuraava koodi tunnistaa ennen kuin käyttäjä menee uudelle sivulle että mikä on tämän hetkisen sivuston osoite ja näin ollen ilmoittaa siitä hänelle (ei ohjelmani oikeasti tälläistä ilmoitusta anna, mutta havainnollistan vain nyt sen toimintaperiaatetta).

Private Sub Browser_BeforeNavigate2(ByVal pDisp As Object, URL As Variant, Flags As Variant, TargetFrameName As Variant, PostData As Variant, Headers As Variant, Cancel As Boolean)
MsgBox Browser.LocationURL
End Sub

Tässä koodissa ei ole mitään vikaa, se toimii kun unelma kunnes käyttäjä avaa jonkin linkin jo avonaisesta Internet Explorerin ikkunasta uuteen ikkunaan tai siis yksinkertaisesti avaa kaksi Internet Explorerin ikkunaa päälekkäin niin tämä koodi ei toimi enää muuta kuin siinä ikkunassa minkä käyttäjä on avannut ensimmäisenä.

For Each IE In WIN
Set Browser = IE
Next

Se laittaa muistiin kyllä jokaisen avonaisen IE:n ikkunan, mutta ei pysty kutsumaan tuolla Browser_BeforeNavigate2 tapahtumalla muita avonaisia ikkunoita kuin sitä ensimmäistä auki olevaa ikkunaa ja jos käyttäjä sulkee sen, niin koko ohjelmani ei toimi enää.

Eli kysymykseni nyt kuuluukin kuinka saan tuon Browser tapahtuman toimimaan KAIKISSA avonaisissa Internet Explorerin ikkunoissa vaikka käyttäjä availisi uusia ikkunoita, sulkisi vanhoja tai tekisi mitä vaan?
Koodissani tarvitsee olla pakollisesti tuo Browser_BeforeNavigate2 tapahtuma tai muuten se ei toimi.
0230
Äänestä

Muut lukivat myös

Vastaukset

Vanhimmat

Ei vielä vastauksia

Aloittaja odottaa vastauksia. Kerro oma näkemyksesi ensimmäisenä.

Kommentoi aloitusta


minähänse kirjoitti:

Olen tekemässä ohjelmaa joka mm. tunnistaa Internet Explorerin avonaiset ikkunat mitkä käyttäjä on avannut.

Tämä alla oleva koodi on ajastimessa joka "vakoilee" koska käyttäjä avaa uuden Internet Explorerin ikkunan.
Kuten huomaatte se on nimettykin nerokkaasti "tmrSpying" :)

Dim IE As InternetExplorer
Dim WIN As New ShellWindows
Public WithEvents Browser As InternetExplorer

Private Sub tmrSpying_Timer()
For Each IE In WIN
   Set Browser = IE
Next
Set WIN = Nothing
End Sub

Sitten tämä seuraava koodi tunnistaa ennen kuin käyttäjä menee uudelle sivulle että mikä on tämän hetkisen sivuston osoite ja näin ollen ilmoittaa siitä hänelle (ei ohjelmani oikeasti tälläistä ilmoitusta anna, mutta havainnollistan vain nyt sen toimintaperiaatetta).

Private Sub Browser_BeforeNavigate2(ByVal pDisp As Object, URL As Variant, Flags As Variant, TargetFrameName As Variant, PostData As Variant, Headers As Variant, Cancel As Boolean)
MsgBox Browser.LocationURL
End Sub

Tässä koodissa ei ole mitään vikaa, se toimii kun unelma kunnes käyttäjä avaa jonkin linkin jo avonaisesta Internet Explorerin ikkunasta uuteen ikkunaan tai siis yksinkertaisesti avaa kaksi Internet Explorerin ikkunaa päälekkäin niin tämä koodi ei toimi enää muuta kuin siinä ikkunassa minkä käyttäjä on avannut ensimmäisenä.

For Each IE In WIN
Set Browser = IE
Next

Se laittaa muistiin kyllä jokaisen avonaisen IE:n ikkunan, mutta ei pysty kutsumaan tuolla Browser_BeforeNavigate2 tapahtumalla muita avonaisia ikkunoita kuin sitä ensimmäistä auki olevaa ikkunaa ja jos käyttäjä sulkee sen, niin koko ohjelmani ei toimi enää.

Eli kysymykseni nyt kuuluukin kuinka saan tuon Browser tapahtuman toimimaan KAIKISSA avonaisissa Internet Explorerin ikkunoissa vaikka käyttäjä availisi uusia ikkunoita, sulkisi vanhoja tai tekisi mitä vaan?
Koodissani tarvitsee olla pakollisesti tuo Browser_BeforeNavigate2 tapahtuma tai muuten se ei toimi.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu