Inputbox

  • ich würde das so machen:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    GUICreate('')
    $input = GUICtrlCreateInput("Suchkriterien eingeben ...",10,10,300,20)
    $button = GUICtrlCreateButton("OK",135,40,40,20)
    GUICtrlSetState($button,$GUI_FOCUS)
    GUISetState()
    GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND")
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd
    Func MY_WM_COMMAND($hWnd, $msg, $wParam, $lParam)
    $nNotifyCode = BitShift($wParam, 16)
    $nID = BitAND($wParam, 0xFFFF)
    Switch $nNotifyCode
    Case 512 ; verläßt Focus

    [/autoit] [autoit][/autoit] [autoit]

    Case 256 ; erhält Focus
    GUICtrlSetData($input,"")
    Case 1024 ; Edit in Focus

    [/autoit] [autoit][/autoit] [autoit]

    EndSwitch
    EndFunc ;==>MY_WM_COMMAND

    [/autoit]

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    über mich...

    ich habe meine Erfahrungen hauptsächlich gesammelt in (grobe Übersicht):

    - RibbonBar Automation
    - MySQL Nutzung
    - GUIs in vielerlei Ausprägung
    - Nutzung von Powershell / Batch in AutoIt
    - Windows Automatisierung

    außerhalb von AutoIt:

    - Sprachen: PS, Batch, php, html(5), javascript, (perl eingeschränkt), vbs
    - Powershell (AD, WPF inkl. Multi-Threading, ...)
    - Deployment-Automatisierung ohne SCCM
    - Office-Nutzung mit COM-Object (AutoIt, PowerShell)
    - ActiveDirectory und alles was damit zusammenhängt
    - Hyper-V Clustering (Converged / Hyper Converged)
    - Serverhardware (Konfiguration, Aufbau, Architektur, Betrieb)

    Lieblingsthema:

    günstige Automatisierung von Vorgängen, für die andere Firmen viel Geld nehmen

    more to come ...

    • Offizieller Beitrag

    Eine etwas erweiterte Version:

    Spoiler anzeigen
    [autoit]


    #include <EditConstants.au3>
    #include <ScrollBarConstants.au3>
    #include <GuiEdit.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $iHit = 0
    Global $sFile = RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\AutoIt', 'InstallDir') & '\include\changelog.txt'

    [/autoit] [autoit][/autoit] [autoit]

    $hGui = GUICreate('Text suchen', 720, 480)

    [/autoit] [autoit][/autoit] [autoit]

    $hEdit = GUICtrlCreateEdit(FileRead($sFile), 10, 10, 700, 440, BitOR($GUI_SS_DEFAULT_EDIT, $ES_READONLY))
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    ControlFocus($hGui, '', $hEdit)
    $hInput = GUICtrlCreateInput('Bitte Suchbegriff eingeben!', 10, 455, 638, 20)
    $hSearch = GUICtrlCreateButton('Suchen', 650, 454, 60, 22)
    GUISetState()
    GUIRegisterMsg($WM_COMMAND, 'MY_WM_COMMAND')

    [/autoit] [autoit][/autoit] [autoit]

    While True
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $hSearch
    $sText = GUICtrlRead($hEdit)
    $sSearch = GUICtrlRead($hInput)
    $iHit = StringInStr($sText, $sSearch, 0, 1, $iHit + 1)
    If $iHit > 0 Then
    ControlFocus($hGui, '', $hEdit)
    _GUICtrlEdit_SetSel($hEdit, $iHit - 1, $iHit - 1 + StringLen($sSearch))
    _GUICtrlEdit_Scroll($hEdit, $SB_SCROLLCARET)
    GUICtrlSetData($hSearch, 'Weiter...')
    Else
    Beep(400, 100)
    GUICtrlSetData($hSearch, 'Suchen')
    EndIf
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func MY_WM_COMMAND($hWnd, $msg, $wParam, $lParam)
    Local $nNotifyCode = BitShift($wParam, 16)
    Local $nID = BitAND($wParam, 0xFFFF)
    If $nID = $hInput And $nNotifyCode = 256 Then
    GUICtrlSetData($hSearch, 'Suchen')
    GUICtrlSetData($hInput, '')
    $iHit = 0
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc ;==>MY_WM_COMMAND

    [/autoit]
  • Hi, das lässt sich noch mehr erweitern ;)

    Spoiler anzeigen
    [autoit]

    #include <EditConstants.au3>
    #include <ScrollBarConstants.au3>
    #include <GuiEdit.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $iHit = 0, $_EMPTY_TEXT='Bitte Suchbegriff eingeben!', $_OLD_TEXT=""
    Global $sFile = RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\AutoIt', 'InstallDir') & '\include\changelog.txt'

    [/autoit] [autoit][/autoit] [autoit]

    $hGui = GUICreate('Text suchen', 720, 480)

    [/autoit] [autoit][/autoit] [autoit]

    $hEdit = GUICtrlCreateEdit(FileRead($sFile), 10, 10, 700, 440, BitOR($GUI_SS_DEFAULT_EDIT, $ES_READONLY))
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    ControlFocus($hGui, '', $hEdit)
    $hInput = GUICtrlCreateInput($_EMPTY_TEXT, 10, 455, 638, 20)
    $hSearch = GUICtrlCreateButton('Suchen', 650, 454, 60, 22)
    GUISetState()
    GUIRegisterMsg($WM_COMMAND, 'MY_WM_COMMAND')

    [/autoit] [autoit][/autoit] [autoit]

    While True
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $hSearch
    $sText = GUICtrlRead($hEdit)
    $sSearch = GUICtrlRead($hInput)
    $iHit = StringInStr($sText, $sSearch, 0, 1, $iHit + 1)
    If $iHit > 0 Then
    ControlFocus($hGui, '', $hEdit)
    _GUICtrlEdit_SetSel($hEdit, $iHit - 1, $iHit - 1 + StringLen($sSearch))
    _GUICtrlEdit_Scroll($hEdit, $SB_SCROLLCARET)

    GUICtrlSetData($hSearch, 'Weiter...')
    Else
    Beep(400, 100)
    GUICtrlSetData($hSearch, 'Suchen')
    EndIf
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func MY_WM_COMMAND($hWnd, $msg, $wParam, $lParam)
    Local $nNotifyCode = BitShift($wParam, 16)
    Local $nID = BitAND($wParam, 0xFFFF)
    If $nID = $hInput Then
    Switch $nNotifyCode
    Case 256
    If GUICtrlRead($nID) = $_EMPTY_TEXT Then
    GUICtrlSetData($hInput, '')
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Case 512
    If GUICtrlRead($nID) = "" Then
    GUICtrlSetData($hSearch, 'Suchen')
    GUICtrlSetData($hInput, $_EMPTY_TEXT)
    $iHit = 0
    EndIf

    Case 1024
    Local $txt = GUICtrlRead($nID)
    If $_OLD_TEXT <> $txt Then
    GUICtrlSetData($hSearch, 'Suchen')
    $iHit = 0
    $_OLD_TEXT = $txt
    EndIf
    EndSwitch
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc ;==>MY_WM_COMMAND

    [/autoit]