Hi Aaron and thanks:
My initial process to set up the Formless project was:
In the IDE after I had added an empty project I went under the Project Menu and 
checked "Show All Files"
Then I added the windoweyes.dll to the project by:
Copying and pasting it into  the Bin>Debug directory
Then I set a reference to it:
Under the Project Menu I clicked Add Reference;
Then I cursored right to the Browse Tab;
Navigated to the Bin>Debug directory and selected the new windoweyes.dll and 
hit enter.
(I can see it added as "windoweyes" under the References SubDirectory of the 
Project Directory)
To set up the project to not use a Main Form:
In the Project Properties, I think it is the Application tab:
I set the ApplicationType to: WindowsForms Application
Then I had to uncheck the EnableApplicationFramework CheckBox before I could 
set the StartupObject to: "Sub Main" (Without the Quote Marks) which is located 
in: 
Public Module LaunchApp
I dont remember if I had to type "Sub Main" (without the quote marks) into the 
ComboBox or if it was available as a selection afterI unchecked the 
EnableApplicationFramework checkbox.
The ApplicationFramework involves just ending the project when the main form 
closes if I remember.
So if you dont have a main Form you can not have this checkbox checked.
At least that is what I remember from when I initially set the project up some 
time ago.
I dont see any other additional references I had to explicitly add to the 
project but let me know if I missed one (You will get syntax errors if I missed 
one) and I will check it out.
  I may have had to add one of the normally automatically added .net references 
since I unchecked the  EnableApplicationFramework  checkbox but I dont recall.
  So if you get any syntax errors let me know and I will find the correct 
reference to add from the .net component of the Add Reference item under the 
Project Menu and send you the name of it as it appears in the .net tab of the 
Add References Tab Dialog.
  Rick USA
  From: Aaron Smith 
  To: [email protected] 
  Sent: Monday, June 25, 2012 11:33 AM
  Subject: Re: External Script Keyboard Problems Review


  Thanks, Rick. 

  Now we have something we can debug and work with. The first issue I see right 
off the bat is that none of your code is getting executed, as least not when I 
paste it into an empty project. Perhaps I'm missing something from the 
solution, but I don't see anything setting up LaunchApp class's Main function 
as the entry point. What's the Startup Form set to in your project properties?

  Aaron


  On 6/24/2012 11:15 AM, RicksPlace wrote:

     Hi Aaron:
    Maximize the post so it doesnt wrap so badly or I can send this and future 
posts as a txt file attachment going forward if you want.
    This is my first test so I included everything so you know pretty much what 
is going on.
    It seems bloody long but in subsequent tests I will trim all communications 
down to what ever level you want and perform 
    whatever tests you require.
    The direct code related to the Keyboard events is only a few lines long and 
is what I will change for future tests so later posts can be much, much  
shorter.
    For Quick Search:
    <BeginBackground><EndBackground>
    <BeginCode><EndCode>
    <BeginWEEvent><EndWEEvent>
    <BeginScriptLog><EndScriptLog>

    <BeginBackground>
    Originally I wanted to trap whenever a user hit a navigation or action key 
combination while working in vb.net 2010 Express.
    If the Focused object was Off Screen I wanted to block WE Speech and, if an 
action key, block the KeyStroke from getting to 
    vb.net 2010.
    If the focused object was on screen I just wanted windoweyes to speak 
normally and pass the keystroke through to vb.net 2010 
    express for normal processing.
    I have tried several approaches but not yet been able to get this to work.
    This is the first ReTesting of prior tests and I am just using vb.net 
AddHandler statements to delegate any vb.net 2010 
    express UI Keyboard Events to  fire the OnKeyDown and OnKeyUp event handler 
functions in my script.
    To try and do this in this test I used the 
    WindowEyes.KeyDisposition.kdProcess
    enum against the Keyboard's OnKeyUp and OnKeyDown events.
    I hope I have used them correctly.

    For this test I just want to:
    1)  see both the OnKeyDown and OnKeyUp event  Functions in my script fire;
    2) hear WindowEyes read me the vb.net 2010 UI controls as I tab to them;
    3) Have keys like enter or alt+f4 or other action keys perform their 
actions within vb.net 2010.
    None of the above things happen when my script is running and I have the 
Keyboard Object's OnKeyDown and OnKeyUp Event 
    handlers defined.
    When my script is disabled or I comment out the Keyboard Object's code for 
the OnKeyDown and OnKeyUp event handlers 
    WindowEyes reads the UI Controls and hitting action keys like enter or 
alt+F4 work properly while working in vb.net 2010.

    For this test I used the below steps:
    1) I fire up WEEvent and disable logging, open vb.net 2010 and enable 
WEEvent logging.
    2) in vb.net 2010 I tab 3 times, hit enter once, hit alt+f4 to try and 
close vb.net 2010 (It wont close since it looks like 
    none of the keystrokes are getting passed to vb.net 2010) and there is no 
WindowEyes speech coming from vb.net 2010.
    3) I Disable WEEvent Logging  and minimize vb.net 2010.
    I copied the WEEvent History file and pasted it below.
    I then close WEEvent and reboot the computer.
    After ReBoot I copied the ScriptLog Output text file and pasted it below 
the WEEvent Output.
    Note that the OnKeyUp handler Function in my script fires but the OnKeyDown 
Function does not.
    If I place the AddHandler for the OnKeyDown Event before the OnKeyUp 
AddHandler Statement in my script code then the 
    OnKeyDown Event Handler Function in my script fires but the OnKeyUp 
function does not fire - This was noted in earlier tests.
    <EndBackground>

    <BeginCode>
    ' ======
    ' This is Test01 testing a straight up AddHandler version of using a COM 
DLL 
    ' which has been added to the project along with a Reference to the DLL.
    ' This app has One Module and 2 classes:
    ' LaunchApp is the Root, Global Module holding global variables and the 
"Main" sub.
    ' ProjectContextClass is the class where all project code resides.
    ' ScriptLog Class is a utility class that just prints a line using a 
StreamReader upon request.
    ' the Windoweyes dll and any other references have been added to the 
project.
    ' It is a Windows Forms Project without a Form and set up in the Project 
Properties accordingly.
    ' =====
    Imports System.Threading
    Imports System.Diagnostics
    Imports System.Runtime.InteropServices
    Imports System.Configuration
    Imports System.IO
    Imports System.Windows
    Public Module LaunchApp
    Public myKeyboard As WindowEyes.Keyboard
    Public weApplication As WindowEyes.Application
        Public WithEvents weClientInformation As WindowEyes.ClientInformation
    Public mySpeech As WindowEyes.Speech
    Public ProjectFatleErrorOccured As Boolean = False
    Public Sub Main()
    Application.Run(New ProjectContextClass)
    End Sub
    End Module    
    Public Class ProjectContextClass
    Inherits ApplicationContext
    ' used to indicate where an error or diagnostic message comes from within  
my script.
    Dim ClassID As String = "ProjectContextClass"
    Dim MethodID As String = ""
    ' The optional New() sub is the default method executed the first time a 
Class is referenced.
    Public Sub New()
    MethodID = "New()"
    ' appProcess is used to filter the Keyboard Messages.
    Dim AppProcess As Object
    Try
    ' Standard WE Initialization
    weApplication = New WindowEyes.Application
    
weApplication.ClientIdentify(System.Diagnostics.Process.GetCurrentProcess().Id)
    weClientInformation = weApplication.ClientInformation
    AppProcess = weClientInformation.ApplicationProcess
    AddHandler weClientInformation.OnShutdown, AddressOf 
weClientInformation_OnShutdown
    mySpeech = weApplication.Speech
    ' Keyboard Handling 
    myKeyBoard = weApplication.KeyBoard
    myKeyboard.FilterProcess = AppProcess
    AddHandler myKeyboard.OnKeyUp, AddressOf KeyEvents_OnKeyUpEventHandler
    AddHandler myKeyboard.OnKeyDown, AddressOf KeyEvents_OnKeyDownEventHandler
    Catch ex As Exception
    ScriptLog.WriteLine( "Catch Triggered in " & ClassID & " > " & MethodID & 
VbCrlf & ex.ToString())
    ProjectFatleErrorOccured = True
    GoTo ProcExit
    End Try
    ' The following code will ensure vb.net 2010 is running.
    ' This script is automatically associated with both vb.net 2008 and vb.net 
2010 
    ' when I associate it to vb.net 2010 using the WE Dialog.
    ' Below, ensure it runs only when vb.net 2010 is running and not vb.net 
2008.
    Dim VB2010 As Integer = _
    AppProcess.ProductName.IndexOf( "2010")
    If VB2010 < 0 Then
    mySpeech.Speak( "AppProcess.ProductName Not For 2010, is: " & 
AppProcess.ProductName)
    ScriptLog.WriteLine( "AppProcess.ProductName Not For 2010, is: " & 
AppProcess.ProductName)
    ProjectFatleErrorOccured = True
    GoTo ProcExit
    End If
    ProcExit:
    If ProjectFatleErrorOccured Then
    weClientInformation_OnShutdown()
    End If
    End Sub ' The New (Default) Sub
    Public  Sub weClientInformation_OnShutdown()
    MethodID = "weClientInformation_OnShutdown()"
    ScriptLog.WriteLine( "Enter " & ClassID & " > " & MethodID)
    mySpeech.Speak( "ShuttingDown Bye Bye")
    RemoveHandler myKeyboard.OnKeyDown, AddressOf 
KeyEvents_OnKeyDownEventHandler
    RemoveHandler myKeyboard.OnKeyUp, AddressOf KeyEvents_OnKeyUpEventHandler
    ' As I understand it, Below the first statement cleans up things
    ' The second statement actually closes the process
    Application.Exit()
    System.Environment.Exit(0)
    End Sub
    ' Below are the KeyEvents_OnKeyDownEventHandler and 
KeyEvents_OnKeyUpEventHandler Functions.
    Public Function KeyEvents_OnKeyDownEventHandler( _
    ByVal ReturnedKey As Integer, ByVal ReturnedModifiers As 
WindowEyes.KeyModifiers) _
    As WindowEyes.KeyDisposition
    MethodID = "KeyEvents_OnKeyDownEventHandler"
    ScriptLog.WriteLine( "Enter " & ClassID & " > " & MethodID)
    mySpeech.Speak( ClassID & " > " & MethodID & " Fired")
    ScriptLog.WriteLine( "ReturnedKey: " & ReturnedKey.ToString() )
    ScriptLog.WriteLine( "ReturnedModifiers: " & ReturnedModifiers.ToString() )
    Return WindowEyes.KeyDisposition.kdProcess
    End Function
    Public Function KeyEvents_OnKeyUpEventHandler( _
    ByVal ReturnedKey As Integer, ByVal ReturnedModifiers As 
WindowEyes.KeyModifiers) _
    As WindowEyes.KeyDisposition
    MethodID = "KeyEvents_OnKeyUpEventHandler"
    ScriptLog.WriteLine( "Enter " & ClassID & " > " & MethodID)
    mySpeech.Speak( ClassID & " > " & MethodID & " Fired")
    ScriptLog.WriteLine( "ReturnedKey: " & ReturnedKey.ToString() )
    ScriptLog.WriteLine( "ReturnedModifiers: " & ReturnedModifiers.ToString() )
    Return WindowEyes.KeyDisposition.kdProcess
    End Function
    End Class
    Public Class ScriptLog
    Public Shared Sub WriteLine( ByVal Line As String )
    Dim ThisFilePath As String = _
    "c:\VBNet2010WETester\VBNet2010WETester\ScriptLog.txt"
    Try
    File.AppendAllText( ThisFilePath, Line )
    File.AppendAllText( ThisFilePath, vbCrLf )
    Catch ex As Exception
    MessageBox.Show( "Exception in ScriptLog, " & ex.ToString() )
    End Try 
    End Sub
    Public Shared Sub Clear()
    Dim ThisFilePath As String = _
    "c:\VBNet2010WETester\VBNet2010WETester\ScriptLog.txt"
    File.Delete(ThisFilePath)
    WriteLine( DateTime.Now )
    End Sub
    End Class
    <EndCode>
    <BeginWEEvent>
    1 Speech.OnSpeak, "Logging Enabled"
    2 OnObjectStateChange, Name: "Latest News", Value: "none", Role: page tab, 
State: selected,focusable,selectable, Description: 

    "none", Keyboard Shortcut: "none", Help: "none", ChildID: 0, Children: 12, 
Window Handle: 20340, Event Window Handle: 20340, 

    Default Action: "Switch"
    3 OnObjectNameChange, Name: "Latest News", Value: "none", Role: page tab, 
State: selected,focusable,selectable, Description: 

    "none", Keyboard Shortcut: "none", Help: "none", ChildID: 0, Children: 12, 
Window Handle: 20340, Event Window Handle: 20340, 

    Default Action: "Switch"
    ... Rest of StartPage initialization removed for brevity
    RtNote I Tab (FirstTime), no speech from vb.net 2010 only from my script.
    37 Keyboard.OnKeyDown VirtualKeyCode = 9, keyModifiers  = 0
    38 Keyboard.OnKeyProcessedDown VirtualKeyCode = 9, keyModifiers = 0
    39 Keyboard.OnKeyUp VirtualKeyCode = 9 (Hex: 9), keyModifiers = 0
    40 Speech.OnSpeak, "Project Context Class  greater than  Key Events 
underline  On Key Up Event Handler Fired"
    41 Keyboard.OnKeyProcessedUp VirtualKeyCode = 9, keyModifiers = 0
    RtNote Tab (Second Time), no speech from vb.net 2010 only from my script..
    42 Keyboard.OnKeyDown VirtualKeyCode = 9, keyModifiers  = 0
    43 Keyboard.OnKeyProcessedDown VirtualKeyCode = 9, keyModifiers = 0
    44 Keyboard.OnKeyUp VirtualKeyCode = 9 (Hex: 9), keyModifiers = 0
    45 Speech.OnSpeak, "Project Context Class  greater than  Key Events 
underline  On Key Up Event Handler Fired"
    46 Keyboard.OnKeyProcessedUp VirtualKeyCode = 9, keyModifiers = 0
    RtNote Tab (Third Time), no speech from vb.net 2010 only from my script..
    47 Keyboard.OnKeyDown VirtualKeyCode = 9, keyModifiers  = 0
    48 Keyboard.OnKeyProcessedDown VirtualKeyCode = 9, keyModifiers = 0
    49 Keyboard.OnKeyUp VirtualKeyCode = 9 (Hex: 9), keyModifiers = 0
    50 Speech.OnSpeak, "Project Context Class  greater than  Key Events 
underline  On Key Up Event Handler Fired"
    51 Keyboard.OnKeyProcessedUp VirtualKeyCode = 9, keyModifiers = 0
    RtNote Hit Enter, no speech from vb.net 2010 only from my script and no 
MSAA or other actions..
    52 Keyboard.OnKeyDown VirtualKeyCode = 13, keyModifiers  = 0
    53 Keyboard.OnKeyProcessedDown VirtualKeyCode = 13, keyModifiers = 0
    54 Keyboard.OnKeyUp VirtualKeyCode = 13 (Hex: D), keyModifiers = 0
    55 Speech.OnSpeak, "Project Context Class  greater than  Key Events 
underline  On Key Up Event Handler Fired"
    56 Keyboard.OnKeyProcessedUp VirtualKeyCode = 13, keyModifiers = 0
    57 Keyboard.OnKeyDown VirtualKeyCode = 18, keyModifiers  = 0
    58 Keyboard.OnKeyProcessedDown VirtualKeyCode = 18, keyModifiers = 0
    RtHere, Hit Alt+F4 to try and close vb.net 2010, no speech and did not 
close.
    59 Keyboard.OnKeyDown VirtualKeyCode = 115, keyModifiers  = 4
    60 Keyboard.OnKeyProcessedDown VirtualKeyCode = 115, keyModifiers = 4
    61 Keyboard.OnKeyUp VirtualKeyCode = 115 (Hex: 73), keyModifiers = 4
    62 Speech.OnSpeak, "Project Context Class  greater than  Key Events 
underline  On Key Up Event Handler Fired"
    63 Keyboard.OnKeyProcessedUp VirtualKeyCode = 115, keyModifiers = 4
    64 Keyboard.OnKeyUp VirtualKeyCode = 18 (Hex: 12), keyModifiers = 4
    65 Speech.OnSpeak, "Project Context Class  greater than  Key Events 
underline  On Key Up Event Handler Fired"
    66 Keyboard.OnKeyProcessedUp VirtualKeyCode = 18, keyModifiers = 4
    RtHere, think this is where I hit ctrl+windows+e to stop WEEvent Logging.
    67 Keyboard.OnKeyDown VirtualKeyCode = 91, keyModifiers  = 8
    68 Keyboard.OnKeyDown VirtualKeyCode = 17, keyModifiers  = 10
    69 Keyboard.OnKeyProcessedDown VirtualKeyCode = 91, keyModifiers = 8
    70 Keyboard.OnKeyProcessedDown VirtualKeyCode = 17, keyModifiers = 10
    <EndWEEvent>
    <BeginScriptLog>
    Enter ProjectContextClass > KeyEvents_OnKeyUpEventHandler
    ReturnedKey: 91
    ReturnedModifiers: kmControl
    Enter ProjectContextClass > KeyEvents_OnKeyUpEventHandler
    ReturnedKey: 17
    ReturnedModifiers: kmNone
    Enter ProjectContextClass > KeyEvents_OnKeyUpEventHandler
    ReturnedKey: 9
    ReturnedModifiers: kmNone
    Enter ProjectContextClass > KeyEvents_OnKeyUpEventHandler
    ReturnedKey: 9
    ReturnedModifiers: kmNone
    Enter ProjectContextClass > KeyEvents_OnKeyUpEventHandler
    ReturnedKey: 9
    ReturnedModifiers: kmNone
    Enter ProjectContextClass > KeyEvents_OnKeyUpEventHandler
    ReturnedKey: 13
    ReturnedModifiers: kmNone
    Enter ProjectContextClass > KeyEvents_OnKeyUpEventHandler
    ReturnedKey: 115
    ReturnedModifiers: kmAlt
    Enter ProjectContextClass > KeyEvents_OnKeyUpEventHandler
    ReturnedKey: 18
    ReturnedModifiers: kmAlt
    Enter ProjectContextClass > KeyEvents_OnKeyUpEventHandler
    ReturnedKey: 91
    ReturnedModifiers: kmControl
    Enter ProjectContextClass > KeyEvents_OnKeyUpEventHandler
    ReturnedKey: 17
    ReturnedModifiers: kmNone
    Enter ProjectContextClass > KeyEvents_OnKeyUpEventHandler
    ReturnedKey: 115
    ReturnedModifiers: kmAlt
    Enter ProjectContextClass > KeyEvents_OnKeyUpEventHandler
    ReturnedKey: 18
    ReturnedModifiers: kmAlt
    Enter ProjectContextClass > KeyEvents_OnKeyUpEventHandler
    ReturnedKey: 89
    ReturnedModifiers: kmNone
    Enter ProjectContextClass > KeyEvents_OnKeyUpEventHandler
    ReturnedKey: 115
    ReturnedModifiers: kmAlt
    Enter ProjectContextClass > KeyEvents_OnKeyUpEventHandler
    ReturnedKey: 18
    ReturnedModifiers: kmNone
    Enter ProjectContextClass > KeyEvents_OnKeyUpEventHandler
    ReturnedKey: 13
    ReturnedModifiers: kmNone
    <EndScriptLog>
    EndOfDocument


-- 
Aaron Smith 
Web Development * App Development * Product Support Specialist
GW Micro, Inc. * 725 Airport North Office Park, Fort Wayne, IN 46825
260-489-3671 * gwmicro.com

To insure that you receive proper support, please include all past
correspondence (where applicable), and any relevant information
pertinent to your situation when submitting a problem report to the GW
Micro Technical Support Team.

Reply via email to