Hi Again from the External Front: To better match the GW sample I moved all logic into the Root Module to avoid any possible conflict of process implementation due to putting the logic into the Class that defines the Message Pump context. Now the Run command executes an empty class with only a New Constructor sub that does nothing but create a dummy message pump. All logic and variables are defined in the Root Module and globals are defined at the Module level as they were in the GW Example of a VB.net script. Again, the BlockEvent and the OnShutdown events work perfectly but the WatchEvent is still not working even though it seems to be using the correct process as described below. This is leading me to think that there might be a problem with the Windoweyes implementation of the WatchEvent itself but I'm not a COM Guru so am not 100 percent sure. The Process held in the ClientInformation object appears to be correct which is the process of the Overlap Window which should, and is, the CSharp Application Window. Therefore, when I filter the MSAAEventSource used with the WatchEvent the process should be correct and thus the WatchEvent should be firing unless I am missing something. Again, it works as expected with the BlockEvent indicating something might be wrong with the WatchEvent itself or my implementation of it. At this point I think I need Aaron or someone from GW, or an experienced Windoweyes External scriptor, to take a look at things to determine if there is a problem with the Windoweyes implementation of this feature or if I am still doing something wrong.
Below are some lists of objects and properties indicating that the process I use is correct which means that everything should be working if I have not made some subtle, or stupid, mistake I can't find. BeginCopiedOutput: Enter Main Sub ClientInformation Initialized OK MyMSAAEventSource Initialized and Filtered OK BlockFocusEvent Initialized OK. MyMSAAEventSource.WatchEvent sub executed with no errors. BeginList: Overlap Object to Main Module ClassName: wndclass_desked_gsk Handle: 853216 ModuleName: MSENV Name: Microsoft Visual C# 2008 Expres OriginalClassName: wndclass_desked_gsk OriginalType: 7 Process.ProcessID: 680 Style: System.__ComObject Title: Start Page - Microsoft Visual C# 2008 Express Edition Type: 7 EndList: Overlap Object to Main Module Note: The above is the CSharp overlap information. Notice that the process id is 680. BeginList: ClientInformation.ApplicationProcess ProcessID: 680 ModuleName: vcsexpress ExecutablePath: C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\vcsexpress.exe InternalName: VCSExpress.exe OriginalFilename: VCSExpress.exe ProductName: Microsoft® Visual Studio® 2008 ProductVersion: 9.0.30729.1 EndList: ClientInformation.ApplicationProcess Notice that the process id matches the overlap process id of 680. That means that when I assign the Process id of 680 to the BlockEvent via the MyClientInformation Process and, the WatchEvent via the MyMSAAEventSource using the MyClientInformation process, that they both should be applied to watch the same process ie... the CSharp Application process. The BlockEvent works as expected but the WatchEvent is not working. RunPump Statement is next The New Context Pump is initialized. Shutting Down Now Notice that the words "Shutting Down Now" are in the OnShutdown sub fired when that event occurs as triggered in the MyClientInformation process further indicating something is diferent with the WatchEvent method. EndCopiedOutput: Thanks for all your help. This puppy just doesn't seem to hunt and I can't figure out why. Rick USA