Hi Guys and thanks for all the ideas so far: Here is the relevant code and the 
WE Objects I am trying to use:
Remember that whenever the down key is pressed it stops Solution Explorer from 
being hidden with or without any Key Up processing which is not what I would 
expect.
In my code do you see anything that would muck up the Key Down Processed Event 
Handler?
I dont do anything to change the Key Down Process and, in fact, want it to work 
normally until I change focus downline.
Bruce, the KeyUp actually fired in an earlier test so I am guessing it is 
suppose to fire.
If I dont get it working sooner rather than later I may try to use just  the 
Automation OnFocus event handler to determine when Solution Explorer loses 
focus if that works - another analysis project.
MyCode:
In Main Module:
Public ShiftEscapeKeyUpHandlerExists As Boolean = Nothing
Public ShiftEscapePressed As Boolean = Nothing
Public WithEvents ShiftEscapeKey As WindowEyes.Key
In Initialize Sub:
Try
ShiftEscapeKey = weApplication.KeyBoard.Key( "Shift-Escape" )
AddHandler ShiftEscapeKey.OnKeyProcessedDown, AddressOf 
instTester.OnKeyProcessedDownSub
ShiftEscapePressed = False
Catch ex As Exception
ScriptLog.WriteLine( "Catch Triggered assigning ShiftEscapeKey Handlers")
ScriptLog.WriteLine( ex.ToString())
End Try
In the Tester Class, the handler subs.
Public Class Tester
Dim ClassID As String = "Tester"
Dim MethodID As String = ""
Public Sub OnKeyProcessedDownSub(ByVal ReturnedKey As Integer, ByVal 
ReturnedModifiers As WindowEyes.KeyModifiers)
MethodID = "OnKeyProcessedDownSub"
ScriptLog.WriteLine( "Enter " & ClassID & " > " & MethodID)
mySpeech.Speak( "Key Down fired")
ScriptLog.WriteLine( "ActiveWindowName: " & weApplication.ActiveWindow.Name)
ScriptLog.WriteLine( "weApplication.FocusedWindow.Name: " & 
weApplication.FocusedWindow.Name)
If Not ShiftEscapeKeyUpHandlerExists  Then
Try
AddHandler ShiftEscapeKey.OnKeyProcessedUp, AddressOf OnKeyProcessedUpSub
ShiftEscapeKeyUpHandlerExists = True
Catch ex As Exception
ScriptLog.WriteLine( "Catch Triggered assigning ShiftEscapeKey Handler In: " & 
ClassID & " > " & MethodId)
ScriptLog.WriteLine( ex.ToString())
End Try
End If
ScriptLog.WriteLine( "Exit " & ClassID & " > " & MethodID)
End Sub
Public Sub OnKeyProcessedUpSub(ByVal ReturnedKey As Integer, ByVal 
ReturnedModifiers As WindowEyes.KeyModifiers)
MethodID = "OnKeyProcessedUpSub"
ScriptLog.WriteLine( "Enter " & ClassID & " > " & MethodID)
mySpeech.Speak( "Key Up fired")
ScriptLog.WriteLine( "ActiveWindowName: " & weApplication.ActiveWindow.Name)
ScriptLog.WriteLine( "weApplication.FocusedWindow.Name: " & 
weApplication.FocusedWindow.Name)
ScriptLog.WriteLine( "Exit " & ClassID & " > " & MethodID)
End Sub
End Class
Here are the WE Objects I use:
The Window-Eyes Object Model
Objects
Keyboard
Methods
Key
Returns a
Key
 object from a string name.
Syntax
Set object_variable = object.Key(KeyName)
where object is a
Keyboard
 object.
Parameters
Name
Data Type
Required/Optional
Description
KeyName
String
Required
The quoted string containing the name of a key (i.e. "Control-Shift-Q"). 
Modifiers
are spelled out completely, not abbreviated. You can use the Window-Eyes hot key
dialog to verify the exact spelling of a hot key to use as a string. To create 
an
Undefined key, use an empty string (i.e. "").

The Window-Eyes Object Model
Objects
Key
Events
OnKeyProcessedDown
Occurs when a key is pressed and processed. You cannot modify the behavior of 
the
key press during this event.
For security purposes, key events will not fire when a password edit box has 
focus.
Syntax
Sub OnKeyProcessedDown(
VirtualKeyCode
,
KeyModifiers
)
Parameters
Name
Data Type
Description
VirtualKeyCode
Long
The value of the key that was passed to the event
KeyModifiers
Enum
Key modifiers that were passed to the event

The Window-Eyes Object Model
Objects
Key
Events
OnKeyProcessedUp
Occurs when a key is released and processed. You cannot modify the behavior of 
the
key press during this event.
For security purposes, key events will not fire when a password edit box has 
focus.
Syntax
Sub OnKeyProcessedUp(
VirtualKeyCode
,
KeyModifiers
)
Parameters
Name
Data Type
Description
VirtualKeyCode
Long
The value of the key that was passed to the event
KeyModifiers
Enum
Key modifiers that were passed to the event
ndOf WEDocs>
  ----- Original Message ----- 
  From: BT 
  To: [email protected] 
  Sent: Wednesday, May 23, 2012 12:35 PM
  Subject: Re: KeyProcessedUp and KeyProcessedDown Events


  Hi Rick,

      Steve had a good question on this but what I think you are saying may be 
the result of the program you are trying to control. For the events you are 
asking are related to that program, unless you want to do it at the other end. 
So you actually may have answered your own question.

      If the other program is not triggering the other event, then it will not 
be seen. I guess you could monitor it and do it yourself to get around the no 
keyup event process of the command you want.

      This below is for event info data and when that is available for an 
object in the call back function.

          Sincerely
          Bruce

    Sent: Wednesday, May 23, 2012 10:50 AM
    Subject: Re: KeyProcessedUp and KeyProcessedDown Events



    Hi Rick,

        This is a tree view item but I think all key processes are the same but 
may be wrong.

        I capture the event change, store the data of the event which submitted 
the data. Waited until the key processed event to insure that the data may or 
should be related to the key in question. 

        This is what I did inside the Trek game. I have extra stuff there from 
the Uninstall program because in the future I may allow people to store 
information in the game...

            Bruce

     MainDialogProc = False
     If dEvent = treeviewKeyDown Then
      TV_KeyDown = True
      myTV_KeyConnection = ConnectEvent( Keyboard, "OnKeyProcessedUp", 
"OnKeyProcessedUp")
     End If
     If dEvent = treeviewClicked Then
      TV_MouseDown = True
      myTV_MouseConnection = ConnectEvent( Mouse, "OnButtonUp", "OnButtonUp")
     End If
     If dEvent = treeviewSelectionChange Or dEvent = treeviewClicked Then 'Or 
dEvent = treeviewItemExpanded Then
      Set TV_Obj = dControl.selected
      Set TV_ObjControl = dControl
      TV_Name = TV_Obj.Text
      TV_Data = TV_Obj.Data
      TV_Array(1) = TV_Data
    ...
    End Function

    Sub OnKeyProcessedUp( ky, md)
     Disconnect myTV_KeyConnection
     myTV_KeyConnection = 0
     If TV_KeyDown and ky = vk_Space and md = 0 Then
      Silence
    '  Speak " Name Is: " & TV_Name & " Item " & TV_Data & " Whose Item Was 
Space Barred "
      If treeNamesDict.Exists( TV_Name) Then Speak treeNamesDict( TV_Name)
      Queue "LaunchURLEmail"
     End If
     TV_KeyDown = False
    End Sub

    Sub OnButtonUp( button)
     Disconnect myTV_MouseConnection
     myTV_MouseConnection = 0
     If TV_MouseDown and button = 0 Then
    '  Speak " Name Is: " & TV_Name & " Item " & TV_Data & " Whose Item Was 
Mouse Clicked "
      If treeNamesDict.Exists( TV_Name) Then Speak treeNamesDict( TV_Name), 2
      Queue "LaunchURLEmail"
     End If
     TV_MouseDown = False
    End Sub

Reply via email to