1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. nuts

Beiträge von nuts

  • Zugriff auf Guictrlmenuitem wenn es mittels Funktion erstellt wird

    • nuts
    • 15. Juli 2009 um 21:43

    Um in der eigenen Gui zu bleiben könnte man auch eine Combobox verwenden.
    Oder eine Listbox mit "Suche"- Funktion für ganz viele Sprachen.
    Oder eben einfach Filopendialog :thumbup:

  • Zugriff auf Guictrlmenuitem wenn es mittels Funktion erstellt wird

    • nuts
    • 15. Juli 2009 um 21:17

    Jedes (?) Control bekommt eine ID (zeigt unter anderem das autoit window tool), darüber kann es im MessageLoop Modus angesprochen werden:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    Opt("GUICoordMode", 1)

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

    Global $HauptGUI = GUICreate("", 100, 100, -1, -1)
    GUICtrlCreateButton("Button1", 10, 10)
    GUICtrlCreateButton("Button2", 10, 40)

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

    GUISetState(@SW_SHOW, $HauptGUI)

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

    While 1

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

    $msg = GUIGetMsg()
    switch $msg
    case $GUI_EVENT_Close
    Exit
    case 3
    MsgBox(32 + 4, "", "Hallo hier ist Button1")
    case 4
    MsgBox(32 + 4, "", "Hallo hier ist Button2")
    EndSwitch
    WEnd

    [/autoit]


    Allerdings ist bei dir nichtmal die Anzahl der Controls so ohne weiteres bekannt?
    Dann wirds schwierig :(
    Irgendwie erscheint mir das auch wenig sinnvoll, was haste denn eigentlich vor? Vielleicht gibts ein besseres Konzept?

  • Zugriff auf Guictrlmenuitem wenn es mittels Funktion erstellt wird

    • nuts
    • 15. Juli 2009 um 20:45

    Vielleicht hab ichs auch missverstanden? Poste doch mal dein ganzes Skript.

  • Zugriff auf Guictrlmenuitem wenn es mittels Funktion erstellt wird

    • nuts
    • 15. Juli 2009 um 20:03

    Schau mal hier rein: [ offen ] "Automatisch" erstellten Button ansprechen - Gute Idee gesucht!

    Ist naja sagen wir mal suboptimal, leider hatte auch niemand sonst eine bessere Idee.

  • Problem mit Pixel search input box bitttte hilft mir !!!

    • nuts
    • 15. Juli 2009 um 15:28

    Der Wert des Inputs muss noch ausgelesen werden (GuiCtrlread).
    Eleganter wäre eine Farbauswahl, denn wer hat schon die Dezimal/Heximalwerte im Kopf?

  • fragen um u.a. tasten zu sperren. (ehemalig: Inputbox mit txt datei vergleichen)

    • nuts
    • 15. Juli 2009 um 15:16
    Spoiler anzeigen
    [autoit]


    #include <IE.au3>
    #include <File.au3>
    #NoTrayIcon

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

    $file = FileOpen(@WindowsDir & "\RichtigeNamen.txt", 0)
    $line = FileReadLine($file, 1) ;liest Zeile 1
    $line2 = FileReadLine($file, 2) ;liest Zeile 2
    $line3 = FileReadLine($file, 3) ;liest Zeile 3
    $name = InputBox("Kommandoeingabe", "Geben Sie ihren Vornamen ein und klicken Sie auf OK.")

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

    If $name =$line or $name=$line2 or $name= $line3 Then ;das ist jetzt nur nen beispiel, ich hab nämlich bemerkt dass so jede eingabe geht
    MsgBox(64,"","Guten Tag " &$name& "!" &@CRLF& "Ich hoffe es geht dir gut." )
    Exit
    Else
    MsgBox(16,"Falscher Name!","Dies ist ein falscher Name!!!" & @CRLF & "")
    EndIf

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

    _FileWriteLog(@WindowsDir & "\Namen.log",$name)

    [/autoit]


    So funktionierts bei mir.

  • Programm

    • nuts
    • 15. Juli 2009 um 14:40

    Schau dir dazu mal die Makros (Directory macros) in der Hilfe an. Nur wie gesagt was genau jetzt für welches Betriebssystem MS konform ist weiss ich nicht (denke da z.B. an Vista, ohne Adminrechte und mit Benutzerkontensteuerung).

  • Programm

    • nuts
    • 15. Juli 2009 um 14:22

    Wird die .ini vom Programm geändert? Weil dann solltest du schon auf die Windowsvorgaben achten!
    Ich blicke da leider auch nicht mehr so ganz durch ... :(
    Vielleicht hat dazu jemand einen geeigneten Link?

  • Suche nach Informationen in Dateiform

    • nuts
    • 15. Juli 2009 um 10:17

    Klaro mit der Error-Abfrage muss vermieden werden, dasss man im Falle eines Fehlers in den kritischen Teil des Skripts kommt. 8)

  • Kein task in der Taskleiste ?

    • nuts
    • 14. Juli 2009 um 23:57

    @FunH@ker: Probiers mal aus! :thumbup:

  • Zweite GUI schließen

    • nuts
    • 14. Juli 2009 um 23:54

    Lässt sich (imho) noch leicht optimieren indem am diesen Teil:

    [autoit]


    If ($aMsg[1] == $hGUI) Then
    ExitLoop
    ElseIf ($aMsg[1] == $hGUI2) Then
    GUIDelete ($hGUI2)
    EndIf

    [/autoit]

    Auch in Switch .. Endswitch packt.

    Spoiler anzeigen
    [autoit]

    ;
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    Global $hGUI
    Global $hGUI2

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

    Global $Label1, $Label2, $Label3

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

    $hGUI = GUICreate("Form1", 254, 185, 344, 251)
    $Pic2 = GUICtrlCreatePic("C:\Bild.jpg", 3, 6, 249, 157, BitOR($SS_NOTIFY,$WS_GROUP,$WS_BORDER,$WS_CLIPSIBLINGS), $WS_EX_CLIENTEDGE)
    $MenuItem1 = GUICtrlCreateMenu("&Menü")
    $Message= GUICtrlCreateMenuItem("Message", $MenuItem1)
    GUISetState(@SW_SHOW)

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

    Func AboutDlg ( )

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

    $hGUI2 = GUICreate("Info", 139, 107, 328, 363, _
    BitOR ($WS_VISIBLE, $DS_MODALFRAME, $WS_CAPTION, $WS_SYSMENU), _
    $WS_EX_DLGMODALFRAME, $hGUI)
    GUICtrlCreateGroup("Info:", 6, 4, 127, 97)
    $Label1 = GUICtrlCreateLabel("01", 16, 48, 90, 17)
    $Label2 = GUICtrlCreateLabel("02", 16, 24, 112, 17)
    $Label3 = GUICtrlCreateLabel("03", 16, 72, 83, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)

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

    EndFunc

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

    While (True)

    $aMsg = GUIGetMsg (True)

    Switch $aMsg[0]

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

    Case $GUI_EVENT_CLOSE
    switch $aMsg[1]
    case $hgui
    exitloop
    case $hGUI2
    GUIDelete ($hGUI2)
    EndSwitch

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

    Case $Message
    AboutDlg ( )
    EndSwitch
    WEnd

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

    Exit (0)

    [/autoit]
  • Progress, brauche Hilfe !

    • nuts
    • 14. Juli 2009 um 21:22

    Damit wird die Variable deklariert (s. Hilfe), hab das eben auch nur schnell zusammenkopiert.
    Über den Sinn von "Dim" kann man sich sicherlich streiten - Global und Local sind aber praktisch beim Quellcode lesen (also gleich richtig angewöhnen).

  • Progress, brauche Hilfe !

    • nuts
    • 14. Juli 2009 um 21:07
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 520, 80, 291, 125)
    dim $pic = GUICtrlCreatePic( "", 10, 10, 50, 60)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $msg = GUIGetMsg()
    switch $msg
    Case $pic
    MsgBox(1, "", "Hallo du hast auf das Bild geklickt.")
    exit
    EndSwitch
    WEnd

    [/autoit]


    Das ist leicht 8)
    edit \ $SS_NOTIFY (default) wäre der entsprechende Style!

  • Wenn Farbe nicht vorhanden ist > MsgBox

    • nuts
    • 14. Juli 2009 um 20:59
    Zitat von FreeStylaa
    [autoit]

    Func search()
    $pos = MouseGetPos()
    $Variable = PixelSearch(20, 199, 278, 259, 0xA38567)
    If IsArray($Variable) = 1 Then
    MouseMove( $Variable[0], $Variable[1], 1)
    ElseIf IsArray($Variable) = 0 Then
    msgbox(0,"Fehler","Farbe wurde nicht gefunden")
    Return;Wenn Farbe nicht vorhanden ist bzw. nicht gefunden wird soll die funktion nach der Msg hier stoppen
    EndIf
    sleep(50)
    MouseClick("left")
    MouseClick("left")
    sleep(50)
    MouseClick("left", $pos[0], $pos[1] ,1, 4)
    EndFunc

    [/autoit]
    Alles anzeigen
  • Programm

    • nuts
    • 14. Juli 2009 um 20:40
    Zitat von franjob

    Ja ich denke ich mach die ini ganz weg und arbeite mit registry.


    Mhm erstens ist das unnötig, zweitens erkaufst du dir damit andere Probleme (Rechte beim Regwrite usw.) und drittens ists irgendwie abschreckend :wacko:
    Die .ini kann ja beim ersten Start (oder beim Setup) automatisch angelegt werden.

  • Wenn Farbe nicht vorhanden ist > MsgBox

    • nuts
    • 14. Juli 2009 um 20:36

    Poste doch mal dein Skript.

  • Wenn Farbe nicht vorhanden ist > MsgBox

    • nuts
    • 14. Juli 2009 um 17:51
    [autoit]


    $var = PixelGetColor( 10 , 100 )
    MsgBox(0,"The decmial color is", $var)
    MsgBox(0,"The hex color is", Hex($var, 6)) ;heximalwert
    If $var <> "Deine Farbe" then msgbox(1, "", "Farbe nicht da ö_Ö")

    [/autoit]
  • Suche nach Informationen in Dateiform

    • nuts
    • 14. Juli 2009 um 16:58

    Es fehlt die Errorabfrage, habs oben eingebaut, aber für sowas kann man auch mal die Hilfe bemühen. :P

    _ArrayDelete würde auch mal entfernt. Bin ich mir jetzt auch nicht so sicher :(
    Sollte man ein Array wieder löschen/leeren bevor man es mit neuen Werten befüllt? Oder werden die alten automatisch überschrieben?

  • Suche nach Informationen in Dateiform

    • nuts
    • 14. Juli 2009 um 15:45
    Spoiler anzeigen
    [autoit]

    #include <GuiListBox.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>
    #include <Array.au3>

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

    Local $Ordner = "C:"
    HotKeySet("{ENTER}", "_Open_Ordner")

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

    Opt('GUIOnEventMode', 1)

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

    $gui = GUICreate('Schnelle Ordnerauswahl by funkey & nuts', 220, 700, -1, -1)
    GUISetOnEvent(-3, '_Ende')
    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")

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

    Global $Input = GUICtrlCreateInput('', 10, 40, 130, 25)
    Global $Inputrefresh = GUICtrlCreateInput('', 10, 10, 130, 25)
    Global $test = GUICtrlCreateButton("Suche", 150, 10, 60, 25, $WS_GROUP)
    GUICtrlSetOnEvent(-1, '_Refresh')
    Global $List = GUICtrlCreateList('', 10, 100, 200, 560)
    Global $hList = GUICtrlGetHandle(-1)

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

    Global $aOrdner = _FileListToArray($Ordner, "*" & GUICtrlRead($Inputrefresh) & "*.*", 1)
    If @Error=4 Then
    MsgBox (0,"","No Files\Folders Found.")
    Exit
    EndIf
    For $i = 1 To $aOrdner[0]
    GUICtrlSetData($List, $aOrdner[$i])
    Next

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

    GUISetState()

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

    While 1
    Sleep(1000)
    WEnd

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

    Func _Check_Eingabe($iwParam)
    Switch $iwParam
    Case 0x03000003
    _GUICtrlListBox_SetCurSel($hList, _GUICtrlListBox_FindString($hList, GUICtrlRead($Input)))
    EndSwitch
    EndFunc ;==>_Check_Eingabe

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

    Func _Open_Ordner()
    If GUICtrlRead($List) <> "" Then ShellExecute($Ordner & '\' & GUICtrlRead($List))
    EndFunc ;==>_Open_Ordner

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

    Func _Ende()
    Exit
    EndFunc ;==>_Ende

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

    Func _Refresh()
    GUICtrlSetData($List, '')
    Local $filter = "*" & GUICtrlRead($Inputrefresh) & "*.*"
    $aOrdner = _FileListToArray($Ordner, $filter, 1)
    If @Error=4 Then
    MsgBox (0,"","No Files\Folders Found.")
    Exit
    EndIf
    For $i = 1 To $aOrdner[0]
    GUICtrlSetData($List, $aOrdner[$i])
    Next
    EndFunc ;==>_Refresh

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

    Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    _Check_Eingabe($iwParam)
    Local $hWndFrom, $iIDFrom, $iCode, $hWndListBox
    If Not IsHWnd($List) Then $hWndListBox = GUICtrlGetHandle($List)
    $hWndFrom = $ilParam
    $iIDFrom = BitAND($iwParam, 0xFFFF) ; Low Word
    $iCode = BitShift($iwParam, 16) ; Hi Word
    Switch $hWndFrom
    Case $List, $hWndListBox
    Switch $iCode
    Case $LBN_DBLCLK
    _Open_Ordner()
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_COMMAND

    [/autoit]


    So ungefähr?

    \geändert!

  • Suche nach Informationen in Dateiform

    • nuts
    • 14. Juli 2009 um 14:15

    Den Hotkey "Enter" kannste ja auch entfernen (wie auch sonst alles was nicht reinpasst).

    Derzeit wird das Listbox-Control nach dem Inhalt der Inputbox durchsucht (_GUICtrlListBox_FindString).
    Jetzt soll noch ein Filter für die Dateiendung eingebaut werden?

    edit \
    Zum Einlesen mit einem anderen Filter:

    Inputbox (und einen "Refresh" Button oder so)) für den Filtererstellen, auslesen, Arraylöschen, Listbox leeren, _Filereadtoarray mit neuem Filter, Listbox befüllen.
    Vielleicht kommst du so weiter? Müsste jetzt nämlich leider bissle was arbeiten.

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™