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. autoBert

Beiträge von autoBert

  • Comboboxen mit Abhänigkeiten

    • autoBert
    • 6. Februar 2012 um 09:49

    Hallo Der_Eismann,

    die Sortierung muss nach _ArrayUnique (Zeile 139) und vor die Schleife in welcher du die Drucker der ComboBox zuweist,

    mfg autobert

  • Andy hat Geburtstag

    • autoBert
    • 5. Februar 2012 um 10:01

    Auch von mir noch nachträglich die besten Wünsche, besonders Gesundheit, Erfolg und Glück in allen Lebenslagen.

    autoBert

  • Per Button eine Andere Form öffnen

    • autoBert
    • 4. Februar 2012 um 01:21

    Hallo HerbiiProduktion,

    wenn du 2 GUI's verwenden willst solltest im GuiGetMsg-Modus den Extended-Parameter von GuiGetMsg benutzen. Kleines Beispiel:

    Spoiler anzeigen
    [autoit]

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

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

    Global $idGui1, $idGui2=-99, $idMsgBox, $idZurueck, $idbtnExit2
    _CreateGui2() ;entweder hier oder erst wenn benötigt ($idbtmToGui2 Klick)

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

    $idGui1 = GUICreate('GUI 1', 400, 280, 140, 150, BitOR($WS_MINIMIZEBOX, $WS_MAXIMIZEBOX, $WS_SIZEBOX))
    ;erzeugt eine GUI die zurückgebebene ID wird in der Variablen $idGui1 gespeichert
    ;die GUI hat BOXen für Mininmieren, Maximieren und ist in der Größe frei änderbar
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End')

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

    $idbtnToGui2 = GUICtrlCreateButton('&Aufruf GUI 2', 20, 20, 100, 21)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
    ;verankert den Button "Afruf Gui 2" links und oben und fixiert die Größe
    ;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand

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

    $idbtnICQ = GUICtrlCreateButton('&ICQ', 20, 50, 100, 21)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
    ;verankert den Button "ICQ" links und oben und fixiert die Größe
    ;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand

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

    $idbtnExit1 = GUICtrlCreateButton('be&enden', 20, 80, 100, 21)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
    ;verankert den Button "Afruf Gui 2" links und oben und fixiert die Größe
    ;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand

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

    GUISetState(@SW_SHOW, $idGui1)

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

    While 1
    $nMsg = GUIGetMsg(1) ;extended Modus wichtig!!
    Switch $nMsg[1] ;für welches Fenster ist die Message
    Case $idGui1 ;ab hier ist Gui 1 dran
    Switch $nMsg[0] ;welche Message wurde ausgelöst
    Case $idbtnToGui2
    GUISetState(@SW_Hide, $idGui1) ;Gui 1 verstecken, damit nur Gui2 sichtbar ist und bearbeitet werden kann
    ;GUISetState(@SW_DISABLE, $idGui1) ;oder Gui 1 disablen, damit nur Gui2 bearbeitet werden kann
    ;If $idGui2 = -99 Then _CreateGui2() ;nur wenn nicht am Anfang bereits erzeugt nötig, dann auf Vorbelegung der Variable in Global achten)
    GUISetState(@SW_SHOW, $idGui2) ;Gui 2 anzeigen
    Case $idbtnICQ
    MsgBox(0,"","Jetzt würde ICQ gestartet",0,$idGui1)
    ;Run("C:\Program Files\ICQ7.0\ICQ.exe")
    Case $idbtnExit1, $GUI_EVENT_CLOSE
    _end()
    EndSwitch
    Case $idGui2 ;ab hier ist Gui 2 dran
    Switch $nMsg[0] ;welche Message wurde ausgelöst
    Case $idMsgBox
    MsgBox(0, 'Test', 'Test', 0, $idGui2)
    Case $idZurueck, $GUI_EVENT_CLOSE
    GUISetState(@SW_Show, $idGui1) ;Gui 1 wieder anzeigen
    ;GUISetState(@SW_ENABLE, $idGui1) ;oder Gui 1 wieder zur Bearbeitung zulsassen
    GUISetState(@SW_HIDE, $idGui2) ;Gui 2 verstecken
    Case $idbtnExit2
    _end()
    EndSwitch
    EndSwitch
    WEnd

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

    Func _CreateGui2()
    $idGui2 = GUICreate('GUI 2', 500, 300, 200, 50, -1, -1, $idGui1) ;wichtig ist der letzte Parameter falls beide gleichzeitig sichtbar sein sollen
    ;erzeugt eine GUI als Child von Gui1, die zurückgebebene ID wird in der Variablen $idGui2 gespeichert

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

    $idMsgBox = GUICtrlCreateButton('&MsgBox', 20, 20, 100, 21)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
    ;verankert den Button "MsgBox" links und oben und fixiert die Größe
    ;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand

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

    $idZurueck = GUICtrlCreateButton('&Zurück zu GUI 1', 20, 50, 100, 21)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
    ;verankert den Button "zurück" links und oben und fixiert die Größe
    ;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand

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

    $idbtnExit2 = GUICtrlCreateButton('be&enden', 20, 80, 100, 21)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
    ;verankert den Button "beenden" links und oben und fixiert die Größe
    ;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand
    EndFunc ;==>_CreateGui2

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

    Func _end()
    GUIDelete($idGui2)
    GUIDelete($idGui1)
    Exit
    EndFunc ;==>_end

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

    mfg autoBert

  • Beep hat genauere Sleepzeiten als Sleep ?

    • autoBert
    • 3. Februar 2012 um 17:20

    Hallo Marsi:

    der beep ist bei mir total unzuverlässig. Ich habe mit folgendem Skript getestet:

    [autoit]

    for $i = 1 to 100
    $tStart =TimerInit()
    Beep(32767,$i)
    $tDiff = TimerDiff($tStart)
    ConsoleWriteError($i & @TAB & $tDiff & @crlf)
    Next

    [/autoit]

    hier das Egebnis:

    Spoiler anzeigen
    Code
    1	12.2149602812648
    2	15.4592273599019
    3	15.6153924590975
    4	15.6307575404137
    5	20.5713295963593
    6	10.4937918087355
    7	20.5738438823929
    8	10.5007759366065
    9	15.6740591332139
    10	16.0674052149086
    11	15.9414115481158
    12	14.7711510820509
    13	17.7564466992313
    14	17.734376855159
    15	11.5746554380515
    16	30.6924483418982
    17	31.1919531672321
    18	35.362036236449
    19	27.024105018934
    20	31.1986579299883
    21	31.6448040183878
    22	30.7203848533822
    23	31.2377690460659
    24	31.1201563327183
    25	35.3220870250269
    26	27.7510130477477
    27	30.7650832717566
    28	31.8492992824507
    29	30.7899467669774
    30	33.1360550014038
    31	30.2893244811841
    32	45.2733517807431
    33	46.822431342531
    34	50.6153715067138
    35	43.0543546735688
    36	47.1911932941198
    37	46.3944439865961
    38	46.8146091193154
    39	46.8389138843065
    40	46.808463086789
    41	50.8681969356441
    42	42.9725006949207
    43	47.2864567982802
    44	46.3318662008719
    45	47.3928949070343
    46	46.3156630242112
    47	64.9906622210365
    48	59.6335567788644
    49	62.815804802007
    50	62.0444777199337
    51	64.7984590220265
    52	60.4923251418826
    53	62.0919697894565
    54	62.3400460114344
    55	62.4512333271407
    56	62.8521222669362
    57	62.2000840888996
    58	66.3615068395564
    59	59.145226558124
    60	61.7307506959683
    61	62.5632587381916
    62	62.2207571073977
    63	78.0730511838795
    64	78.087857534966
    65	78.0842257884731
    66	78.09847340933
    67	78.4652798051149
    68	78.094841662837
    69	77.7869813062833
    70	82.3249882317445
    71	73.5467775932416
    72	78.1062956325455
    73	78.1750194507961
    74	78.5499274349114
    75	78.5180798118197
    76	77.1461177328404
    77	77.9311337055408
    78	78.2549178736404
    79	93.5255737810252
    80	94.7248882190334
    81	92.6276943019294
    82	93.6836944360247
    83	97.9303235467078
    84	89.8603034743243
    85	93.2855991473777
    86	93.8063357214395
    87	93.5495991809015
    88	94.2357199029486
    89	93.2914658147893
    90	98.0820188040659
    91	89.7672748910825
    92	94.7444437770722
    93	92.4673387260113
    94	108.924737641237
    95	109.272267844098
    96	110.712115645983
    97	107.903099416267
    98	109.647455193328
    99	109.192090056138
    100	109.094591631059
    Alles anzeigen

    hast du den Ton gehört?

    mfg autoBert

  • Comboboxen mit Abhänigkeiten

    • autoBert
    • 3. Februar 2012 um 16:49

    Hallo Der_Eismann,

    um das Array zu sortieren fügst du einfach

    [autoit]

    _ArraySort($aPrinter)

    [/autoit]

    direkt vor dem Einfügen in die ComboBox hinzu. Da dein Textfile anscheinend etwas anders aufgebaut ist als meine Drucker.txt solltest du die Datei an deinen Lösungspost noch mit anhängen. Mit meiner Datei bekomme ich wenn ich überall "alle" anwähle keinen einzigen Drucker zur Auswahl angeboten,

    mfg autoBert

  • Comboboxen mit Abhänigkeiten

    • autoBert
    • 3. Februar 2012 um 11:26

    Hallo Der_Eismann,

    dies ist relatov einfach zu lösen

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include<Array.au3>
    #include<File.au3>

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

    Dim $aTmp[1]
    _FileReadToArray(@ScriptDir & "\Drucker.txt",$aTmp)
    Global $aDrucker[$aTmp[0]+1][4]

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

    For $i = 1 to $aTmp[0]
    $aSplit = StringSplit($aTmp[$i],"|")
    for $j = 1 to $aSplit[0]
    $aDrucker[$i][$j-1] = $aSplit[$j]
    Next
    Next
    $aDrucker[0][0] = $aTmp[0]

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

    $sYourChoice = "Bitte wählen"

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

    Global $sGeb, $sEtage

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

    $hGui = GUICreate("Druckerauswahl",240,120)
    $idCboGeb = GUICtrlCreateCombo("",5,5,230)
    _GetGeb()
    $idCboEtage = GUICtrlCreateCombo("",5,35,230)
    $idCboRaeume = GUICtrlCreateCombo("",5,65,230)
    GUISetState()

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

    While 1
    $iMsg = GUIGetMsg()
    Switch $iMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $idCboGeb
    $sGeb = GUICtrlRead($idCboGeb)
    if $sGeb <> $sYourChoice Then
    _GetEtage($sGeb)
    if $sGeb ="alle" Then
    GUICtrlSetData($idCboEtage,"alle","alle")
    _GetRaeume($sGeb,"alle")
    EndIf
    EndIf
    Case $idCboEtage
    $sEtage = GUICtrlRead($idCboEtage)
    if $sEtage <> $sYourChoice Then _GetRaeume($sGeb,$sEtage)
    EndSwitch
    WEnd

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

    Func _GetGeb()
    Local $aGeb[1]
    GUICtrlSetData($idCboGeb,"")
    GUICtrlSetData($idCboGeb,$sYourChoice,$sYourChoice)
    GUICtrlSetData($idCboGeb,"alle")
    for $i = 1 To $aDrucker[0][0]
    _ArrayAdd($aGeb,$aDrucker[$i][1])
    Next
    $aGeb = _ArrayUnique($aGeb)
    for $i =1 to $aGeb[0]
    if $aGeb[$i] <> "" Then GUICtrlSetData($idCboGeb,$aGeb[$i])
    Next
    EndFunc

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

    Func _GetEtage($sGeb)
    Local $aEtage[1]
    GUICtrlSetData($idCboEtage,"")
    GUICtrlSetData($idCboEtage,$sYourChoice,$sYourChoice)
    GUICtrlSetData($idCboEtage,"alle")
    for $i = 1 To $aDrucker[0][0]
    if $sGeb = $aDrucker[$i][1] Then
    _ArrayAdd($aEtage,$aDrucker[$i][2])
    EndIf
    Next
    $aEtage = _ArrayUnique($aEtage)
    for $i =1 to $aEtage[0]
    if $aEtage[$i] <> "" Then GUICtrlSetData($idCboEtage,$aEtage[$i])
    Next
    EndFunc

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

    Func _GetRaeume($sGeb,$sEtage)
    Local $aRaeume[1]
    GUICtrlSetData($idCboRaeume,"")
    GUICtrlSetData($idCboRaeume,$sYourChoice,$sYourChoice)
    for $i = 1 To $aDrucker[0][0]
    if (($sGeb = $aDrucker[$i][1]) or ($sGeb = "alle")) And (($sEtage = $aDrucker[$i][2]) or ($sEtage = "alle")) Then
    _ArrayAdd($aRaeume,$aDrucker[$i][3])
    EndIf
    Next
    $aRaeume = _ArrayUnique($aRaeume)
    for $i =1 to $aRaeume[0]
    if $aRaeume[$i] <> "" Then GUICtrlSetData($idCboRaeume,$aRaeume[$i])
    Next
    EndFunc

    [/autoit]

    das ganze habe ich mit folgenden Testdaten getestet: Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    mfg autoBert

    Dateien

    drucker.txt 244 Byte – 144 Downloads
  • Pixelgetcolor sehr langsam

    • autoBert
    • 2. Februar 2012 um 19:12

    Ich weis ja nicht was du für einen Computer hast auf meinem altertümlichen Notebok aus dem Jahre 2003 läuft das ganze in 63.4865604427378 ms durch,

    mfg autobert

  • Tabelle in ListView schreiben

    • autoBert
    • 2. Februar 2012 um 19:04

    Hallo syncware,

    du gehst dazu in einer Schleife

    [autoit]

    for ... next; beste Wahl in diesem Fall
    do ... until
    while ... wend

    [/autoit]

    durch eine Schleife mit

    [autoit]

    _StringBetween

    [/autoit]

    lässt du dir ein neues Array mit den Funden zurückgeben. Dieses trägst du dann mit

    [autoit]

    GuiCtrlCreateListviewItem

    [/autoit]

    in deine Listview.

    mfg autoBert

  • Alle 3 stelligen möglichkeiten aller Buchstaben generieren

    • autoBert
    • 2. Februar 2012 um 10:23
    Zitat von Buphx

    danke

    Schön, dann ist dein Problem ja gelöst. Schön wäre es auch wenn du das Thema auf gelöst setzt,

    mfg autoBert

  • senden Sie Dateinamen in der Mappe in der zufälligen Ordnung

    • autoBert
    • 2. Februar 2012 um 07:27

    Hallo Henaro,

    deine zufällige Wiedergabe aller Dateien kannst du s realisieren:

    Spoiler anzeigen
    [autoit]

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

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

    $sDir = @SystemDir & "\"
    $aFiles = _FileListToArray($sDir, '*', 1)
    _ArrayDelete($aFiles,0)
    Do
    $iFlag = Random(0,1,0)
    ;ConsoleWrite("line 1" & @LF) ; Line 1
    ;ConsoleWrite("line 2" & @LF) ; Line 2
    If $iFlag > 0.7 Then
    ;_ArrayDisplay($aFiles)
    $iRandom = Random(0, UBound($aFiles)-1,1)
    ;ConsoleWrite($iRandom & @TAB)
    ConsoleWrite($sDir & $aFiles[$iRandom]& @CRLF) ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    _ArrayDelete($aFiles,$iRandom)
    Sleep(1000)
    EndIf
    ;ConsoleWrite("line 5" & @LF) ; Line 5
    until UBound($aFiles) = 0

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

    mfg autoBert

  • Ein Problem mit Array. Ich kannst nicht lösen

    • autoBert
    • 1. Februar 2012 um 11:10
    Zitat von Protex

    Dein Problem liegt darin dass du dein ArrayIndex Falsch angibst deine angabe wird wie folgt aussahen_ArrayDelete($Player, $arIdx) wobei $arIdx nur einem Indexeintrag entspricht da du aber ein Mehrdimensionales Array hast musst du auch die Dimension angeben !

    Falsch! _ArrayDelete erwartet nur das Element und löscht dann diesen Eintrag in allen Dimensionen. Ausserdem tritt der Fehler nicht an der Stelle des Löschens (_arraydelete) sondern zuvor beim Vergleich (if $Player[$i][7] == 0) auf.

    MaZy: lass dir mal direkt davor mit _arrydisplay das Array $player anzeigen, dann sollte dir der Fehler förmlich in die AUgen springen. Er wird zwar sicherlich an einer anderen (nicht geposteten) Stelle verursacht aber dies kann ich ja nicht nachprüfen,

    mfg autoBert

  • Mehrere GUIs -> Bei einem Script geht es und bei einem anderen nicht...

    • autoBert
    • 29. Januar 2012 um 23:09

    Hallo Taliis.

    beim arbeiten mit mehreren Guis verwendet man im GuiGetMsg-Mdus idealerweise den Extended Modus von GuiGetMsg():

    Spoiler anzeigen
    [autoit]

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

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

    Global $idGui1, $idGui2=-99, $idMsgBox, $idZurueck, $idbtnExit2
    _CreateGui2() ;entweder hier oder erst wenn benötigt ($idbtmToGui2 Klick)

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

    $idGui1 = GUICreate('GUI 1', 400, 280, 140, 150, BitOR($WS_MINIMIZEBOX, $WS_MAXIMIZEBOX, $WS_SIZEBOX))
    ;erzeugt eine GUI die zurückgebebene ID wird in der Variablen $idGui1 gespeichert
    ;die GUI hat BOXen für Mininmieren, Maximieren und ist in der Größe frei änderbar
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End')

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

    $idbtnToGui2 = GUICtrlCreateButton('&Aufruf GUI 2', 20, 20, 100, 21)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
    ;verankert den Button "Afruf Gui 2" links und oben und fixiert die Größe
    ;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand

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

    $idbtnICQ = GUICtrlCreateButton('&ICQ', 20, 50, 100, 21)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
    ;verankert den Button "ICQ" links und oben und fixiert die Größe
    ;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand

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

    $idbtnExit1 = GUICtrlCreateButton('be&enden', 20, 80, 100, 21)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
    ;verankert den Button "Afruf Gui 2" links und oben und fixiert die Größe
    ;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand

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

    GUISetState(@SW_SHOW, $idGui1)

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

    While 1
    $nMsg = GUIGetMsg(1) ;extended Modus wichtig!!
    Switch $nMsg[1] ;für welches Fenster ist die Message
    Case $idGui1 ;ab hier ist Gui 1 dran
    Switch $nMsg[0] ;welche Message wurde ausgelöst
    Case $idbtnToGui2
    ;GUISetState(@SW_Hide, $idGui1) ;Gui 1 verstecken, damit nur Gui2 sichtbar ist und bearbeitet werden kann
    GUISetState(@SW_DISABLE, $idGui1) ;oder Gui 1 disablen, damit nur Gui2 bearbeitet werden kann
    ;If $idGui2 = -99 Then _CreateGui2() ;nur wenn nicht am Anfang bereits erzeugt nötig, dann auf Vorbelegung der Variable in Global achten)
    GUISetState(@SW_SHOW, $idGui2) ;Gui 2 anzeigen
    Case $idbtnICQ
    MsgBox(0,"","Jetzt würde ICQ gestartet",0,$idGui1)
    ;Run("C:\Program Files\ICQ7.0\ICQ.exe")
    Case $idbtnExit1, $GUI_EVENT_CLOSE
    _end()
    EndSwitch
    Case $idGui2 ;ab hier ist Gui 2 dran
    Switch $nMsg[0] ;welche Message wurde ausgelöst
    Case $idMsgBox
    MsgBox(0, 'Test', 'Test', 0, $idGui2)
    Case $idZurueck, $GUI_EVENT_CLOSE
    ;GUISetState(@SW_Show, $idGui1) ;Gui 1 wieder anzeigen
    GUISetState(@SW_ENABLE, $idGui1) ;oder Gui 1 wieder zur Bearbeitung zulsassen
    GUISetState(@SW_HIDE, $idGui2) ;Gui 2 verstecken
    Case $idbtnExit2
    _end()
    EndSwitch
    EndSwitch
    WEnd

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

    Func _CreateGui2()
    $idGui2 = GUICreate('GUI 2', 500, 300, 200, 50, -1, -1, $idGui1) ;wichtig ist der letzte Parameter falls beide gleichzeitig sichtbar sein sollen
    ;erzeugt eine GUI als Child von Gui1, die zurückgebebene ID wird in der Variablen $idGui2 gespeichert

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

    $idMsgBox = GUICtrlCreateButton('&MsgBox', 20, 20, 100, 21)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
    ;verankert den Button "MsgBox" links und oben und fixiert die Größe
    ;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand

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

    $idZurueck = GUICtrlCreateButton('&Zurück zu GUI 1', 20, 50, 100, 21)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
    ;verankert den Button "zurück" links und oben und fixiert die Größe
    ;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand

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

    $idbtnExit2 = GUICtrlCreateButton('be&enden', 20, 80, 100, 21)
    GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
    ;verankert den Button "beenden" links und oben und fixiert die Größe
    ;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand
    EndFunc ;==>_CreateGui2

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

    Func _end()
    GUIDelete($idGui2)
    GUIDelete($idGui1)
    Exit
    EndFunc ;==>_end

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

    wichtig ist natürlich auch alle Variablen müssen eindeutig sein, nicht dass du dir beim Erstellen einer weiteren Gui die Variablen einer vorhergehenden überschreibst,

    mfg autoBert

  • AutoIT .exe Datei debuggen

    • autoBert
    • 27. Januar 2012 um 20:25
    Zitat von Albeck

    Wer sich der Sache annehmen möchte, dem würde ich das Script und eine genauere Beschreibung des Umstandes unter dem der Fehler auftritt zukommen lassen. Also bitte per PN melden bei Interesse.

    Tut mir leid für die Geheimniskrämerei aber ich unterliege dabei auch gewissen Unternehmensauflagen.


    Dann wäre dies ja etwas für die Jobbörse mit Gegenleistung, da der Betreffende dann sicher auch eine schriftliche Verschwiegenheitserklärung abgeben soll.

    mfg autoBert

  • AutoIT .exe Datei debuggen

    • autoBert
    • 26. Januar 2012 um 18:13
    Zitat von progandy

    Die Ausgabe des Obfuscators im Striponly-Modus könnte auch ein passendes Skript produzieren ;)
    Wenn nicht, dann eben dieses zusammengefasste Skript kompilieren, verwenden und auf den Fehler warten.


    Habe ich seben mit meinem URL-Manager ausgetestet:

    &quot;Url-Manager_Obfuscated&quot;
    [autoit]

    Global Const $GUI_EVENT_CLOSE = -3
    Global Const $GUI_ENABLE = 64
    Global Const $GUI_DISABLE = 128
    Global Const $CBS_AUTOHSCROLL = 0x40
    Global Const $CBS_DROPDOWN = 0x2
    Global Const $CB_INSERTSTRING = 0x14A
    Global Const $CB_SETCURSEL = 0x14E
    Global Const $__COMBOBOXCONSTANT_WS_VSCROLL = 0x00200000
    Global Const $GUI_SS_DEFAULT_COMBO = BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL, $__COMBOBOXCONSTANT_WS_VSCROLL)
    Global Const $tagPOINT = "long X;long Y"
    Func _SendMessage($hWnd, $iMsg, $wParam = 0, $lParam = 0, $iReturn = 0, $wParamType = "wparam", $lParamType = "lparam", $sReturnType = "lresult")
    Local $aResult = DllCall("user32.dll", $sReturnType, "SendMessageW", "hwnd", $hWnd, "uint", $iMsg, $wParamType, $wParam, $lParamType, $lParam)
    If @error Then Return SetError(@error, @extended, "")
    If $iReturn >= 0 And $iReturn <= 4 Then Return $aResult[$iReturn]
    Return $aResult
    EndFunc
    Global Const $HGDI_ERROR = Ptr(-1)
    Global Const $INVALID_HANDLE_VALUE = Ptr(-1)
    Global Const $KF_EXTENDED = 0x0100
    Global Const $KF_ALTDOWN = 0x2000
    Global Const $KF_UP = 0x8000
    Global Const $LLKHF_EXTENDED = BitShift($KF_EXTENDED, 8)
    Global Const $LLKHF_ALTDOWN = BitShift($KF_ALTDOWN, 8)
    Global Const $LLKHF_UP = BitShift($KF_UP, 8)
    Func _WinAPI_GetClassName($hWnd)
    If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
    Local $aResult = DllCall("user32.dll", "int", "GetClassNameW", "hwnd", $hWnd, "wstr", "", "int", 4096)
    If @error Then Return SetError(@error, @extended, False)
    Return SetExtended($aResult[0], $aResult[2])
    EndFunc
    Func _WinAPI_IsClassName($hWnd, $sClassName)
    Local $sSeparator = Opt("GUIDataSeparatorChar")
    Local $aClassName = StringSplit($sClassName, $sSeparator)
    If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
    Local $sClassCheck = _WinAPI_GetClassName($hWnd)
    For $x = 1 To UBound($aClassName) - 1
    If StringUpper(StringMid($sClassCheck, 1, StringLen($aClassName[$x]))) = StringUpper($aClassName[$x]) Then Return True
    Next
    Return False
    EndFunc
    Func __UDF_DebugPrint($sText, $iLine = @ScriptLineNumber, $err=@error, $ext=@extended)
    ConsoleWrite( _
    "!===========================================================" & @CRLF & _
    "+======================================================" & @CRLF & _
    "-->Line(" & StringFormat("%04d", $iLine) & "):" & @TAB & $sText & @CRLF & _
    "+======================================================" & @CRLF)
    Return SetError($err, $ext, 1)
    EndFunc
    Func __UDF_ValidateClassName($hWnd, $sClassNames)
    __UDF_DebugPrint("This is for debugging only, set the debug variable to false before submitting")
    If _WinAPI_IsClassName($hWnd, $sClassNames) Then Return True
    Local $sSeparator = Opt("GUIDataSeparatorChar")
    $sClassNames = StringReplace($sClassNames, $sSeparator, ",")
    __UDF_DebugPrint("Invalid Class Type(s):" & @LF & @TAB & "Expecting Type(s): " & $sClassNames & @LF & @TAB & "Received Type : " & _WinAPI_GetClassName($hWnd))
    Exit
    EndFunc
    Global $Debug_CB = False
    Global Const $__COMBOBOXCONSTANT_ClassName = "ComboBox"
    Func _GUICtrlComboBox_InsertString($hWnd, $sText, $iIndex = -1)
    If $Debug_CB Then __UDF_ValidateClassName($hWnd, $__COMBOBOXCONSTANT_ClassName)
    If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
    Return _SendMessage($hWnd, $CB_INSERTSTRING, $iIndex, $sText, 0, "wparam", "wstr")
    EndFunc
    Func _GUICtrlComboBox_SetCurSel($hWnd, $iIndex = -1)
    If $Debug_CB Then __UDF_ValidateClassName($hWnd, $__COMBOBOXCONSTANT_ClassName)
    If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
    Return _SendMessage($hWnd, $CB_SETCURSEL, $iIndex)
    EndFunc
    Global Const $SS_ETCHEDHORZ = 0x10
    Const $sElect = "bitte eine URL auswählen"
    Global $URL
    If Not FileExists(@ScriptDir & "\URL.INI") Then
    $sData = "AutoIt=http://www.autoit.de" & @LF
    $sData &= "Buch=http://www.autoit.de/index.php?page=Thread&postID=92818#post92818" & @LF
    $sData &= "richtig Posten=http://www.autoit.de/index.php?page=Thread&threadID=4424" & @LF
    $sData &= "Tutorial=http://wiki.autoit.de/wiki/index.php/Tutorial" & @LF
    $sData &= "Skriptfehler finden=http://www.autoit.de/index.php?page=Thread&threadID=13785" & @LF
    $sData &= "Hilfe=http://translation.autoit.de/autoitinfo/hilfedateien/AutoIt-Hilfe-Deutsch-3.3.6.1-Stand-09_05_10.zip" & @LF
    $sData &= "MiniUrl-Manger=http://www.autoit.de/index.php?page=Thread&postID=164341#post164341" & @LF
    IniWriteSection(@ScriptDir & "\URL.INI", "URLs", $sData)
    EndIf
    $hGui = GUICreate("MiniUrl-Manager", 300, 90, 302, 218)
    $hcboProg = GUICtrlCreateCombo("", 8, 8, 200, 25)
    $hbtnAdd = GUICtrlCreateButton("&Hinzufügen", 213, 8,80)
    $hbtnDel = GUICtrlCreateButton("&Löschen", 213, 35,80)
    $hlblURL = GUICtrlCreateLabel("", 8, 70, 290,25)
    $hbtnOpen = GUICtrlCreateButton("&Öffnen", 8, 35,200)
    GUICtrlSetState($hbtnOpen, $GUI_DISABLE)
    GUICtrlCreateGraphic(0,65,300,2,$SS_ETCHEDHORZ )
    read_INI()
    GUISetState(@SW_SHOW)
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $hbtnAdd
    $write1 = InputBox("URL", "Bitte eine gültige URL eingeben")
    If $write1 <> "" Then
    $write2 = InputBox("URL verwalten unter", "Bitte Kurzbegriff eingeben")
    If $write2 <> "" Then IniWrite(@ScriptDir & "\URL.INI", "URLs", $write2, $write1)
    GUICtrlSetData($hcboProg, $write2, $write2)
    EndIf
    show_Selection()
    Case $hbtnDel
    $sDel = GUICtrlRead($hcboProg)
    IniDelete(@ScriptDir & "\URL.INI", "URLs", $sDel)
    GUICtrlSetData($hcboProg,"")
    read_INI()
    Case $hcboProg
    show_Selection()
    Case $hbtnOpen
    ShellExecute($URL)
    EndSwitch
    WEnd
    Func read_INI()
    $list1 = IniReadSection(@ScriptDir & "\URL.INI", "URLs")
    ConsoleWrite($list1 & @CRLF)
    if IsArray($list1) Then
    For $i = 1 To $list1[0][0] +1 ;hier erzeuge ich den absichtlichen Laufzeitfehler
    GUICtrlSetData($hcboProg, $list1[$i][0])
    Next
    EndIf
    _GUICtrlComboBox_InsertString($hcboProg,$sElect,0)
    _GUICtrlComboBox_SetCurSel($hcboProg,0)
    EndFunc
    Func show_Selection()
    If GUICtrlRead($hcboProg) = $sElect Then
    GUICtrlSetState($hbtnOpen, $GUI_DI SABLE)
    GUICtrlSetData($hlblURL, "")
    Else
    GUICtrlSetState($hbtnOpen, $GUI_ENABLE)
    $Prog = GUICtrlRead($hcboProg)
    ConsoleWrite("ausgewählt: " & $Prog & @CRLF)
    $URL = IniRead(@ScriptDir & "\URL.INI", "URLs", $Prog, "")
    GUICtrlSetData($hlblURL, $URL)
    EndIf
    EndFunc

    [/autoit]

    das Ergebnis weicht unwesentlich ab, wenn ich zu der angegebenen Zeilennr. die Anzahl der Includes im Originalskript:

    Spoiler anzeigen
    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Run_Obfuscator=y
    #Obfuscator_Parameters=/striponly
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.6.1
    Author: AutoBert: http://www.autoit.de/index.php?page…4341#post164341

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

    Skriptbeispiel für den Umgang mit INI-Files und ComboBox
    #ce ----------------------------------------------------------------------------

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

    #include <GUIConstantsEx.au3>
    #Include <GuiComboBox.au3>
    #include <StaticConstants.au3>

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

    Const $sElect = "bitte eine URL auswählen"
    Global $URL

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

    If Not FileExists(@ScriptDir & "\URL.INI") Then
    $sData = "AutoIt=http://www.autoit.de" & @LF
    $sData &= "Buch=http://www.autoit.de/index.php?page=Thread&postID=92818#post92818" & @LF
    $sData &= "richtig Posten=http://www.autoit.de/index.php?page=Thread&threadID=4424" & @LF
    $sData &= "Tutorial=http://wiki.autoit.de/wiki/index.php/Tutorial" & @LF
    $sData &= "Skriptfehler finden=http://www.autoit.de/index.php?page=Thread&threadID=13785" & @LF
    $sData &= "Hilfe=http://translation.autoit.de/autoitinfo/hilfedateien/AutoIt-Hilfe-Deutsch-3.3.6.1-Stand-09_05_10.zip" & @LF
    $sData &= "MiniUrl-Manger=http://www.autoit.de/index.php?page=Thread&postID=164341#post164341" & @LF
    IniWriteSection(@ScriptDir & "\URL.INI", "URLs", $sData)
    EndIf

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

    $hGui = GUICreate("MiniUrl-Manager", 300, 90, 302, 218)
    $hcboProg = GUICtrlCreateCombo("", 8, 8, 200, 25)
    $hbtnAdd = GUICtrlCreateButton("&Hinzufügen", 213, 8,80)
    $hbtnDel = GUICtrlCreateButton("&Löschen", 213, 35,80)
    $hlblURL = GUICtrlCreateLabel("", 8, 70, 290,25)
    $hbtnOpen = GUICtrlCreateButton("&Öffnen", 8, 35,200)
    GUICtrlSetState($hbtnOpen, $GUI_DISABLE)
    GUICtrlCreateGraphic(0,65,300,2,$SS_ETCHEDHORZ )
    read_INI()
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $hbtnAdd
    $write1 = InputBox("URL", "Bitte eine gültige URL eingeben")
    If $write1 <> "" Then
    $write2 = InputBox("URL verwalten unter", "Bitte Kurzbegriff eingeben")
    If $write2 <> "" Then IniWrite(@ScriptDir & "\URL.INI", "URLs", $write2, $write1)
    GUICtrlSetData($hcboProg, $write2, $write2)
    EndIf
    show_Selection()
    Case $hbtnDel
    $sDel = GUICtrlRead($hcboProg)
    IniDelete(@ScriptDir & "\URL.INI", "URLs", $sDel)
    GUICtrlSetData($hcboProg,"")
    read_INI()
    Case $hcboProg
    show_Selection()
    Case $hbtnOpen
    ShellExecute($URL)
    ;ConsoleWrite($URL & @CRLF)
    EndSwitch
    WEnd

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

    Func read_INI()
    $list1 = IniReadSection(@ScriptDir & "\URL.INI", "URLs")
    ConsoleWrite($list1 & @CRLF)
    if IsArray($list1) Then
    For $i = 1 To $list1[0][0] +1 ;hier erzeuge ich den absichtlichen Laufzeitfehler
    GUICtrlSetData($hcboProg, $list1[$i][0])
    Next
    EndIf
    _GUICtrlComboBox_InsertString ($hcboProg,$sElect,0)
    _GUICtrlComboBox_SetCurSel($hcboProg,0)
    EndFunc ;==>read_INI

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

    Func show_Selection()
    If GUICtrlRead($hcboProg) = $sElect Then
    GUICtrlSetState($hbtnOpen, $GUI_DISABLE)
    GUICtrlSetData($hlblURL, "")
    Else
    GUICtrlSetState($hbtnOpen, $GUI_ENABLE)
    $Prog = GUICtrlRead($hcboProg)
    ConsoleWrite("ausgewählt: " & $Prog & @CRLF)
    $URL = IniRead(@ScriptDir & "\URL.INI", "URLs", $Prog, "")
    GUICtrlSetData($hlblURL, $URL)
    EndIf
    EndFunc ;==>show_Selection

    [/autoit]

    hinzuzähle stimmt es genau. Ob dies jetzt Zufall ist wage ich zu bezweifeln habe es aber nch nicht mit anderen Skripten ausprobiert,

    mfg auoBert

  • wohin mit der Funktion

    • autoBert
    • 26. Januar 2012 um 16:20
    Zitat von Camulus

    Also um das "pushen" zu erklären.
    Ich dachte ich hätte die Lösung gefunden und hab das in den Thread reingeschrieben und ihn als gelöst markiert. Funtioniert hatte es aber nicht, deswegen hab ich den Betrag wieder "geleert" und den Thread wieder auf offen gesetzt.


    In einem solchen Fall löscht man einfach wieder den Beitrag, das man den Präfix umstellen kann hast du ja auch gefunden.

    mfg autoBert

  • wohin mit der Funktion

    • autoBert
    • 26. Januar 2012 um 15:01
    Zitat

    Heute, 13:39 Eröffnunsbeitrag
    Heute, 13:57 sinnfreier Beitrag zum pushen,


    So etwas führt in aller Regel dazu, dass das Thema ignoriert wird, so auch jetzt von mir,

    autoBert

  • TGA Bild in GUI reinbekommen ohne Konvertierung?

    • autoBert
    • 26. Januar 2012 um 01:54

    siehe: [ offen ] .tga

  • Paar Probleme beim Patcher ...

    • autoBert
    • 25. Januar 2012 um 01:12

    Hallo Julien,

    ok Auftrag angenommen und (hoffentlich) erledigt du hast eine PN

    mfg autoBert

  • Mausklickkoordinaten richtig konfigurieren

    • autoBert
    • 24. Januar 2012 um 20:24
    Zitat von Rabias

    Ich überprüfe stets die Koordinaten und nach jedem überprüfen, ob durch AutoIt Window Info oder speziellen Script die Koordinaten der gewünschten Position und sie ändern sich stetig. Gibt es da einen Grund und gegebenenfalls eine Lösung für?


    Für die stetigen Änderungen der gewünschten Posistion musst du wohl den Entwickler des Prgrammes fragen, warum er die Elemente ständig anders platziert.
    Damit man dir helfen kann solltest du die Anwendung benennen,

    mfg autoBert

  • Paar Probleme beim Patcher ...

    • autoBert
    • 24. Januar 2012 um 20:12

    Hallo Julien,

    du solltest auch die Deteien: @scriptdir\Data\DataList.txt und adresse.txt in deinen Eröffnungsbeitrag laden, bzw. angeben welche Dateien auf dem Server diesen entsprechen.
    Adresse.txt enthält sicherlich

    Code
    http://white1991x.square7.ch


    Da die Dateien auf dem Server eh nur sinnlosen Text enthalten könntest du auch ruhig kleinere einstellen,

    mfg autoBert

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™