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

  • Listview mit Combobox (Oscar Datenbank)

    • autoBert
    • 19. Oktober 2011 um 12:54
    Zitat von Ilse

    Geht das Listview mit Combobox?


    es geht siehe: https://autoit.de/index.php?page…95043#post95043

    mfg autoBert

  • CMD Befehl mit Adminrechten als Poweruser senden

    • autoBert
    • 18. Oktober 2011 um 16:44
    Zitat von m.mart1n

    Da aber nicht alle PCs von uns Adminrechte

    Bringst du da nicht etwas durcheinander? Ein PC ist kein Benutzer.

    Wenn du am Anfang des Programmes #RequireAdmin sezt, verlangt das Programm automatisch nach.

    mfg autoBert

  • Datenbank Oscar (Listview)

    • autoBert
    • 18. Oktober 2011 um 16:28

    Ist zwar schon gelöst, mein Lösungsvorschlag über WM_Notify:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>

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

    Global $sHeader = "Produkt|Gebote|Preis|Restzeit|Name" ; Die Überschriften für das Listview und für das "Neuer Eintrag"-Fenster
    Global $sDBFile = @ScriptDir & "\datenbank.txt" ; Pfad und Name der Datenbank-Datei
    Global $iEdit = -1 ; Wert auf -1 setzen, weil _GUICtrlListView_GetSelectionMark() einen Nullbasierten Wert liefert

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

    #region Hauptfenster
    Global $hGui = GUICreate("Listview-Datenbank-Beispiel", 600, 480) ; Hauptfenster erstellen
    GUISetBkColor(0xCCCCCC)

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

    Global $hListView = GUICtrlCreateListView($sHeader, 0, 0, 600, 400, $LVS_SHOWSELALWAYS) ; Listview erstellen

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

    Global $hLVHandle = GUICtrlGetHandle($hListView) ; das Handle vom Listview wird für die UDF-Listview-Funktionen benötigt
    _GUICtrlListView_SetColumn($hLVHandle, 0, "Produkt", 120, 0) ; 1. Spalte = 120 Px breit, rechts ausgerichtet
    _GUICtrlListView_SetColumn($hLVHandle, 1, "Gebote", 60, 0) ; 2. Spalte = 60 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hLVHandle, 2, "Preis", 90, 0) ; 3. Spalte = 90 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hLVHandle, 3, "Restzeit", 100, 0) ; 4. Spalte = 100 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hLVHandle, 4, "Name", 120, 0) ; 5. Spalte = 120 Px breit, links ausgerichtet

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

    Global $hSearchListView = GUICtrlCreateListView($sHeader, 0, 0, 600, 400, $LVS_SHOWSELALWAYS) ; Listview für die Suche erstellen
    GUICtrlSetState(-1, $GUI_HIDE)
    Global $hSearchLVHandle = GUICtrlGetHandle($hSearchListView) ; das Handle vom Listview wird für die UDF-Listview-Funktionen benötigt
    _GUICtrlListView_SetColumn($hSearchLVHandle, 0, "Produkt", 120, 0) ; 1. Spalte = 120 Px breit, rechts ausgerichtet
    _GUICtrlListView_SetColumn($hSearchLVHandle, 1, "Gebote", 60, 0) ; 2. Spalte = 60 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hSearchLVHandle, 2, "Preis", 90, 0) ; 3. Spalte = 90 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hSearchLVHandle, 3, "Restzeit", 100, 0) ; 4. Spalte = 100 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hSearchLVHandle, 4, "Name", 120, 0) ; 5. Spalte = 120 Px breit, links ausgerichtet

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

    GUICtrlCreateLabel("Suchbegriff:", 10, 412, 90, 20)
    GUICtrlSetFont(-1, 11)
    Global $hSearch = GUICtrlCreateInput("", 100, 410, 390, 20)
    GUICtrlSetFont(-1, 11)
    Global $hSearchStart = GUICtrlCreateButton("Suche...", 500, 410, 60, 20, $BS_DEFPUSHBUTTON) ; Dieser Button ist der Default-Push-Button (wenn der User [Enter] drückt)
    GUICtrlSetFont(-1, 9)
    Global $hSearchReset = GUICtrlCreateButton("<-", 562, 410, 28, 20)
    GUICtrlSetFont(-1, 8, 600, 0, "Verdana")
    GUICtrlSetState(-1, $GUI_DISABLE)

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

    Global $hNew = GUICtrlCreateButton("Neuer Eintrag", 5, 440, 80, 35)
    Global $hEdit = GUICtrlCreateButton("Markierten Eintrag bearbeiten", 95, 440, 110, 35, $BS_MULTILINE) ; $BS_Multiline für mehrzeiligen Button
    Global $hLoad = GUICtrlCreateButton("Laden", 230, 440, 70, 35)
    Global $hSave = GUICtrlCreateButton("Speichern", 310, 440, 70, 35)
    Global $hDel = GUICtrlCreateButton("Markierte Einträge löschen", 400, 440, 90, 35, $BS_MULTILINE)
    Global $hDelAll = GUICtrlCreateButton("Alle Einträge löschen", 500, 440, 90, 35, $BS_MULTILINE)

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

    Global $hCM = GUICtrlCreateContextMenu($hListView) ; ein Kontextmenü für das Listview erstellen
    Global $hCMNew = GUICtrlCreateMenuItem("Neuer Eintrag", $hCM) ; der 1. Kontextmenüeintrag
    Global $hCMEdit = GUICtrlCreateMenuItem("Eintrag bearbeiten", $hCM) ; der 2. Kontextmenüeintrag
    Global $hCMDel = GUICtrlCreateMenuItem("Markierte Einträge löschen", $hCM) ; der 3. Kontextmenüeintrag
    #endregion Hauptfenster

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

    #region Fenster für neuen Eintrag
    Global $hGuiNew = GUICreate("Neuer Eintrag", 632, 140, -1, -1, $WS_SYSMENU) ; das Fenster "Neuer Eintrag" erstellen
    Global $aHeader = StringSplit($sHeader, '|') ; Überschriften-Array
    Global $aNew[$aHeader[0]] ; Array für die Input-IDs
    For $i = 1 To $aHeader[0]
    GUICtrlCreateLabel($aHeader[$i], 4 + ($i - 1) * 125, 15, 110, 20) ; Überschriften-Label erstellen
    GUICtrlSetFont(-1, 8, 400, 0, 'Verdana') ; Schriftgröße und -art der Überschriften festlegen
    $aNew[$i - 1] = GUICtrlCreateInput("", 2 + ($i - 1) * 125, 30, 120, 20, Default, $WS_EX_STATICEDGE) ; Eingabefelder erstellen
    GUICtrlSetFont(-1, 10, 600, 0, 'Verdana') ; Schriftgröße und -art der Eingabefelder festlegen
    Next
    Global $hCreate = GUICtrlCreateButton("Eintrag speichern", 254, 65, 120, 25, $BS_DEFPUSHBUTTON) ; Button zum speichern
    #endregion Fenster für neuen Eintrag

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

    _GUICtrlListView_RegisterSortCallBack($hLVHandle) ; damit man das Listview (mit Klick auf die Spaltenüberschrift) sortieren kann

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

    GUISetState(@SW_SHOW, $hGui) ; Hauptfenster sichtbar machen

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

    #cs
    #region Ebaysuche einlesen
    $sSource= BinaryToString(inetread("http://shop.ebay.de/i.html?rt=nc&LH_Auction=1&_nkw=Cd+Player&_trksid=p3286.c0.m301"))

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

    ;Land
    ;<b></b>Deutschland</a>
    ;$aLand = StringRegExp($sSource,'<b></b>(.*?)</a>',3)
    ;Link
    ;<a class="vip" href="http://cgi.ebay.de/Portable-CD-Player-GRUNDIG-CDP-440-/120739691074?pt=DE_Elektronik_Computer_Audio_Hi_Fi_CD_Player&amp;hash=item1c1ca57a42">Portable CD-Player GRUNDIG CDP 440</a>
    $aProdukt = StringRegExp($sSource,'"vip">(.*?)<',3) ;class=.*?"vip"\shref="(.*?)">
    ;_ArrayDisplay($aProdukt, "Array Auswertung")
    $aGebote = StringRegExp($sSource,'<td\sclass="bids\sbin1">(\d+\s\w+)</td>',3) ;class=.*?"vip"\shref="(.*?)">
    ;_ArrayDisplay($aGebote, "Array Auswertung")
    $aPreis = StringRegExp($sSource,'<div\sclass="g-b">(.*?)</div>',3) ;class=.*?"vip"\shref="(.*?)">
    ;_ArrayDisplay($aPreis, "Array Auswertung")
    $aRestzeit = StringRegExp($sSource,'class="hidlb">.*?<span.*?([^<">]+)</span>',3) ;class="hidlb">.*?<span.*?([^<">]+)</span>

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

    for $i = 0 to UBound($aRestzeit) -1
    ;$ersetze = StringRegExpReplace($aRestzeit[$i],"[160;]","test")
    $d = $aProdukt[$i]&"|"&$aGebote[$i]&"|"&$aPreis[$i]&"|"&$aRestzeit[$i]

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

    GUICtrlCreateListViewItem($d, $hListView)
    ;MsgBox(0,"","")
    next

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

    #endregion Ebaysuche einlesen
    #ce

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

    If FileExists($sDBFile) Then Load() ; wenn Datenbank-Datei existiert, dann Datenbank laden

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

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") ;<=========================================== Bemachrichtigung Doppelklick

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

    While 1
    $nMsg = GUIGetMsg(1) ; Message-Event holen (1) = erweiterter Modus
    Switch $nMsg[0] ; anhand der Control-ID das entsprechende Case aufrufen
    Case $hListView ; User hat auf eine Spaltenüberschrift geklickt
    _GUICtrlListView_SortItems($hLVHandle, GUICtrlGetState($hListView)) ; Einträge entsprechend sortieren
    Case $hSearchStart
    GUICtrlSetState($hSearchStart, $GUI_DISABLE)
    _GUICtrlListView_DeleteAllItems($hSearchLVHandle)
    Dim $sSearch = GUICtrlRead($hSearch), $sItem
    For $i = 0 To _GUICtrlListView_GetItemCount($hLVHandle) - 1
    $sItem = _GUICtrlListView_GetItemTextString($hLVHandle, $i)
    If StringInStr($sItem, $sSearch) Then GUICtrlCreateListViewItem($sItem, $hSearchListView)
    Next
    GUICtrlSetState($hListView, $GUI_HIDE)
    GUICtrlSetState($hSearchListView, $GUI_SHOW)
    GUICtrlSetState($hSearchReset, $GUI_ENABLE)
    Case $hSearchReset
    GUICtrlSetData($hSearch, "")
    GUICtrlSetState($hSearchListView, $GUI_HIDE)
    GUICtrlSetState($hListView, $GUI_SHOW)
    GUICtrlSetState($hSearchStart, $GUI_ENABLE)
    GUICtrlSetState($hSearchReset, $GUI_DISABLE)
    Case $hNew, $hCMNew ; User hat auf "Neuer Eintrag" geklickt
    WinSetTitle($hGuiNew, "", "Neuer Eintrag") ; den Titel des Fenster anpassen
    GUISetState(@SW_SHOW, $hGuiNew) ; das Fenster "Neuer Eintrag" anzeigen
    GUISetState(@SW_DISABLE, $hGui) ; das Hauptfenster deaktivieren
    Case $hEdit, $hCMEdit ; User hat auf "Eintrag bearbeiten" geklickt
    WinSetTitle($hGuiNew, "", "Eintrag bearbeiten") ; den Titel des Fenster anpassen
    GUISetState(@SW_SHOW, $hGuiNew) ; das Fenster "Neuer Eintrag" anzeigen
    GUISetState(@SW_DISABLE, $hGui) ; das Hauptfenster deaktivieren
    Edit()
    Case $hLoad ; User hat auf "Laden" geklickt
    Load()
    Case $hSave ; User hat auf "Laden" geklickt
    Save()
    Case $hDel, $hCMDel ; User hat auf "Markierte Einträge löschen" geklickt
    If MsgBox(256 + 32 + 4, "Einträge löschen", "Wollen sie die markierten Einträge wirklich löschen?") = 6 Then _GUICtrlListView_DeleteItemsSelected($hLVHandle)
    Case $hDelAll ; User hat auf "Alle Einträge löschen" geklickt
    If MsgBox(256 + 32 + 4, "Einträge löschen", "Wollen sie wirklich alle Einträge löschen?") = 6 Then _GUICtrlListView_DeleteAllItems($hLVHandle)
    Case $hCreate ; User hat auf "Eintrag speichern" im Fenster "Neuer Eintrag" geklickt
    NewItem()
    Case $GUI_EVENT_CLOSE ; User hat auf das Schließen-Symbol geklickt (bzw. die ESC-Taste gedrückt)
    Switch $nMsg[1] ; erweiterte Abfrage für welches Fenster
    Case $hGui ; User will das Hauptfenster schließen
    If MsgBox(32 + 4, "Beenden", "Wollen sie das Programm wirklich beenden?") = 6 Then End() ; wenn ja, dann End-Funktion aufrufen
    Case $hGuiNew ; User will das "Neuer Eintrag"-Fenster schließen
    $iEdit = -1
    For $i = 0 To UBound($aNew) - 1
    GUICtrlSetData($aNew[$i], "") ; Alle Eingabefelder leeren
    Next
    GUISetState(@SW_HIDE, $hGuiNew) ; "Neuer Eintrag"-Fenster verstecken
    GUISetState(@SW_ENABLE, $hGui) ; Hauptfenster wieder aktivieren
    WinActivate($hGui) ; und in den Vordergrund holen
    EndSwitch
    EndSwitch
    WEnd

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

    Func End()
    ;~ Save() ; wenn der vordere Kommentar entfernt wird, dann werden vor dem beenden noch die Daten gespeichert
    _GUICtrlListView_UnRegisterSortCallBack($hLVHandle) ; Sortierroutine wieder de-registrieren
    Exit ; Programm beenden
    EndFunc ;==>End

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

    Func NewItem() ; Funktion zum auslesen der Eingabefelder (Neuer Eintrag bzw. Eintrag bearbeiten)
    Local $sItem = ""
    For $i = 0 To UBound($aNew) - 1 ; Schleife, um alle Eingabefelder durchzugehen
    If $iEdit > -1 Then ; wenn $iEdit > -1 (Eintrag bearbeiten), dann...
    _GUICtrlListView_SetItemText($hLVHandle, $iEdit, GUICtrlRead($aNew[$i]), $i) ; den Eintrag aus dem Eingabefeld ins Listview schreiben
    Else ; sonst $iEdit = -1 (neuer Eintrag)
    $sItem &= GUICtrlRead($aNew[$i]) & "|" ; den Eintrag aus dem Eingabefeld erstmal in einer Variablen ($sItem) speichern
    EndIf
    GUICtrlSetData($aNew[$i], "") ; das entsprechende Eingabefeld leeren
    Next
    If $iEdit > -1 Then ; wenn $iEdit > -1 (Eintrag bearbeiten), dann...
    $iEdit = -1
    GUISetState(@SW_HIDE, $hGuiNew) ; "Neuer Eintrag"-Fenster verstecken
    GUISetState(@SW_ENABLE, $hGui) ; Hauptfenster wieder aktivieren
    Sleep(300)
    WinActivate($hGui) ; und in den Vordergrund holen
    Else ; sonst $iEdit = -1 (neuer Eintrag)
    GUICtrlSetState($aNew[0], $GUI_FOCUS) ; den Focus wieder auf das erste Eingabefeld setzen, für weitere Eingaben
    GUICtrlCreateListViewItem(StringTrimRight($sItem, 1), $hListView) ; mit den Werten aus $sItem einen neuen Listview-Eintrag hinzufügen
    EndIf
    EndFunc ;==>NewItem

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

    Func Edit() ; Funktion zum bearbeiten eines Listview-Eintrags im "Eintrag bearbeiten"-Fenster
    $iEdit = _GUICtrlListView_GetSelectionMark($hLVHandle) ; auslesen, welcher Listview-Eintrag markiert (bei mehreren, den obersten) ist
    If $iEdit > -1 Then
    Local $aItem = _GUICtrlListView_GetItemTextArray($hLVHandle, $iEdit) ; die Einträge aus dem Listview in ein Array holen
    For $i = 1 To $aItem[0]
    GUICtrlSetData($aNew[$i - 1], $aItem[$i]) ; und in die entsprechenden Eingabefelder schreiben
    Next
    EndIf
    EndFunc ;==>Edit

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

    Func Load() ; Datenbank-Datei laden
    Local $hFile, $sContent, $aNewItems
    $hFile = FileOpen($sDBFile, 0) ; Datei zum lesen öffnen
    If $hFile <> -1 Then ; wenn das öffnen erfolgreich war, dann...
    $sContent = FileRead($hFile) ; Datei komplett einlesen
    FileClose($hFile) ; Datei schließen
    $sContent = StringTrimRight($sContent, 2) ; das letzte @CRLF entfernen
    $aNewItems = StringSplit($sContent, @CRLF, 1) ; Den Dateiinhalt am Zeilenende splitten
    If Not IsArray($aNewItems) Then Return ; Wenn $aNewItems kein Array ist, dann Funktion verlassen
    _GUICtrlListView_BeginUpdate($hLVHandle) ; Listview sperren
    For $i = 1 To $aNewItems[0] ; Alle Einträge des Arrays durchgehen
    GUICtrlCreateListViewItem($aNewItems[$i], $hListView) ; mit den eingelesenen Daten einen neuen Listview-Eintrag erstellen
    Next
    _GUICtrlListView_EndUpdate($hLVHandle) ; Listview wieder freigeben
    EndIf
    EndFunc ;==>Load

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

    Func Save() ; Datenbank-Datei speichern
    Local $sItem, $hFile, $iCount
    $iCount = _GUICtrlListView_GetItemCount($hLVHandle) - 1 ; Anzahl der Listview-Einträge holen
    If $iCount = -1 Then Return FileDelete($sDBFile) ; Wenn das Listview keine Einträge enthält, dann Datei löschen und Funktion verlassen
    $hFile = FileOpen($sDBFile, 2) ; Datei zum speichern (überschreiben) öffnen
    If $hFile <> -1 Then ; wenn das öffnen erfolgreich war, dann...
    For $i = 0 To $iCount ; Schleife, um alle Listview-Einträge durchzugehen
    $sItem = _GUICtrlListView_GetItemTextString($hLVHandle, $i) ; die Werte aus dem Listview-Eintrag holen
    FileWriteLine($hFile, $sItem) ; und in die Datei schreiben
    Next
    FileClose($hFile) ; Datei schließen
    EndIf
    EndFunc ;==>Save

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

    Func WM_NOTIFY($hWnd, $MsgID, $wParam, $lParam)
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return 0
    $code = DllStructGetData($tagNMHDR, 3)
    If $wParam = $hListview Then
    Switch $code
    ;Case $NM_RCLICK ;Rechtsklick
    case $NM_DBLCLK ;Klick
    If _GUICtrlListView_GetSelectedCount($hListview) > 0 Then
    For $i = 0 To _GUICtrlListView_GetItemCount($hListview)
    If _GUICtrlListView_GetItemSelected($hListview, $i) Then
    $aItem = _GUICtrlListView_GetItemTextArray($hListview, $i)
    MsgBox(0, "Rechts-Klick auf ", $aItem[1] & @CRLF & @CRLF & $aItem[2])
    ;ShellExecute(@ScriptDir & "\" & $aItem[1])
    EndIf
    Next
    EndIf
    EndSwitch
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

    [/autoit]

    Bei Doppelklick wird geht eine MessageBox mit dem Produktnamen auf. Zeile 246 (MSgbOx) kann auskommentiert werden. Zum ausführen der PDF einfach in Zeile 247 das auskommentierende Semikolon entfernen. Ausserdem habe ich die komplette Sektion EBAY-Suche auskommetiert, denn bei mir stürzt das Skript damit ab (hängt vielleicht mit den Daten zusammen,

    mfg autoBert

  • Funktion geht nicht hilfe...

    • autoBert
    • 18. Oktober 2011 um 02:25

    ist doch gelöst:

    Zitat von unverschämt

    Habe es nun denke ich fast gelöst versuche es genau zu beschreiben:
    1.Drücke login Button
    2.Drücke X oder Cancel <-----------Es beendet sich das Script aber es dauert relativ lange bis es sich beendet

    das es länger dauert liegt an dem sleep(), den du ja benötigst damit die "Dummy"-Progressbar nicht durch rennt,

    mfg autoBert

  • [HELP] [GELÖST] Ständiges auslesen stoppen, dass z.B. nur 1x ein Traytipp kommt

    • autoBert
    • 18. Oktober 2011 um 02:06
    Zitat von Saguhilla


    Verstehe das mit der "boolschen" Variabel...

    Ein "boolsche" Variable ist eine Variable die entweder True oder False ist. Schau in der Hilfe das Beispiel zu HotKeySet an, die Variable $Paused ist eine solche "boolsche" Varibable.

    Zitat von Saguhilla

    könntest du vllt. mal bitte ein Beispiel schreiben ???

    da ich dein bisheriges Skript nicht kenne:

    Zitat von autoBert

    Stelle doch ers eimal die:

    Es geht sicher z.B. mit einer boolschen Variablen,

    mfg autoBert


    mfg autoBert

  • [HELP] [GELÖST] Ständiges auslesen stoppen, dass z.B. nur 1x ein Traytipp kommt

    • autoBert
    • 17. Oktober 2011 um 19:59

    Stelle doch ers eimal die

    Zitat

    Hat sich erledigt: Habe noch eine bessere Lösung dieses Problemes gefunden... (Heute, 00:37).

    ein. Es geht sicher z.B. mit einer boolschen Variablen,

    mfg autoBert

  • Andere Form anzeigen

    • autoBert
    • 17. Oktober 2011 um 18:45

    Hallo iFreak95,

    du kannst auch ein Tab-Control verwenden, dann hast du nur eine Gui,

    mfg autoBert

  • Mausbewegungsrichtung ändern

    • autoBert
    • 17. Oktober 2011 um 16:18
    Zitat von General Kaboom

    ICH MACHE KEINE SPASSPROGRAMME :cursing: ...ich erlaube mir diese Unterstellung mal gekonnt zu Ignorieren...wenn du's genau wissen willst habe ich an meiner Maus rumgebastelt, also das Gehäuse ein bisschen an die Handform angepasst...und nun leider wie gesagt aus Platzgründen (von dem es wegen den Gehäuseanpassungen leider nun relativ wenig hat). Bei Bedarf kann ich dir mal den Entwurf zeigen, den ich noch zuhause rumliegen habe, aber das würde ich gerne vermeiden bis alles ohne Probleme läuft.Edit: eukalyptus: Lösung 1 reicht mir eigentlich schon, de Richtungen stimmen noch nicht aber das und den anderen Bug krieg ich schon selbst hin. thx

    Das ist ja wohl die dümmste Erklärung die dir dazu einfallen kann. Warum soll für eine jetzt kleinere Maus auf dem Tisch nicht mehr genug Platz sein, damit du Softwaretechnisch die Bewegung nach oben auf links um setzen musst? Was machst du wenn du nach links willst, wäre ja jetzt nach unten nötig.
    Dein Versuch einer Erklärung bestärkt mich in meiner Annahme dass ess für ein Spassprogramm gedacht ist, deshalb:

    Vote for close

  • Webspider UDF

    • autoBert
    • 17. Oktober 2011 um 04:26

    Hallo PenGuin,

    dass es nicht besonders performant ist liegt (neben AutoIt) an dem ReDim in Zeile 41. Du solltest dir eine Methode ausdenken bei dem du die Anzahl der ReDim 's veringern oder vielleich ganz darauf verzichten kannst. Letzteres sollte doch mit

    [autoit]

    _ArrayConcatenate

    [/autoit]

    und

    [autoit]

    _ArrayUnique

    [/autoit]

    möglich sein,

    @killax2x: es ist zum einen eine gute Übung um Rekursionen zu üben bzw. seine Logik zu schulen um performante Algorythmen zu entwickeln, zum anderen ist es die Grundlage um eine Webseite mit all ihren Links downzuloaden um sie nach Anpassng der Links ofline im Zugriff zu haneb,

    mfg autoBert

  • Funktion geht nicht hilfe...

    • autoBert
    • 16. Oktober 2011 um 23:37
    Zitat von unverschämt

    Wenn es hoch kommt nur die reine Beschäftigungszeit für autoit ist vieleicht 3 Monate in diesem Jahr.
    Aber sehr nett wie man hier behandelt wird als "Anfänger" und ja ich werde auch noch bestimmt in
    2 Jahren noch anfänger bleiben.Es ist immer einfach jemanden zu verurteilen.


    Du bist ja nr zu bequem selbst etwas zu skripten, falls dies nicht zutreffen sollte dtimmt dies:

    Zitat von autoBert

    Normalerweise muss dir die Lösung sofort ins Auge springen. Wenn du immer nur einen suchst der die Probleme für dich löst ist programmieren nicht das richtige Hobby für dich, beschäftige dich also besser mit etwas anderem,


    natürlich umso mehr. Du hattest das gleiche Thema auch in dem Forum für das hier keine Werbung gemacht werden darf und ich auch keine machen will. Dort wurde dein Thema geschlossen, hier wurde dir ausreichend zum Thema geholfen, also heul nicht rum.

    mfg autoBert

  • K8055 USB Interface Board Zähler

    • autoBert
    • 16. Oktober 2011 um 22:38

    Hallo Domi94 ,

    teste dieses Skript:

    Spoiler anzeigen
    [autoit]

    ; *** Start added by AutoIt3Wrapper ***
    #include <EditConstants.au3>
    ; *** End added by AutoIt3Wrapper ***
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_UseUpx=n
    #AutoIt3Wrapper_Add_Constants=n
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <k8055udf.au3>
    #include <GuiStatusBar.au3>
    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>

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

    Global $iBoard = 0 ;Board mit dem verbnden werden soll
    Global $idChkDigitIn[6] ;für ControlIDs der Checkboxen Digitale Eingänge Element 0 ist nicht belegt
    Global $idChkDigitOut[9] ;für ControlIDs der Checkboxen Digitale Ausgänge Element 0 ist nicht belegt
    Global $idInpZaehler[3] ;für ControlIDs Entprellzeit der Zählwerke Element 0 ist nicht belegt
    Global $idBtnZaehler[3] ;für ControlIDs Buttons Prellzeit setzen Zählwerke Element 0 ist nicht belegt
    Global $idBtnReset[3] ;für ControlIDs Buttons Prellzeit Zählwerke RESETen Element 0 ist nicht belegt
    Global $idLblZaehler[3] ;für ControlIDs Werte der Zählwerke Element 0 ist nicht belegt
    Global $iZaehler[3] ;abgefragte Werte aus der DllCall Element 0 ist nicht belegt

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

    ;##########################################
    $frmMain = GUICreate("K8055 Board Test", 519, 185, 187, 121)
    $idStatus = _GUICtrlStatusBar_Create($frmMain)
    Dim $idStatus_PartsWidth[2] = [439, -1]
    _GUICtrlStatusBar_SetParts($idStatus, $idStatus_PartsWidth)
    _GUICtrlStatusBar_SetText($idStatus, "", 0)
    _GUICtrlStatusBar_SetText($idStatus, "Verbunden", 1)
    GUICtrlCreateGroup("Digitale Eingänge", 8, 0, 169, 41)
    For $i = 1 To 5
    $idChkDigitIn[$i] = GUICtrlCreateCheckbox("I" & $i, -16 + $i * 32, 16, 25, 17)
    Next
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateGroup("Digitale Ausgänge", 184, 0, 329, 41)
    For $i = 1 To 8
    $idChkDigitOut[$i] = GUICtrlCreateCheckbox("O" & $i, 152 + $i * 40, 16, 33, 17)
    Next
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateGroup("Zähler 1", 8, 55, 220, 75)
    GUICtrlCreateLabel("Entprellteit (0-5000):",15,72)
    $idInpZaehler[1] = GUICtrlCreateInput("",110,70,30,20,$ES_Number)
    $idBtnZaehler[1] = GUICtrlCreateButton("setzen",150,70,70,20)
    $idBtnReset[1] = GUICtrlCreateButton("Reset",150,95,70,20)
    $idLblZaehler[1] = GUICtrlCreateLabel("TEST",15,95,110,30, $ES_RIGHT)
    GUICtrlSetFont(-1,14,1400)
    GUICtrlCreateGroup("Zähler 2", 278, 55, 220, 75)
    GUICtrlCreateLabel("Entprellteit (0-5000):",285,72)
    $idInpZaehler[2] = GUICtrlCreateInput("",380,70,30,20,$ES_Number)
    $idBtnZaehler[2] = GUICtrlCreateButton("setzen",420,70,70,20)
    $idBtnReset[2] = GUICtrlCreateButton("Reset",420,95,70,20)
    $idLblZaehler[2] = GUICtrlCreateLabel("TEST",285,95,110,30, $ES_RIGHT)
    GUICtrlSetFont(-1,14,1400)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $beenden = GUICtrlCreateButton("Beenden", 432, 135, 75, 25)
    GUISetState(@SW_SHOW)

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

    $bK8055Debug = True
    USB_DLLOpen()
    initial_board($iBoard)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg ;um die Events dieser GUI zu unterscheiden
    Case $GUI_EVENT_CLOSE, $beenden
    CloseAllDevice()
    Exit
    Case $idChkDigitOut[1] To $idChkDigitOut[8]
    $iChannel = $nMsg - $idChkDigitOut[1] + 1
    ConsoleWrite($iChannel & @CRLF)
    If BitAND(GUICtrlRead($idChkDigitOut[1]), $GUI_CHECKED) Then
    SetDigitalChannel($iBoard, $iChannel)
    Else
    ClearDigitalChannel($iBoard, $iChannel)
    EndIf
    Case $idChkDigitIn[1] to $idChkDigitIn[5]
    For $i = 1 To 5
    If ReadDigitalChannel($iBoard, $idChkDigitIn[$i]) Then
    GUICtrlSetState($idChkDigitIn[$i], $GUI_CHECKED)
    Else
    GUICtrlSetState($idChkDigitIn[$i], $GUI_UNCHECKED)
    EndIf
    Next
    Case $idBtnZaehler[1]
    USBSetCounterDebounceTime(1, GuiCtrlRead($idInpZaehler[1]))
    Case $idBtnZaehler[2]
    USBSetCounterDebounceTime(2, GuiCtrlRead($idInpZaehler[2]))
    Case $idBtnReset[1]
    $iZaehler[1] = USBResetCounter(1)
    Case $idBtnReset[2]
    $iZaehler[2] = USBResetCounter(2)
    EndSwitch
    for $i = 1 to 2 ;Werte auslesen und setzen
    $iZaehler[$i] = USBReadCounter($i)
    if $iZaehler[$i] <> GUICtrlRead($idLblZaehler[$i]) then GUICtrlSetData($idLblZaehler[$i],$iZaehler[$i])
    Next
    WEnd

    [/autoit]

    ausserdem gehe ich davon aus dass die UDf einen Fehler enthält. Ich würde die Funktion USBReadCounter so anpassen, bin aber was DLL-Calls betrifft Laie und habe auch kein K8055 um es testen zu können:

    [autoit]

    Func USBReadCounter($count)
    $result = DllCall("k8055d.dll", "none", "ReadCounter", "int", $count)
    Return $result[0]
    EndFunc ;==>USBReadCounter

    [/autoit]

    mfg autoBert

  • K8055 USB Interface Board Zähler

    • autoBert
    • 16. Oktober 2011 um 21:09

    Hallo

    du benötigst dazu diese UDF:

    Spoiler anzeigen
    [autoit]

    #include<Array.au3>
    #include-once

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

    Global $sDLL = "k8055D_multi.dll"
    ; Original Vellemann.Dll in diesen Namen umbenennen
    ;lt. vivus https://autoit.de/index.php?page…7621#post117621
    ;von dem auch das Original dieser UDF stammt
    Global $bK8055Debug = False
    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.0.0
    Author: myName

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

    Script Function:
    handles the k8055d.dll 2009.10.19

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

    #ce ----------------------------------------------------------------------------
    Func USB_DLLOpen()
    If $bK8055Debug Then ConsoleWrite("Dll wird geöffnet" & @CRLF)

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

    DllOpen(@ScriptDir & "\" & $sDLL) ; öffnen der DLL

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

    EndFunc ;==>USB_DLLOpen

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

    ;----------------------------------------------------------------------------

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

    Func initial_board($address)
    If $bK8055Debug Then ConsoleWrite("Board wird initialisiert" & @CRLF)
    $begin = TimerInit()
    Do
    $result = USBOpenDevice($address)
    Sleep(250)

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

    $dif = TimerDiff($begin)

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

    If $dif > "4000" Then ExitLoop

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

    Until $result = 1

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

    ClearAllDigital($address)

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

    Sleep(250)

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

    ;~ SetDigitalChannel($address, "4")

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

    If $result = 1 Then
    If $bK8055Debug Then ConsoleWrite("Board wurde initialisiert" & @CRLF)
    Return "1"

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

    Else
    MsgBox(0, "ERROR", "fehler bei initialisierung des USB board's" & $address)
    MsgBox(0, "ERROR", "Programm wird beendet! mit " & $result)
    Exit
    Return "0"

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

    EndIf

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

    EndFunc ;==>initial_board

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

    ;----------------------------------------------------------------------------

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

    Func USBOpenDevice($address)
    If $bK8055Debug Then ConsoleWrite("USBDevice " & $address & " wird geöffnet" & @CRLF)

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

    $result = DllCall($sDLL, "long", "OpenDevice", "long", $address)
    If Not @error Then

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

    If $result[0] = $address Then
    Return "1"

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

    Else
    If $bK8055Debug Then ConsoleWrite("Öffnen von USBDevice " & $address & " nicht erfolgreich!" & @CRLF)
    Exit
    EndIf
    Else
    If $bK8055Debug Then ConsoleWrite("Öffnen von USBDevice " & $address & " nicht erfolgreich!" & @CRLF)
    Exit
    EndIf
    EndFunc ;==>USBOpenDevice

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

    ;---------------------------------------------------------------------------

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

    Func CloseAllDevice()
    If $bK8055Debug Then ConsoleWrite("entlade DLL " & @CRLF)
    $res = DllCall($sDLL, "none", "CloseDevice")
    DllClose(@ScriptDir & "\" & $sDLL) ; öffnen der DLL

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

    EndFunc ;==>CloseAllDevice

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

    ;---------------------------------------------------------------------------

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

    Func SearchDevices()
    If $bK8055Debug Then ConsoleWrite("suche Boards" & @TAB)

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

    $result = DllCall($sDLL, "long", "SearchDevices")
    if not @error Then
    If $bK8055Debug Then ConsoleWrite("OK" & @CRLF)
    Return $result[0]
    Else
    If $bK8055Debug Then ConsoleWrite("Failed" & @CRLF)
    EndIf

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

    EndFunc ;==>SearchDevices

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

    ;---------------------------------------------------------------------------

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

    Func USBCloseDevice($address)
    SetCurrentDevice($address)
    $res = DllCall($sDLL, "none", "CloseDevice")
    ;Return ;;$result[0]
    EndFunc ;==>USBCloseDevice

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

    ;---------------------------------------------------------------------------

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

    Func ClearAllDigital($address)
    SetCurrentDevice($address)
    $res = DllCall($sDLL, "int", "ClearAllDigital")
    EndFunc ;==>ClearAllDigital

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

    ;----------------------------------------------------------------------------

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

    Func SetCurrentDevice($address)

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

    $begin = TimerInit()
    Do

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

    $result = DllCall($sDLL, "long", "OpenDevice", "int", $address)

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

    ;ToolTip($address&"="&$result[0],0,0)
    $dif = TimerDiff($begin)

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

    If $dif > "4000" Then ExitLoop

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

    Until $address = $result[0]

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

    ;ToolTip("",0,0)

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

    If $address = $result[0] Then
    ;nix
    Else
    MsgBox(0, "", "adresse = " & $address & " result = " & $result[0])

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

    EndIf

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

    EndFunc ;==>SetCurrentDevice

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

    ;----------------------------------------------------------------------------

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

    Func SetDigitalChannel($address, $channel)
    SetCurrentDevice($address)
    DllCall($sDLL, "none", "SetDigitalChannel", "int", $channel)
    EndFunc ;==>SetDigitalChannel

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

    ;---------------------------------------------------------------------------

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

    Func ClearDigitalChannel($address, $channel)
    SetCurrentDevice($address)
    DllCall($sDLL, "none", "ClearDigitalChannel", "int", $channel)
    EndFunc ;==>ClearDigitalChannel

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

    ;---------------------------------------------------------------------------

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

    Func ReadAnalogChannel($address, $channel)
    SetCurrentDevice($address)
    $result = DllCall($sDLL, "int", "ReadAnalogChannel", "int", $channel)
    Return $result[0]
    EndFunc ;==>ReadAnalogChannel

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

    ;---------------------------------------------------------------------------

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

    Func ReadAllDigital($address)
    SetCurrentDevice($address)
    $alldigit = DllCall($sDLL, "int", "ReadAllDigital")
    Return $alldigit[0]
    EndFunc ;==>ReadAllDigital
    ;---------------------------------------------------------------------------

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

    Func ReadDigitalChannel($address, $sellect)
    Dim $channel[6]
    $channel[1] = 0
    $channel[2] = 0
    $channel[3] = 0
    $channel[4] = 0
    $channel[5] = 0

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

    $wert = ReadAllDigital($address)

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

    ;MsgBox(0,"",$alldigit[0] & " " & $wert)
    Select

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

    Case $wert = 0
    $channel[1] = 0
    $channel[2] = 0
    $channel[3] = 0
    $channel[4] = 0
    $channel[5] = 0

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

    Case $wert = 1
    ;I1
    $channel[1] = 1

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

    Case $wert = 2
    ;I2
    $channel[2] = 1

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

    Case $wert = 3
    ;I1 + I2
    $channel[1] = 1
    $channel[2] = 1

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

    Case $wert = 4
    ;I3
    $channel[3] = 1

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

    Case $wert = 5
    ;I3 + I1
    $channel[1] = 1
    $channel[3] = 1

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

    Case $wert = 6
    ;I3 + I2
    $channel[2] = 1
    $channel[3] = 1

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

    Case $wert = 7
    ;I3 + I2 + I1
    $channel[1] = 1
    $channel[2] = 1
    $channel[3] = 1

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

    Case $wert = 8
    ;I4
    $channel[4] = 1

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

    Case $wert = 9
    ;I4 + I1
    $channel[1] = 1
    $channel[4] = 1

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

    Case $wert = 10
    ;I4 + I2
    $channel[2] = 1
    $channel[4] = 1

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

    Case $wert = 11
    ;I4 + I2 + I1
    $channel[1] = 1
    $channel[2] = 1
    $channel[4] = 1

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

    Case $wert = 12
    ;I4 + I3
    $channel[3] = 1
    $channel[4] = 1

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

    Case $wert = 13
    ;I4 + I3 + I1
    $channel[1] = 1
    $channel[3] = 1
    $channel[4] = 1

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

    Case $wert = 14
    ;I4 + I3 + I2
    $channel[2] = 1
    $channel[3] = 1
    $channel[4] = 1

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

    Case $wert = 15
    ;I4 + I3 * I2 + I1
    $channel[1] = 1
    $channel[2] = 1
    $channel[3] = 1
    $channel[4] = 1

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

    Case $wert = 16
    ;I5
    $channel[5] = 1

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

    Case $wert = 17
    ;I1
    $channel[1] = 1
    $channel[5] = 1

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

    Case $wert = 18
    ;I2
    $channel[2] = 1
    $channel[5] = 1

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

    Case $wert = 19
    ;I1 + I2
    $channel[1] = 1
    $channel[2] = 1
    $channel[5] = 1

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

    Case $wert = 20
    ;I3
    $channel[3] = 1
    $channel[5] = 1

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

    Case $wert = 21
    ;I3 + I1
    $channel[1] = 1
    $channel[3] = 1
    $channel[5] = 1

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

    Case $wert = 22
    ;I3 + I2
    $channel[2] = 1
    $channel[3] = 1
    $channel[5] = 1

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

    Case $wert = 23
    ;I3 + I2 + I1
    $channel[1] = 1
    $channel[2] = 1
    $channel[3] = 1
    $channel[5] = 1

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

    Case $wert = 24
    ;I4
    $channel[4] = 1
    $channel[5] = 1

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

    Case $wert = 25
    ;I4 + I1
    $channel[1] = 1
    $channel[4] = 1
    $channel[5] = 1

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

    Case $wert = 26
    ;I4 + I2
    $channel[2] = 1
    $channel[4] = 1
    $channel[5] = 1

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

    Case $wert = 27
    ;I4 + I2 + I1
    $channel[1] = 1
    $channel[2] = 1
    $channel[4] = 1
    $channel[5] = 1

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

    Case $wert = 28
    ;I4 + I3
    $channel[3] = 1
    $channel[4] = 1
    $channel[5] = 1

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

    Case $wert = 29
    ;I4 + I3 + I1
    $channel[1] = 1
    $channel[3] = 1
    $channel[4] = 1
    $channel[5] = 1

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

    Case $wert = 30
    ;I4 + I3 + I2
    $channel[2] = 1
    $channel[3] = 1
    $channel[4] = 1
    $channel[5] = 1

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

    Case $wert = 31
    ;I4 + I3 * I2 + I1
    $channel[1] = 1
    $channel[2] = 1
    $channel[3] = 1
    $channel[4] = 1
    $channel[5] = 1

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

    Case Else

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

    $channel[1] = 0
    $channel[2] = 0
    $channel[3] = 0
    $channel[4] = 0
    $channel[5] = 0

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

    EndSelect

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

    If $channel[$sellect] = 1 Then
    ; MsgBox(0,"","return 1")
    Return 1
    Else
    ; MsgBox(0,"","return 0")
    Return 0

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

    EndIf

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

    EndFunc ;==>ReadDigitalChannel
    ;--------------------------

    [/autoit]

    die du im include-Ordner von AutoIt unter k8055udf.au3 speicherst und mit

    [autoit]

    #include <k8055udf.au3>

    [/autoit]

    in dein Skript einbindest. Hier ein kleines Testskript:

    Spoiler anzeigen
    [autoit]

    #include <k8055udf.au3>
    #include <GuiStatusBar.au3>
    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>

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

    Global $iBoard = 0 ;Board mit dem verbnden werden soll
    Global $idChkDigitIn[6] ;für ControlIDs der Checkboxen Digitale Eingänge Element 0 ist nicht belegt
    Global $idChkDigitOut[9] ;für ControlIDs der Checkboxen Digitale Ausgänge Element 0 ist nicht belegt

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

    ;##########################################
    $frmMain = GUICreate("K8055 Board Test", 519, 412, 187, 121)
    $idStatus = _GUICtrlStatusBar_Create($frmMain)
    Dim $idStatus_PartsWidth[2] = [439, -1]
    _GUICtrlStatusBar_SetParts($idStatus, $idStatus_PartsWidth)
    _GUICtrlStatusBar_SetText($idStatus, "", 0)
    _GUICtrlStatusBar_SetText($idStatus, "Verbunden", 1)
    GUICtrlCreateGroup("Digitale Eingänge", 8, 0, 169, 41)
    For $i = 1 To 5
    $idChkDigitIn[$i] = GUICtrlCreateCheckbox("I" & $i, -16 + $i * 32, 16, 25, 17)
    Next
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateGroup("Digitale Ausgänge", 184, 0, 329, 41)
    For $i = 1 To 8
    $idChkDigitOut[$i] = GUICtrlCreateCheckbox("O" & $i, 152 + $i * 40, 16, 33, 17)
    Next
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $ListView1 = GUICtrlCreateListView("Aktionen", 8, 48, 506, 310)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 502)
    $beenden = GUICtrlCreateButton("Beenden", 432, 360, 75, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)

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

    $bK8055Debug = True
    USB_DLLOpen()
    initial_board($iBoard)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg ;um die Events dieser GUI zu unterscheiden
    Case $GUI_EVENT_CLOSE, $beenden
    CloseAllDevice()
    Exit
    Case $idChkDigitOut[1] To $idChkDigitOut[8]
    $iChannel = $nMsg - $idChkDigitOut[1] + 1
    ConsoleWrite($iChannel & @CRLF)
    If BitAND(GUICtrlRead($idChkDigitOut[1]), $GUI_CHECKED) Then
    SetDigitalChannel($iBoard, $iChannel)
    Else
    ClearDigitalChannel($iBoard, $iChannel)
    EndIf
    Case $idChkDigitIn[1] to $idChkDigitIn[5]
    For $i = 1 To 5
    If ReadDigitalChannel($iBoard, $idChkDigitIn[$i]) Then
    GUICtrlSetState($idChkDigitIn[$i], $GUI_CHECKED)
    Else
    GUICtrlSetState($idChkDigitIn[$i], $GUI_UNCHECKED)
    EndIf
    Next
    EndSwitch
    WEnd

    [/autoit]

    mfg autoBert

  • Windows Hotkeys in GUIs

    • autoBert
    • 16. Oktober 2011 um 14:24

    Halo oispnr.

    findest du es nicht dreist hier auf ein fremdes Board zu verlinken? Daher plädiere ich dafür galls du dein echtes Skript nicht einstellst dieses Thema zu CLOSEn ,

    mfg autoBert

  • Was soll ich Scripten?

    • autoBert
    • 16. Oktober 2011 um 06:23

    Hallo unverschämt,

    wie wäre es wenn du die Skriptbeispiele aus der Hlfe durcharbeitest. Dies hilft gegen Langeweile und verbessert das Verständnis für AutoIt. Wenn du dann zumindest über alle nativen Funktionen Bescheid (GUI-Funktionen sind Pflicht, die restlichen Kür schaden aber nicht) weist kannst du dir ernsthaft Gedanken machen ein eigenes Projekt anzugehen,

    mfg autoBert

  • Funktion geht nicht hilfe...

    • autoBert
    • 15. Oktober 2011 um 02:04

    du beschäftigst dich seit über eibnem Jahr mit AutoIt, da sollte man Sourcecode (vor allem so einfachen) analysieren und verstehen können. Normalerwweise muss dir die Lösung sofort ins Auge springen. Wenn du immer nur einen suchst der die Probleme für dich löst ist programmieren nicht das richtige Hobby für dich, beschäftige dich also besser mit etwas anderem,

    mfg autoBert

  • Funktion geht nicht hilfe...

    • autoBert
    • 15. Oktober 2011 um 00:35

    Hallo unverschämt,

    hier das Beispiel aus der Hilfe zu GuCtrlCreateProgress:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>

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

    Opt('MustDeclareVars', 1)

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

    Example()

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

    Func Example()
    Local $progressbar1, $progressbar2, $button, $wait, $s, $msg, $m

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

    GUICreate("Meine GUI Progressbar", 220, 100, 100, 200)
    $progressbar1 = GUICtrlCreateProgress(10, 10, 200, 20)
    GUICtrlSetColor(-1, 32250); Funktioniert nicht mit Windows XP Style
    $progressbar2 = GUICtrlCreateProgress(10, 40, 200, 20, $PBS_SMOOTH)
    $button = GUICtrlCreateButton("Start", 75, 70, 70, 20)
    GUISetState()

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

    $wait = 20; Warte 20ms bis zum nächsten Schritt
    $s = 0; Progressbar-Startposition
    Do
    $msg = GUIGetMsg()
    If $msg = $button Then
    GUICtrlSetData($button, "Stop")
    For $i = $s To 100
    If GUICtrlRead($progressbar1) = 50 Then MsgBox(0, "Info", "Die Hälfte ist fertig ...", 1)
    $m = GUIGetMsg()

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

    If $m = -3 Then ExitLoop

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

    If $m = $button Then
    GUICtrlSetData($button, "Weiter")
    $s = $i ; Speichere aktuelle Balkenposition in $s
    ExitLoop
    Else
    $s = 0
    GUICtrlSetData($progressbar1, $i)
    GUICtrlSetData($progressbar2, (100 - $i))
    Sleep($wait)
    EndIf
    Next
    If $i > 100 Then
    ; $s=0
    GUICtrlSetData($button, "Start")
    EndIf
    EndIf
    Until $msg = $GUI_EVENT_CLOSE
    EndFunc ;==>Example

    [/autoit]

    anhand diesem Beispiel erkennst du wie es funktioniert,

    mfg autoBert

  • FF.au3 oder IE.au3 koordinaten

    • autoBert
    • 14. Oktober 2011 um 22:47

    Versuche es mit _FFImageClick,

    mfg autoBert

  • Funktion geht nicht hilfe...

    • autoBert
    • 14. Oktober 2011 um 22:37

    Hallo unverschämt,

    einfach die Hintergrundfarbe des Labels auf Transparent setzen, also so:

    Spoiler anzeigen
    [autoit]

    ;#RequireAdmin
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    #Region ### START Koda GUI section ### Form=C:\Users\Django\Eigene Projekte\django Autoit v3 Projekt\++Übungs Testscripte\Koda Übungen\Gui_Password_Obj.kxf
    $Gui_Login_System_Obj = GUICreate("Login System by Django", 365, 130, 800, 475)
    GUISetFont(8, 400, 0, "Consolas")
    $Gui_Login_Obj = GUICtrlCreateButton("Login", 16, 88, 145, 25)
    $Gui_Cancel_Obj = GUICtrlCreateButton("Cancel", 185, 88, 145, 25)
    $Gui_Ladebalken_Obj = GUICtrlCreateProgress(16, 55, 315, 25)
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetBkColor(-1, 0x000000)
    $Gui_Status_Obj = GUICtrlCreateLabel("0%", 288, 60, 40, 20, $SS_Right)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT )
    GUICtrlSetFont(-1, 12, 1400, 0, "Consolas")
    $Gui_Benutzername_Obj = GUICtrlCreateLabel("Benutzername:", 16, 8, 90, 25)
    GUICtrlSetFont(-1, 10, 400, 0, "Consolas")
    $Gui_Password_Obj = GUICtrlCreateLabel("Passwort:", 185, 8, 90, 25)
    GUICtrlSetFont(-1, 10, 400, 0, "Consolas")
    $Gui_Benutzername_InputBox_Obj = GUICtrlCreateInput("", 16, 24, 145, 20)
    $Gui_Password_InputBox_Obj = GUICtrlCreateInput("", 185, 24, 145, 20)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Gui_Login_Obj
    _Ladebalken()
    Sleep(250)
    _Password_Check()
    Case $Gui_Cancel_Obj
    Exit
    EndSwitch
    WEnd

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

    Func _Ladebalken()
    For $Zahlvariable = 0 To 100 Step 1
    GUICtrlSetData($Gui_Ladebalken_Obj,$Zahlvariable)
    GUICtrlSetData($Gui_Status_Obj,$Zahlvariable&"%")
    Sleep(250)
    Next
    EndFunc

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

    Func _Password_Check()
    $InputBoxBenutzername = GUICtrlRead($Gui_Benutzername_InputBox_Obj)
    $InputBoxPassword = GUICtrlRead($Gui_Password_InputBox_Obj)
    If $InputBoxBenutzername = "Django" And $InputBoxPassword = "1337" Then
    MsgBox(0,"Login System","Erfolgreich eingeloggt")
    ElseIf $InputBoxBenutzername = "Django" Then
    MsgBox(0,"Login System","Dein Passwort ist Falsch")
    GUICtrlSetData($Gui_Ladebalken_Obj,0)
    GUICtrlSetData($Gui_Status_Obj,0&"%")
    ElseIf $InputBoxPassword = "1337" Then
    MsgBox(0,"Login System","Dein Benutzername ist Falsch")
    GUICtrlSetData($Gui_Ladebalken_Obj,0)
    GUICtrlSetData($Gui_Status_Obj,0&"%")
    Else
    MsgBox(0,"Login System","Benutzername und Passwort sind falsch")
    GUICtrlSetData($Gui_Ladebalken_Obj,0)
    GUICtrlSetData($Gui_Status_Obj,0&"%")
    EndIf
    EndFunc

    [/autoit]

    mfg autoBert

  • Funktion geht nicht hilfe...

    • autoBert
    • 14. Oktober 2011 um 21:52
    Zitat von unverschämt

    danke für die hilfe aber kannst du es nicht anhand meines gui machen?so das einfach rechts nebendem ladebalken es in % angezeigt wird!bekomme es einfach nicht hin!mfg unverschämt


    Ein Label zu erstellen und ihm in der Schleife mit GuiCtrlSetdata einen Inhalt zu zu weisen, das schaffst du auch alleine,

    mfg autoBert

  • Mausbewegungsrichtung ändern

    • autoBert
    • 14. Oktober 2011 um 21:36
    Zitat von General Kaboom

    Nur mal so aus Interesse: ist es möglich, das wenn man die Maus aufwärts bewegt, der Cursor beispielsweise nach links fährt?
    Ich versuche gerade ein paar ergonomieverbesserungen an meiner Maus vorzunehmen und hab leider den Sensor verdrehen müssen, damit s genug Platz gibt.


    Ich vermute dahinter eher die Absicht ein Spassskript (um Lehrer/Bekannte zu erschrecken) zu erstellen als Ergonomieverbesserungen, daher Vote for Close,

    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™