Sign in to follow this  
Followers 0
Tasmania

DisableInput key exceptions

5 posts in this topic

For my script, I want to keep ESC enabled, however even though HotKeySet is ESC, when disable input is enabled, it doesn't allow ESC to be pressed. I searched for a way to allow exceptions to disable input, however I didn't find anything. I find it hard to believe that this hasn't been posted before, so in my different variations of searching to disable input except one button I still was unable to find it. Most likely this has to do with my wording, so I'm sorry ahead of time.

AutoItSetOption("TrayIconDebug", 1)
AutoItSetOption("SendKeyDelay", 1)

HotKeySet("{ESC}", "panic")
HotKeySet("!{F4}", "panic")
HotKeySet("^!s", "save")
HotKeySet("^!n", "new")
HotKeySet("^!o", "open")

Func panic()
 Exit
EndFunc

Func new()
 GUICtrlSetData($txtAttn, "")
 GUICtrlSetData($txtEmail, "")
 GUICtrlSetData($txtPwo, "")
 GUICtrlSetData($txtInum, "")
 GUICtrlSetData($txtSca, "")
 GUICtrlSetData($txtDesc, "")
 GUICtrlSetData($dteRstdate, "")
 GUICtrlSetData($cmbType, "CONCEPT")
 GUICtrlSetData($cmbPcode, "SAM-CONCPT")
 GUICtrlSetData($txtPO, "N/C")
 GUICtrlSetData($txtPOamt, "0")
 GUICtrlSetData($txtPOdiscount, "")
 GUICtrlSetData($txtPE, "")
 GUICtrlSetData($txtPM, "")
 GUICtrlSetData($txtCharge, "")
 GUICtrlSetData($txtQty, "1.00")
 GUICtrlSetData($txtMaterial, "")
 GUICtrlSetData($txtGauge, "0.0")
 GUICtrlSetData($edtExNotes, "")
 
 ControlFocus("Syte Line Automation", "", $txtAttn)
EndFunc

Func save()
 DirCreate(@MyDocumentsDir & "\Syte Line Automation\")
 
 $filesaveloc = FileSaveDialog("Save...", @MyDocumentsDir & "\Syte Line Automation\", "Syte Line Automation Files (*.sla)", 16, @MON & @MDAY & @YEAR & @HOUR & @MIN & @SEC & ".sla")
 
 If Not @error Then
  $file = FileOpen($filesaveloc, 10)
  
  If $file = -1 Then
   MsgBox(64, "Error", "Unable to open file.")
   Exit
  EndIf
  
  FileWriteLine($file, GUICtrlRead($txtAttn))
  FileWriteLine($file, GUICtrlRead($txtEmail))
  FileWriteLine($file, GUICtrlRead($txtPwo))
  FileWriteLine($file, GUICtrlRead($txtInum))
  FileWriteLine($file, GUICtrlRead($txtSca))
  FileWriteLine($file, GUICtrlRead($txtDesc))
  FileWriteLine($file, GUICtrlRead($dteRstdate))
  FileWriteLine($file, GUICtrlRead($cmbType))
  FileWriteLine($file, GUICtrlRead($cmbPcode))
  FileWriteLine($file, GUICtrlRead($txtPO))
  FileWriteLine($file, GUICtrlRead($txtPOamt))
  FileWriteLine($file, GUICtrlRead($txtPOdiscount))
  FileWriteLine($file, GUICtrlRead($txtPE))
  FileWriteLine($file, GUICtrlRead($txtPM))
  FileWriteLine($file, GUICtrlRead($txtCharge))
  FileWriteLine($file, GUICtrlRead($txtQty))
  FileWriteLine($file, GUICtrlRead($txtMaterial))
  FileWriteLine($file, GUICtrlRead($txtGauge))
  FileWrite($file, GUICtrlRead($edtExNotes))
  
  FileClose($file)
  
  MsgBox(64, "Save Complete", "File has been saved.")
 EndIf
EndFunc

Func open()
 $fileopenloc = FileOpenDialog("Open...", @MyDocumentsDir & "\Syte Line Automation\", "Syte Line Automation Files (*.sla)")
 
 If Not @error Then
  $edtcnts = ""
  $file = FileOpen($fileopenloc, 0)
  
  If $file = -1 Then
   MsgBox(64, "Error", "Unable to open file.")
   Exit
  EndIf
  
  GUICtrlSetData($txtAttn, FileReadLine($file))
  GUICtrlSetData($txtEmail, FileReadLine($file))
  GUICtrlSetData($txtPwo, FileReadLine($file))
  GUICtrlSetData($txtInum, FileReadLine($file))
  GUICtrlSetData($txtSca, FileReadLine($file))
  GUICtrlSetData($txtDesc, FileReadLine($file))
  
  $filedate = FileReadLine($file)
  $filedatearr = StringSplit($filedate, "/")
  $newdate = $filedatearr[3] & "/" & $filedatearr[1] & "/" & $filedatearr[2]
  
  GUICtrlSetData($dteRstdate, $newdate)
  GUICtrlSetData($cmbType, FileReadLine($file))
  GUICtrlSetData($cmbPcode, FileReadLine($file))
  GUICtrlSetData($txtPO, FileReadLine($file))
  GUICtrlSetData($txtPOamt, FileReadLine($file))
  GUICtrlSetData($txtPOdiscount, FileReadLine($file))
  GUICtrlSetData($txtPE, FileReadLine($file))
  GUICtrlSetData($txtPM, FileReadLine($file))
  GUICtrlSetData($txtCharge, FileReadLine($file))
  GUICtrlSetData($txtQty, FileReadLine($file))
  GUICtrlSetData($txtMaterial, FileReadLine($file))
  GUICtrlSetData($txtGauge, FileReadLine($file))
  While 1
   $edtcnts &= FileRead($file, 1)
   If @error = -1 Then ExitLoop
  WEnd
  GUICtrlSetData($edtExNotes, $edtcnts)
 EndIf
EndFunc

#include <GUIConstants.au3>

#Region ### START Koda GUI section ### Form=C:\Documents and Settings\USPJEFE\Desktop\Projects\frmQuestions.kxf
$frmCInfo = GUICreate("Syte Line Automation", 420, 333, -1, -1)
$grpInfo = GUICtrlCreateGroup("Information", 0, 0, 417, 241)
$lblAttn = GUICtrlCreateLabel("Attn:", 8, 17, 32, 17)
$txtAttn = GUICtrlCreateInput("", 96, 17, 105, 21, BitOR($ES_UPPERCASE,$ES_AUTOHSCROLL))
$lblEmail = GUICtrlCreateLabel("Email:", 8, 41, 38, 17)
$txtEmail = GUICtrlCreateInput("", 96, 41, 105, 21, BitOR($ES_UPPERCASE,$ES_AUTOHSCROLL))
$lblPwo = GUICtrlCreateLabel("PWO #:", 8, 65, 49, 17)
$txtPwo = GUICtrlCreateInput("", 96, 65, 105, 21, BitOR($ES_UPPERCASE,$ES_AUTOHSCROLL))
$lblInum = GUICtrlCreateLabel("Full Item Num:", 8, 89, 77, 17)
$txtInum = GUICtrlCreateInput("", 96, 89, 105, 21, BitOR($ES_UPPERCASE,$ES_AUTOHSCROLL))
$lblSca = GUICtrlCreateLabel("SCA # (No 0):", 8, 113, 76, 17)
$txtSca = GUICtrlCreateInput("", 96, 113, 105, 21, BitOR($ES_UPPERCASE,$ES_AUTOHSCROLL))
$lblDesc = GUICtrlCreateLabel("Description:", 8, 137, 66, 17)
$txtDesc = GUICtrlCreateInput("", 96, 137, 105, 21, BitOR($ES_UPPERCASE,$ES_AUTOHSCROLL))
$lblRstdate = GUICtrlCreateLabel("Request Date:", 8, 161, 79, 17)
$dteRstdate = GUICtrlCreateDate("", 96, 161, 105, 21, $WS_TABSTOP)
$lblType = GUICtrlCreateLabel("Type:", 8, 184, 37, 17)
$cmbType = GUICtrlCreateCombo("CONCEPT", 96, 184, 105, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL,$CBS_UPPERCASE))
GUICtrlSetData(-1, "RECONCEPT|SAMPLE|RESAMPLE|ADDL SMPL|HEAT SEAL TOOL|BLISTR FRM TOOL")
$lblProdCode = GUICtrlCreateLabel("Product Code:", 8, 208, 78, 17)
$cmbPcode = GUICtrlCreateCombo("SAM-CONCPT", 96, 208, 105, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL,$CBS_UPPERCASE))
GUICtrlSetData(-1, "SAM-SAMPL|SAM-ADDL|MAH-FAC|MAH-FAM|BFT-VAC|BFT-PRESS")
$lblPO = GUICtrlCreateLabel("PO Number:", 216, 17, 68, 17)
$txtPO = GUICtrlCreateInput("N/C", 304, 17, 105, 21, BitOR($ES_UPPERCASE,$ES_AUTOHSCROLL))
$lblPOamt = GUICtrlCreateLabel("PO Amount:", 216, 41, 67, 17)
$txtPOamt = GUICtrlCreateInput("0", 304, 41, 105, 21, BitOR($ES_UPPERCASE,$ES_AUTOHSCROLL))
$lblPOdiscount = GUICtrlCreateLabel("PO Discount:", 216, 64, 73, 17)
$txtPOdiscount = GUICtrlCreateInput("", 304, 64, 105, 21, BitOR($ES_UPPERCASE,$ES_AUTOHSCROLL))
$lblPE = GUICtrlCreateLabel("Project Enj:", 216, 89, 64, 17)
$txtPE = GUICtrlCreateInput("", 304, 89, 105, 21, BitOR($ES_UPPERCASE,$ES_AUTOHSCROLL))
GUICtrlSetLimit(-1, 2)
$lblPM = GUICtrlCreateLabel("Project Mngr:", 216, 113, 73, 17)
$txtPM = GUICtrlCreateInput("", 304, 113, 105, 21, BitOR($ES_UPPERCASE,$ES_AUTOHSCROLL))
GUICtrlSetLimit(-1, 2)
$lblCharge = GUICtrlCreateLabel("Charge:", 216, 137, 47, 17)
$txtCharge = GUICtrlCreateInput("", 304, 137, 105, 21, BitOR($ES_UPPERCASE,$ES_AUTOHSCROLL))
$lblQty = GUICtrlCreateLabel("Quantity:", 216, 160, 52, 17)
$txtQty = GUICtrlCreateInput("1.00", 304, 160, 105, 21, BitOR($ES_UPPERCASE,$ES_AUTOHSCROLL))
$lblMaterial = GUICtrlCreateLabel("Material:", 216, 184, 50, 17)
$txtMaterial = GUICtrlCreateInput("", 304, 184, 105, 21, BitOR($ES_UPPERCASE,$ES_AUTOHSCROLL))
$lblGauge = GUICtrlCreateLabel("Gauge:", 216, 208, 45, 17)
$txtGauge = GUICtrlCreateInput("0.0", 304, 208, 105, 21, BitOR($ES_UPPERCASE,$ES_AUTOHSCROLL))
GUICtrlCreateGroup("", -99, -99, 1, 1)
$lblExNotes = GUICtrlCreateLabel("Extra Notes:", 8, 248, 68, 17)
$edtExNotes = GUICtrlCreateEdit("", 80, 248, 241, 57, BitOR($ES_UPPERCASE,$ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_WANTRETURN,$WS_HSCROLL,$WS_VSCROLL))
GUICtrlSetData(-1, "")
$btnContinue = GUICtrlCreateButton("Continue", 336, 248, 75, 25)
$btnExit = GUICtrlCreateButton("Exit", 336, 280, 75, 25)
$mnuFile = GUICtrlCreateMenu("&File")
$mnuNew = GUICtrlCreateMenuItem("&New" & @TAB & "Ctrl-Alt-N", $mnuFile)
$mnuOpen = GUICtrlCreateMenuItem("&Open" & @TAB & "Ctrl-Alt-O", $mnuFile)
$mnuSave = GUICtrlCreateMenuItem("&Save" & @TAB & "Ctrl-Alt-S", $mnuFile)
$mnuSep1 = GUICtrlCreateMenuItem("", $mnuFile)
$mnuExit = GUICtrlCreateMenuItem("E&xit" & @TAB & "Alt-F4", $mnuFile)
$mnuEdit = GUICtrlCreateMenu("&Edit")
$mnuCopy = GUICtrlCreateMenuItem("&Copy" & @TAB & "Ctrl-C", $mnuEdit)
$mnuPaste = GUICtrlCreateMenuItem("&Paste" & @TAB & "Ctrl-V", $mnuEdit)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

; ********** Variables that are needed to start **********
Global $displayed = 0
Global $readonly = 0
; ********** End variables that are needed to start **********

While 1
 $nMsg = GUIGetMsg()
 
 Switch $nMsg
  Case $GUI_EVENT_CLOSE
   panic()
   
  Case $btnExit
   panic()
   
  Case Not $txtInum
   If StringLen(GUICtrlRead($txtInum)) > 0 And $displayed <= 2 Then
    If StringInStr(GUICtrlRead($txtInum), "SAMPLE") Then
     GUICtrlSetData($cmbType, "SAMPLE")
     GUICtrlSetData($cmbPcode, "SAM-SAMPL")
     $displayed += 1
    ElseIf StringInStr(GUICtrlRead($txtInum), "ADDSAM") Then
     GUICtrlSetData($cmbType, "ADDL SAMPL")
     GUICtrlSetData($cmbPcode, "SAM-ADDL")
     $displayed += 1
    ElseIf StringInStr(GUICtrlRead($txtInum), "CONCEPT") Then
     GUICtrlSetData($cmbType, "CONCEPT")
     GUICtrlSetData($cmbPcode, "SAM-CONCPT")
     $displayed += 1
    ElseIf StringInStr(GUICtrlRead($txtInum), "H") Then
     GUICtrlSetData($cmbType, "HEAT SEAL TOOL")
     GUICtrlSetData($cmbPcode, "MAH-FAC")
     $displayed += 1
    ElseIf StringInStr(GUICtrlRead($txtInum), "FORMTOOL") Then
     GUICtrlSetData($cmbType, "BLISTER FORM TOOL")
     GUICtrlSetData($cmbPcode, "BFT-VAC")
     $displayed += 1
    EndIf
   ElseIf StringLen(GUICtrlRead($txtInum)) = 0 And $displayed <= 3 Then
    $displayed = 0
   EndIf
   
  Case $mnuExit
   panic()
   
  Case $mnuNew
   new()
   
  Case $mnuSave   
   save()
   
  Case $mnuOpen
   open()
   
  Case $mnuCopy
   Send("^c")
   
  Case $mnuPaste
   Send("^v")
   
  Case $btnContinue
   GUISetState(@SW_HIDE)
   
   ;BlockInput(1)
   
   #include <test-include.au3>
   
   clear_all()
   
   ;BlockInput(0)
   
   GUISetState(@SW_SHOW)
 EndSwitch
WEnd

Share this post


Link to post
Share on other sites



You post way too much code for such a little script question. Just enable/disable the ESC hot based on if you are currently running or not:

Global $RunFlag = False, $i = 0, $Time

HotKeySet("{PAUSE}", "_StartStop")

While 1
    If $RunFlag Then
        If TimerDiff($Time) > 1000 Then
            $i += 1
            ToolTip("$i = " & $i)
            $Time = TimerInit()
        EndIf
    EndIf
    Sleep(20)
WEnd

Func _StartStop()
    $RunFlag = Not $RunFlag
    If $RunFlag Then
        $Time = TimerInit()
        HotKeySet("{ESC}", "panic")
    Else
        HotKeySet("{ESC}")
    EndIf
EndFunc

Func panic()
    Exit
EndFunc   ;==>panic

The ToolTip increments just to show it's running. You can start/stop it with PAUSE. ESC will only exit the script if count is running.

:)


Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law

Share this post


Link to post
Share on other sites

Thanks for the code, it's not working within disable input though... because I want all input except Esc to be disabled. It appears as though this just assigns ESC depending on if it is running or not, which is kind-of what I needed, but what I really nead is to disable all keys except escape. Is there a way to throw an exception for disable input?

Share this post


Link to post
Share on other sites

Thanks for the code, it's not working within disable input though... because I want all input except Esc to be disabled. It appears as though this just assigns ESC depending on if it is running or not, which is kind-of what I needed, but what I really nead is to disable all keys except escape. Is there a way to throw an exception for disable input?

Not that I know of, IsPressed("1B") for ESC doesn't work after BlockInput(1):

#include <misc.au3>

BlockInput(1)
ConsoleWrite("Debug: inputs blocked" & @LF)

$Timer = TimerInit()
While TimerDiff($Timer) < 30000 ; 30 seconds to test
    Sleep(50)
    If _IsPressed("1B") Then 
        ConsoleWrite("Debug: ESC was pressed" & @LF)
        ExitLoop
    EndIf
WEnd

BlockInput(0)
ConsoleWrite("Debug: inputs unblocked" & @LF)

:)


Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law

Share this post


Link to post
Share on other sites

Not that I know of, IsPressed("1B") for ESC doesn't work after BlockInput(1):

#include <misc.au3>

BlockInput(1)
ConsoleWrite("Debug: inputs blocked" & @LF)

$Timer = TimerInit()
While TimerDiff($Timer) < 30000 ; 30 seconds to test
    Sleep(50)
    If _IsPressed("1B") Then 
        ConsoleWrite("Debug: ESC was pressed" & @LF)
        ExitLoop
    EndIf
WEnd

BlockInput(0)
ConsoleWrite("Debug: inputs unblocked" & @LF)

:)

Hehe, that makes me feel all warm inside :P Thanks ;)

P.S. That's why I posted all of my code, though I suppose I could have shortened the GUI and stuff, but...

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