Sign in to follow this  
Followers 0
zbatev

I just want a sensible Enter Key for my users

4 posts in this topic

#1 ·  Posted (edited)

Hi Again,

I'm really stuck with this, I have a complex program now more than 3K lines, I'll only post the portion which is giving me a lot of headache.

This slice of code will monitor where the active cursor is and when the user press enter it will call the function associated with the input field(Search Field). Each of these Search input box reside on its own Tab Control

It does work pretty well HOWEVER if I left the cursor at the input field and fire up other applications such as notepad, the HotKey (enter) does not set to its default.

Case Else ;user is doing something else other than pressing/clicking on buttons/controls
      $sFocus = ControlGetFocus($formAgentBuddy)
      $hFocus = ControlGetHandle($formAgentBuddy, "", $sFocus)
      $ctrlFocus = _WinAPI_GetDlgCtrlID($hFocus)

      Switch $hFocus
       Case $hnptSearchMeC
           HotKeySet("{ENTER}", "_SearchContactList")
       Case $hnptSearchMeR
           HotKeySet("{ENTER}", "_SearchReferenceList")
       Case $hnptSearchMeK
             HotKeySet("{ENTER}", "_SearchAccountList")
       Case $hnptSearchMeM
             HotKeySet("{ENTER}", "_SearchTemplateList")
       Case $hnptSearchMeL
             HotKeySet("{ENTER}", "_SearchAlarmList")
       Case Else
             HotKeySet("{ENTER}")
      EndSwitch

I tried using GUISetAccelerators but I guess this cannot be dynamically changed like

Case Else ;user is doing something else other than pressing/clicking on buttons/controls
      $sFocus = ControlGetFocus($formAgentBuddy)
      $hFocus = ControlGetHandle($formAgentBuddy, "", $sFocus)
      $ctrlFocus = _WinAPI_GetDlgCtrlID($hFocus)

      Switch $hFocus
       Case $hnptSearchMeC
                 Dim $AccelKeys[1][2]=[["{ENTER}",$btnSearchContactList]]
                 GUISetAccelerators($AccelKeys)
       Case $hnptSearchMeR
                 Dim $AccelKeys[1][2]=[["{ENTER}",$btnSearchReferenceList]]
                 GUISetAccelerators($AccelKeys) 
       Case $hnptSearchMeK
                ;.... and so on
       Case $hnptSearchMeM
                ;.... and so on
       Case $hnptSearchMeL
                ;.... and so on
       Case Else
             Dim $AccelKeys = ""
      EndSwitch

I also tried to monitor the Active Window with WinGetState and use BitAnd with an 8 but sadly that doesn't also do the trick even if I switch to other application my program seem to be still active even when its already greyed out like if I left the cursor at the Search Field(input Box) and I press enter in notepad instead of giving me a new line in notepad it executes the search in my application.

Edited by zbatev

Share this post


Link to post
Share on other sites



Simply check that the GUI window is active and if it isn't remove the Enter hotkey.

Share this post


Link to post
Share on other sites

Simply check that the GUI window is active and if it isn't remove the Enter hotkey.

I already tried that:but it doesn't work for me.

I also tried to monitor the Active Window with WinGetState and use BitAnd with an 8 but sadly that doesn't also do the trick even if I switch to other application my program seem to be still active even when its already greyed out like if I left the cursor at the Search Field(input Box) and I press enter in notepad instead of giving me a new line in notepad it executes the search in my application.

Share this post


Link to post
Share on other sites

Thanks for all those who took time to read my post I already have a solution use the mouse position... and its the only one solution that worked for me. Might not be the best but it works like a charm

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Similar Content

    • DLS
      By DLS
      I have a working script that changes the core affinity and process priority of multiples of a specific application I have running.  
      I have that part figured out.

      I would like to make a little modification to it.

      Windows10 introduced virtual desktops.  I am trying to have different core affinity and priority of processes on the visible and non-visible desktops.  
      What I need is a bool function that could be described as IsWindowOnCurrentDesktop($hWnd).  I have searched the winAPI.au3 but I do not believe anything like that exists built it.
      I have searched multiple places before asking for help. I found a Microsoft supplied example of the function I need using C#, but I am unfamiliar with C# to a degree that I cannot port the system call over.
      https://blogs.msdn.microsoft.com/winsdk/2015/09/10/virtual-desktop-switching-in-windows-10/
      Help is appreciated but not expected.  Thanks in advanced.   In the meantime I will be learning C# syntax and class structure.
    • TheDcoder
      By TheDcoder
      Hello! , I was wondering if something like this:

      is possible to in AutoIt? The search text will disappear ASA the user types a letter in the input box... Is it possible? How? Here is some code for you to work on:
      #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("Form1", 393, 130, 192, 124) $Input1 = GUICtrlCreateInput("", 88, 48, 209, 21) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd Thanks in Advance, TD
       
      P.S ASA = As soon as
      Are you wondering about the image which I provided above? I made it with a very careful forgery
    • cookiemonster
      By cookiemonster
      Hi all,
      So ive had a form for a while now, which the input boxes don't always display correctly, easiest way is to show you so plz see example.png
      As you can see all the input boxes except for the third column are not showing correctly, if I hover my mouse over them they then do, which is what I did for the boxes in the third row for the example.
      Anyone got any idea of the cause and the fix?

    • Dlund
      By Dlund
      Hey all, I'm working on a script to read in values and write them to an array which increases with size as values are added from a GUI three at a time.

      at this time, I have the following script.
       
      #include <GUIConstantsEx.au3> #include <Array.au3> main() Func saveData($arr, $newData) If IsArray($arr) = 1 Then $Bound = UBound($arr) ReDim $arr[$Bound+1] $arr[$Bound] = $newData Else Dim $arr[1] $arr[0] = $newData EndIf ; _ArrayDisplay($arr) Return $arr EndFunc Func main() dim $arr1; $oForm1 = GUICreate("Form1", 623, 226, 192, 114) $Input1 = GUICtrlCreateInput("X Value", 8, 8, 177, 21) $Input2 = GUICtrlCreateInput("Y Value", 264, 8, 129, 21) $Input3 = GUICtrlCreateInput("Z Value", 496, 8, 121, 21) $Button1 = GUICtrlCreateButton("Save and Continue", 8, 187, 137, 16) $Button2 = GUICtrlCreateButton("Save and Print", 152, 187, 145, 16) $Button3 = GUICtrlCreateButton("Cancel and Print", 304, 187, 137, 16) GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Button1 $arr1 = saveData($arr1, $Input1) $arr1 = saveData($arr1, $Input2) $arr1 = saveData($arr1, $Input3); GUICtrlSetData($Input1, "Newer X") GUICtrlSetData($Input2, "Newer Y") GUICtrlSetData($Input3, "Newer Z") Case $Button2 $arr1 = saveData($arr1, $Input1) $arr1 = saveData($arr1, $Input2) $arr1 = saveData($arr1, $Input3); _ArrayDisplay($arr1) Exit Case $Button3 _ArrayDisplay($arr1) Exit EndSwitch WEnd EndFunc The array successfully increases in size, but when called in the groups of three it is always storing the values: 3,4, and then 5.  Even if the default text is left as is 
    • corgano
      By corgano
      How do I attach to the active acrobat window and get it's javascript object? I know how to do this when i know the filename:
      $oAcro = ObjCreate("acroexch.app") $oPDF = ObjCreate("AcroExch.PDDoc") $File = @ScriptDir&"\test.PDF" $oPDF.Open($File) $oJSpdf = $oPDF.getJSObject.app.opendoc($File) But how would i do this if I didn't know $File? If I wanted to connect to the Active window instead?