Thanks for the response again. The solution is pretty close but not yet complete This is what I observed. a) I tried to use the delay mechanism as suggested below ie. ie.Navigate('www.google.com') while ie.ReadyState !- 4 time.sleep(0.5)
d=win32com.client.DispatchWithEvents(ie.Document, Doc_Events) IE *fails* to load the webpage b) Then I changed the delay to a specified time interval eg ie.Navigate('www.google.com') time.sleep(60) #wait for a minute d=win32com.client.DispatchWithEvents(ie.Document, Doc_Events) IE loads the web page *after* 60 seconds c) Then I used raw_input() eg ie.Navigate('www.google.com') raw_input() d=win32com.client.DispatchWithEvents(ie.Document, Doc_Events) IE now loads the webpage and prompts the user. If I click on the web page *before* clicking ok on the raw_input prompt - then it correctly invokes the Doc_Events method Ononactivate method. >From these observations, it seems that there is some kind of a race condition / timing issue happening. Can you please comment (or maybe point me to other sources of info that I can investigate). I am running Python 2.3 on Windows 2k machine. Roger Upole wrote: > Usually you get that error if you try to access the Document object > before the page has loaded. Try adding a delay after ie.Navigate, > something like > > while ie.ReadyState<>4: > time.sleep(0.5) > There are some constants that show up in win32com.client.constants > that represent the ReadyState's, but I can't remember the names offhand. > > The only real reference for the Html objects (other than reading the > generated module) is MSDN. Google turned this up: > http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/mshtml/reference/events/htmlanchorevents/htmlanchorevents.asp > > Roger > > > <[EMAIL PROTECTED]> wrote in message > news:[EMAIL PROTECTED] > > Thanks for your prompt responses and the code. > > However, when I run the code I get com error > > d=win32com.client.DispatchWithEvents(ie.Document, Doc_Events) > > File "C:\Python23\lib\site-packages\win32com\client\__init__.py", > > line 199, in __getattr__ > > return getattr(self._obj_, attr) > > File "C:\Python23\lib\site-packages\win32com\client\__init__.py", > > line 455, in __getattr__ > > return self._ApplyTypes_(*args) > > File "C:\Python23\lib\site-packages\win32com\client\__init__.py", > > line 446, in _ApplyTypes_ > > return self._get_good_object_( > > com_error: (-2147352567, 'Exception occurred.', (0, None, None, None, > > 0, -2147467259), None) > > > > I am a newbie to python(started coding a few months ago). > > This appears to be a fairly common error when COM objects are not > > hooked up properly. Though I have not been able to find a solution or > > the reason for this. > > Thanks again for the explanation.All the information that I had > > acquired now seems to fall into place. I was not aware about > > doc_mod.HTMLAnchorEvents. Where can I find more documentation about > > this? > > > > Roger Upole wrote: > >> Here's a few more lines that hook the document's onactivate event. > >> > >> import win32com.client > >> > >> > > ie_mod=win32com.client.gencache.EnsureModule('{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' > > > >> ,0, 1, 1) > >> > > doc_mod=win32com.client.gencache.EnsureModule('{3050F1C5-98B5-11CF-BB82-00AA00BDCE0B}' > > > >> ,0 ,4, 0) > >> class IE_Events(ie_mod.DWebBrowserEvents2): > >> def OnNavigateComplete2(self, pDisp, URL): > >> print 'OnNavigateComplete2:', URL > >> > >> class Doc_Events(doc_mod.HTMLAnchorEvents): > >> def Ononactivate(self): > >> print 'onactivate', self.activeElement.outerHTML > >> > >> > > ie=win32com.client.DispatchWithEvents('InternetExplorer.Application',IE_Events) > >> ie.Visible=1 > >> ie.Navigate('http://www.google.com') > >> > >> d=win32com.client.DispatchWithEvents(ie.Document, Doc_Events) > >> > >> Roger > >> > >> > >> <[EMAIL PROTECTED]> wrote in message > >> news:[EMAIL PROTECTED] > >> > Hi > >> > Thanks for the response and for the code. > >> > However, I want to trap events like mouse click on the HTML > > document > >> > loaded by the web browser control. The code mentioned below > > provides > >> > events from the web browser control. I need to find out on which > >> > particular HTML tag did the user click for example. > >> > How do I find that out? There should be some way to refer to a > > document > >> > from a given web browser control and start receiving events from it > >> > > >> > > >> > Roger Upole wrote: > >> >> The two you'll need to run makepy for are Microsoft Internet > > Controls > >> > and > >> >> Microsoft HTML object Library. If you run them manually, you > > should > >> > be > >> >> able to look at the generated code to get the guids. > >> >> Here's a minimal example: > >> >> > >> >> import win32com.client > >> >> > >> >> > >> > > > ie_mod=win32com.client.gencache.EnsureModule('{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}',0, > >> > > >> >> 1, 1) > >> >> class IE_Events(ie_mod.DWebBrowserEvents2): > >> >> def OnNavigateComplete2(self, pDisp, URL): > >> >> print 'OnNavigateComplete2:', URL > >> >> > >> >> > >> > > > ie=win32com.client.DispatchWithEvents('InternetExplorer.Application',IE_Events) > >> >> ie.Visible=1 > >> >> ie.Navigate('http://www.google.com') > >> >> > >> >> hth > >> >> Roger > >> >> > >> >> > >> >> <[EMAIL PROTECTED]> wrote in message > >> >> news:[EMAIL PROTECTED] > >> >> >I am trying to trap events from internet explorer eg. when user > >> > clicks > >> >> > on an html link - I need to get notified for that event. > >> >> > > >> >> > After looking through the newgroups / internet and reading > > through > >> >> > various sections in programming python on win32 - I understand > > that > >> >> > this can be done using DispatchWithEvents. > >> >> > I have also referred to discussions on comp.lang.python > >> >> > > >> > > > http://groups-beta.google.com/group/comp.lang.python/browse_thread/thread/a3c502d06412a5f8/0ee3083e71316da7?q=dispatchwithevents&rnum=43#0ee3083e71316da7 > >> >> > > >> >> > and > >> >> > > >> >> > > >> > > > http://groups-beta.google.com/group/comp.lang.python/browse_thread/thread/1da0668794851296/5bcec1fda216c598?q=dispatchwithevents&rnum=19#5bcec1fda216c598 > >> >> > > >> >> > So far - none of the newgroups postings report that IE events > > were > >> >> > trapped successfully (at least I could not find any). However, > >> > there is > >> >> > enough evidence that it can be done. > >> >> > My problems at the moment: > >> >> > a) The examples use early binding. However, I cannot get Python > >> > makepy > >> >> > to generate the code to force makepy process at run time - since > >> > COM > >> >> > makepy utility that I invoke from python win 32 does not have > > any > >> > entry > >> >> > for internet explorer. > >> >> > I tried to find the CLSID for IE > >> > 3050F613-98B5-11CF-BB82-00AA00BDCE0B > >> >> > but I get an exception > >> >> > b) Also one of the examples suggest that following code should > > work > >> >> > > >> >> >> mod = EnsureModule(...) > >> >> > > >> >> >> class MyEvents(mod.IDocumentEvents): > >> >> >> # your methods here.... > >> >> > > >> >> >> handler = MyEvents(ie.document) > >> >> > > >> >> >> # handler should start recieving events. > >> >> > > >> >> > however, what CLSID is to be used in EnsureModule... . I tried > > with > >> > a > >> >> > few but I always get the error 'NoneType' object has no > > attribute > >> >> > 'IDocumentEvents' > >> >> > > >> >> > > >> >> > An example that 'works' will be very useful > >> >> > > >> >> > >> >> > >> >> > >> >> ----== Posted via Newsfeeds.Com - Unlimited-Uncensored-Secure > > Usenet > >> > News==---- > >> >> http://www.newsfeeds.com The #1 Newsgroup Service in the World! > >> > 120,000+ Newsgroups > >> >> ----= East and West-Coast Server Farms - Total Privacy via > > Encryption > >> > =---- > >> > > >> > >> > >> > >> > >> ----== Posted via Newsfeeds.Com - Unlimited-Uncensored-Secure Usenet > > News==---- > >> http://www.newsfeeds.com The #1 Newsgroup Service in the World! > >>100,000 Newsgroups > >> ---= East/West-Coast Server Farms - Total Privacy via Encryption =--- > > > > > > ----== Posted via Newsfeeds.Com - Unlimited-Uncensored-Secure Usenet News==---- > http://www.newsfeeds.com The #1 Newsgroup Service in the World! 120,000+ Newsgroups > ----= East and West-Coast Server Farms - Total Privacy via Encryption =---- -- http://mail.python.org/mailman/listinfo/python-list