Hi Ron: I agree about the language, verbose, cryptic and not intuitive at all 
for this old Applications Programmer.
Besides, I have a Vb.net Script (App) working so far and it handles OnFocus and 
OnShutdown very well indeed.
It still needs some testing and the Form1 grabs focus sometimes even though 
hidden.
I'll see how to work around that tomorrow - might not need a form to start a 
message pump.
So far so good Indeed!
Rick USA
  ----- Original Message ----- 
  From: Ron Parker 
  To: gw-scripting@gwmicro.com 
  Sent: Friday, April 13, 2012 4:29 PM
  Subject: Re: WE And Microsoft Development Environments


  Window-Eyes isn't WSH. Both Window-Eyes and WSH are ActiveScript script 
hosts, and we leveraged the WSF file format to allow our encrypted scripts to 
be signed, but that's the only relationship between Window-Eyes and WSH.

  You're right about PowerShell, though: it's embeddable, but only in managed 
code for now. Since Window-Eyes is and will likely remain unmanaged code, it 
can't have PowerShell embedded until Microsoft makes that possible, assuming 
they ever do. 

  However, you can use PowerShell apps with Window-Eyes. I have done so, and it 
works. They just run in a separate process, as VB6, VB.net, C++, C#, Python, 
and Perl apps also do. I can't say I'm a fan of the language, though; it seems 
both incredibly verbose and unnecessarily cryptic at the same time.


  On 4/13/2012 4:19 PM, Katherine Moss wrote: 
    PowerShell has no support for WSH, I don't think, and it is strictly .NET. 



    From: RicksPlace [mailto:ofbgm...@mi.rr.com] 
    Sent: Friday, April 13, 2012 4:13 PM
    To: gw-scripting@gwmicro.com
    Subject: Re: WE And Microsoft Development Environments



    Hi Kate:

    I threw Aaron's VB.net example together, fixed a missing piece of code from 
the C# example and it compiled and ran without errors except...

    The OnFocus event seemingly did not fire at all on this first go.

    The Shutdown Event did fire properly.

    I am testing  the VB.net Script's Executable Assembly over the Microsoft 
VWD Platform while I work on a VWD Project.

    I will look at it some more tomorrow, run another test or 2 and see if I 
can find something.

    Otherwise I will contact Aaron to see what he thinks.

    This might be the same problem I was having before, not sure, but if Aaron 
tested his scripts then it should work if I get it right.

    I wonder if GW could add that PowerShell scripting language to the WEEngine 
like VBS and I think JavaScript without too much trouble.

    That way it would not be an external script but have full access to the 
.net Framework.

      That said, I just dont know how that works so cant even guess if it is a 
big job or even possible.

      Later and good hunting!

      Rick USA

      ----- Original Message ----- 

      From: Katherine Moss 

      To: gw-scripting@gwmicro.com 

      Sent: Friday, April 13, 2012 3:54 PM

      Subject: RE: WE And Microsoft Development Environments



      This looks like we're making some progress, and it looks like I do have 
something else to shoot for besides networking-based applications (which is the 
main reason for me learning C#.)  Bu it would be interesting for PowerShell to 
be introduced as another language for WE scripting support.  And the funny 
thing is that PowerShell is a scripting language, Microsoft's preference over 
VBS anyway.  



      From: Aaron Smith [mailto:aa...@gwmicro.com] 
      Sent: Friday, April 13, 2012 10:44 AM
      To: gw-scripting@gwmicro.com
      Subject: Re: WE And Microsoft Development Environments



      Here's the VB version of my previous example:

      Public Class Form1
          Private weApplication As WindowEyes.Application
          Private WithEvents weClientInformation As WindowEyes.ClientInformation
          Private mySpeech As WindowEyes.Speech
          Private myMSAAEventSource As WindowEyes.MSAAEventSource

          Private Sub Form1_Load(sender As System.Object, e As 
System.EventArgs) Handles MyBase.Load
              weApplication = New WindowEyes.Application
              
weApplication.ClientIdentify(System.Diagnostics.Process.GetCurrentProcess().Id)
              weClientInformation = weApplication.ClientInformation
              AddHandler weClientInformation.OnShutdown, AddressOf 
Me.weClientInformation_OnShutdown
              Me.Hide()
          End Sub

          Private Sub myMSAAEventSource_OnObjectFocus(accObj As 
WindowEyes.Accessible)
              Dim handeledEvent As Boolean = False
              Try
                  accObj.Prefetch(WindowEyes.AccessibleProperty.apAll)
                  If accObj.role.Value = 
WindowEyes.AccessibleRoleEnum.role_SYSTEM_PUSHBUTTON Then
                      mySpeech.Speak(accObj.Name & ". I has a button!")
                  End If
              Catch ex As Exception
                  ' Something bad happened
              End Try

              If Not handeledEvent Then
                  
accObj.SimulateEvent(WindowEyes.MSAAEventID.event_OBJECT_FOCUS, 
WindowEyes.AccessibleProperty.apAll)
              End If
          End Sub

          Private Sub weClientInformation_OnShutdown()
              Me.Close()
          End Sub

      End Class

      Aaron

      On 4/12/2012 6:40 PM, RicksPlace wrote: 

      Hi Aaron: I dont remember the exact problem. It might have been something 
to do with that Message Processing problem I mentioned but I think  you, or one 
of the other guys, had mentioned that problem had been addressed so I'm not 
sure that was the problem. 

      I think I still have that VB.net project floating around and will ReVisit 
it.

        If I get it working I will post it as another example of scripting WE 
from within the Visual Studio (VB.net Express) environment.

        If not I will post up any problems I encounter.

        It might take a few days as I am tied up with something else but I will 
give it another go before long.

        Hay, you other folks who program are invited to give it a go in another 
language. Kate, what about Power Basic?

        Rick USA

        ----- Original Message ----- 

        From: Aaron Smith 

        To: gw-scripting@gwmicro.com 

        Sent: Thursday, April 12, 2012 3:49 PM

        Subject: Re: WE And Microsoft Development Environments



        On 4/11/2012 6:21 PM, RicksPlace wrote: 

        I never got MSAA working properly and had some other problems which I 
couldn't resolve.


        Do you remember what the issues were? I whipped up this example real 
quick which demonstrates speaking "I has a button" any time a button accessible 
gets focused:

        using System;
        using System.Collections.Generic;
        using System.ComponentModel;
        using System.Data;
        using System.Diagnostics;
        using System.Drawing;
        using System.Text;
        using System.Windows.Forms;
        using WindowEyes;

        namespace MSAAEventProc {
            public partial class MSAAEventProc : Form {

                private WindowEyes.Application weApplication = null;
                private WindowEyes.ClientInformation weClientInformation = null;
                private WindowEyes.Speech mySpeech = null;
                private WindowEyes.MSAAEventSource myMSAAEventSource = null;

                public MSAAEventProc() {
                    Debug.WriteLine("init");
                    InitializeComponent();
                    // Get the application object
                    weApplication = new WindowEyes.Application();

                    // Introduce ourselves to Window-Eyes
                    
weApplication.ClientIdentify(System.Diagnostics.Process.GetCurrentProcess().Id);
                    weClientInformation = weApplication.ClientInformation;

                    // Hook Shutdown so we can clean up
                    weClientInformation.OnShutdown += new 
ClientInformationEvents_OnShutdownEventHandler(weClientInformation_OnShutdown);

                    // Hook MSAA events
                    myMSAAEventSource = weApplication.MSAAEventSource;
                    myMSAAEventSource.OnObjectFocus += new 
MSAAEvents_OnObjectFocusEventHandler(myMSAAEventSource_OnObjectFocus);

                    // Set up Speech so we can talk
                    mySpeech = weApplication.Speech;
                }

                private void 
myMSAAEventSource_OnObjectFocus(WindowEyes.Accessible accObj) {
                    bool handeledEvent = false;
                    try {
                        // Prefetch all the Accessible info
                        accObj.Prefetch(AccessibleProperty.apAll);

                        // If it's a button, we'll handle it.
                        if (accObj.role.Value == 
AccessibleRoleEnum.role_SYSTEM_PUSHBUTTON) {
                            mySpeech.Speak(accObj.Name + ". I has a button!");
                        }
                    } catch (Exception e) {
                        // Something bad happened;
                    }

                    if (!handeledEvent) {
                        // Simulate the event
                        accObj.SimulateEvent(MSAAEventID.event_OBJECT_FOCUS, 
AccessibleProperty.apAll);
                    }
                }

                private void weClientInformation_OnShutdown() {
                    // Bye
                    Close();
                }
            }
        }

        Aaron




-- Aaron Smith Web Development * App Development * Product Support SpecialistGW 
Micro, Inc. * 725 Airport North Office Park, Fort Wayne, IN 46825260-489-3671 * 
gwmicro.com To insure that you receive proper support, please include all 
pastcorrespondence (where applicable), and any relevant informationpertinent to 
your situation when submitting a problem report to the GWMicro Technical 
Support Team.

-- Aaron Smith Web Development * App Development * Product Support SpecialistGW 
Micro, Inc. * 725 Airport North Office Park, Fort Wayne, IN 46825260-489-3671 * 
gwmicro.com To insure that you receive proper support, please include all 
pastcorrespondence (where applicable), and any relevant informationpertinent to 
your situation when submitting a problem report to the GWMicro Technical 
Support Team.

Reply via email to