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

Beiträge von x0r

  • Maus mit Page UP und Page DOWN bewegen und drücken.

    • x0r
    • 25. Oktober 2013 um 11:46

    ich hab schon diverse sachen mit rumklicken gelöst.. und er hat ja danach gefragt, evtl lernt er nochwas von :)

    meine vorab-lösung hier (BugFix, schau weg!!! :D):

    [autoit]

    Global $Paused, $cnt = 0

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

    HotKeySet("{PGUP}","klicken1")
    HotKeySet("{PGDN}","klicken2")

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

    While 1
    sleep(100)
    WEnd

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

    Func klicken1()
    $cnt += 1
    if $cnt = 14 Then $cnt = 1
    klicken()
    EndFunc

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

    Func klicken2()
    $cnt -= 1
    if $cnt = 0 Then $cnt = 13
    klicken()
    EndFunc

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

    func klicken()
    if $cnt = 1 Then MouseClick("left",811, 669,0) ;klick1
    if $cnt = 2 Then MouseClick("left",1037, 755,0) ;klick2
    if $cnt = 3 Then MouseClick("left",1114, 427,0) ;klick3
    if $cnt = 4 Then MouseClick("left",769, 297,0) ;klick4
    ;... klicks bis 14
    EndFunc

    [/autoit]

    und jetz muss ich weg, schönes WE euch :)

  • Maus mit Page UP und Page DOWN bewegen und drücken.

    • x0r
    • 25. Oktober 2013 um 11:38

    sekunde! war zu schnell mit schreiben :D.

  • Maus mit Page UP und Page DOWN bewegen und drücken.

    • x0r
    • 25. Oktober 2013 um 11:34

    naja, wenn deine tasten 13 punkte ablaufen sollen, kommt das klar alles in eine funktion rein?

    oder willst du alle 13 auf separate tasten legen? da müssteste quasi die beiden tasten immer wieder neu belegen, aber auch das is kein thema :D

  • Maus mit Page UP und Page DOWN bewegen und drücken.

    • x0r
    • 25. Oktober 2013 um 11:26

    w00t? :wacko:

    klick halt die Stellen nacheinander durch, is doch kein Problem?

    In meinem letzten Beispiel hab ich dir 2 Klicks vorgegeben, die erweiterst jetz einfach auf deine.

  • Maus mit Page UP und Page DOWN bewegen und drücken.

    • x0r
    • 25. Oktober 2013 um 11:17

    zusätzlicher tipp:

    [autoit]

    Func klicken1()
    MouseClick("left",1,1,0) ;pos1
    MouseClick("left",2,2,0) ;pos2
    EndFunc

    [/autoit]

    (verwende als letzten Parameter 0, dann ist der Klick instant)

  • Maus mit Page UP und Page DOWN bewegen und drücken.

    • x0r
    • 25. Oktober 2013 um 11:01

    versuchs ma so :)

    [autoit]

    HotKeySet("{PGUP}","klicken1")
    HotKeySet("{PGDN}","klicken2")

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

    Func klicken1()
    ;...
    EndFunc

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

    Func klicken2()
    ;...
    EndFunc

    [/autoit]
  • Maus mit Page UP und Page DOWN bewegen und drücken.

    • x0r
    • 25. Oktober 2013 um 10:42
    Zitat

    Es müssen min. 13 stellen angefahren werden.

    ...na also wenn das kein Bot werden soll, dann weiss ich auch nicht ;)

  • 10er Countdown mit Abfrage

    • x0r
    • 25. Oktober 2013 um 10:16

    Hi,

    nach meinem rumgooglen bis jetz, bin ich nur auf so Sachen gestoßen wie "mehrere Funktionen gleichzeitig nicht möglich" und "AutoIt ist prozedurale Programmierun".

    Glaube sowas auch schonmal probiert zu haben, endete dann damit, dass ich mehrere *.exe kompiliert hatte.

    Kein Plan, obs mittlerweile geht, ich denke eher nicht :)

    Gruß,
    x0r

  • wie löse ich es, sinnvoll ein eine Off- und eine Online-Datenbank miteinander zu verknüpfen?

    • x0r
    • 24. Oktober 2013 um 11:14

    Hi,

    ich hatte letztens so ein Teil gebaut, aber nur in einer Richtung.

    Und zwar werden die kompletten Daten von nem MySQL gelesen, in einer txt gespeichert (hoffen wir mal, auf nicht zuviele Daten ;)) und anschließend eine Listview befüllt.
    Wenn dann keine Verbindung besteht, werden die Daten aus der txt verwendet.

    Im Prinzip sollte es ein leichtes sein, die bearbeitete txt mit der vom MySQL zu vergleichen (Größe) und dann jeweils die kleinere zu überschreiben, bzw die Daten aus der größeren hochzuladen.

    So würde ich das jedenfalls lösen, schätz ich :)

    Gruß,
    x0r

  • Vigenere

    • x0r
    • 24. Oktober 2013 um 11:08

    Hoi,

    hab mich gestern mal rangesetzt und ne Vigenere-Ver-/Entschlüsslung gebaut.

    Nach ca 2 Jahren immer mal wieder testen, hab ich rausgefunden, dass man dieses Quadrat überhaupt nicht braucht ( :whistling: ).

    Spoiler anzeigen
    [autoit]

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

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

    $GUI = GUICreate("Vigenere", 463, 251, 276, 180)
    $string = GUICtrlCreateInput("geheimnis", 16, 24, 425, 21)
    $keys = GUICtrlCreateInput("akey", 16, 216, 241, 21)
    $Label1 = GUICtrlCreateLabel("String:", 16, 8, 34, 15)
    $Label2 = GUICtrlCreateLabel("Key:", 16, 200, 25, 15)
    $encdec = GUICtrlCreateButton("Mach", 272, 216, 171, 21, $WS_GROUP)
    $enc1 = GUICtrlCreateInput("", 16, 72, 425, 21)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $dec1 = GUICtrlCreateInput("", 16, 120, 425, 21)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $Label3 = GUICtrlCreateLabel("Encoded:", 16, 56, 50, 15)
    $Label4 = GUICtrlCreateLabel("Decoded", 16, 104, 48, 15)
    $Label5 = GUICtrlCreateLabel("Verwendeter Key:", 16, 152, 88, 15)
    $genkey = GUICtrlCreateInput("", 16, 168, 425, 21)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUISetState(@SW_SHOW)

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

    Global $enc = 0
    Global $key, $txt, $opt

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $encdec
    ;text und key groß
    $txt = StringUpper(GUICtrlRead($string))
    $key = StringUpper(GUICtrlRead($keys))
    GUICtrlSetData($string, $txt)
    GUICtrlSetData($keys, $key)
    GUICtrlSetData($enc1, vig1($txt, $key, 1))
    GUICtrlSetData($dec1, vig1($txt, $key, 0))
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

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

    Func vig1($txt, $key, $enc)
    Local $fin

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

    ;key generieren
    Do
    $key &= $key
    $lenkey = StringLen($key)
    $lentxt = StringLen($txt)
    Until $lenkey >= $lentxt

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

    $key = StringTrimRight($key, $lenkey - $lentxt)

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

    GUICtrlSetData($genkey, $key)

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

    ;verschlüsseln
    For $i = 1 To StringLen($txt)
    $fin &= vig2(StringMid($txt, $i, 1), StringMid($key, $i, 1), $enc)
    Next

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

    Return $fin
    EndFunc ;==>vig1

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

    ;hilfsfunktion
    Func vig2($tx, $ky, $enc)
    Local $tf

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

    If StringInStr("ABCDEFGHIJKLMNOPQRSTUVWYXZ", $tx) Then
    $tx = Asc($tx)
    $ky = Asc($ky)

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

    ;wenn $enc = 1 dann entschlüsseln
    If $enc = 1 Then $ky = Mod(26 - $ky, 26)

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

    $tf = Mod($tx + $ky, 26)
    $tf = Chr($tf + 65)
    Else
    $tf = $tx
    EndIf

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

    Return $tf
    EndFunc ;==>vig2

    [/autoit]

    Es wird immer in beiden Richtungen und mit komplett verwendetem Schlüssel angezeigt.

    P.S.: Ein Thema hierzu gibts schon, allerdings wurde mir vom Forum empfohlen, ein neues zu erstellen ;)

    Gruß,
    x0r

  • Problem mit WINWAITCLOSE

    • x0r
    • 11. Oktober 2013 um 08:27

    Hi,

    schonmal die "Au3Info.exe" verwendet, um den wirklichen Namen des Fensters rauszufinden?

    Ansonsten kannste doch auch mal "ProcessWaitClose()" verwenden?

    Gruß,
    x0r

  • Dec2Binary Rechner

    • x0r
    • 10. Oktober 2013 um 08:05

    da hab ich wieder was ausgegraben.. tut mir fast ein bissl leid jetz :D

  • Dec2Binary Rechner

    • x0r
    • 9. Oktober 2013 um 13:49

    kein thema, hab dir auch ne msg in der sb geschrieben, aber da schaust vermutlich nich wirklich rein :D

    den fehler mit dem 1/2=0 hatte ich schonmal bei dec 2 hex und hab mich gewundert, warum nicht das raus kam, was eigentlich sollte ;)

  • Dec2Binary Rechner

    • x0r
    • 9. Oktober 2013 um 13:42
    Zitat

    Stell dir die Zahl 15 vor, die wäre im Binärsystem 111.

    Die Binärrechnung möchte ich jetzt nicht erklären, weil es dazu viel bessere Beiträge gibt als ich schreiben kann :D


    Also, man hat die Zahl 15. Die 15 teilt man durch 2 und erhält (wir
    nutzen die Ganzzahldivision - keine Dließkommazahldivision) den Rest 1.

    Dann nimmt man das Ergebnis (7) und teilt es wieder durch 2 bis man bei 0 ist.

    Ich werde Ganzzahldivision durch ein \ kennzeichnen.


    15 \ 2 = 7 Rest 1.

    7 \ 2 = 3 Rest 1.

    3 \ 2 = 1 Rest 1.

    1 \ 2 = 0 Rest 0.


    Nun nehmen wir die Reste von unten nach oben und hängen sie an den
    anderen dran: 0111. Die 0 kann man weglassen, weil sie ganz links steht.

    0111 = 111 und wie wir vorhin festgestellt haben ist 111 in binär 15 in dezimal.

    Alles anzeigen

    ist das wirklich so?

    111 = 7
    1111 = 15

    das sagt sogar dein programm :)
    (screenshot)

    Bilder

    • binary.png
      • 5,84 kB
      • 308 × 145
  • Stempelzeiten-Übersicht mit MySQL & GUI

    • x0r
    • 9. Oktober 2013 um 11:31

    ich bin nich mehr lang hier, noch fragen?! :thumbup:

  • Stempelzeiten-Übersicht mit MySQL & GUI

    • x0r
    • 9. Oktober 2013 um 11:19

    Hi all,

    habe mich mal dran gewagt, unsere Stempelzeiten-Übersicht ein ganzes Stück zu modifizieren.

    Bisher läuft alles über eine MS Access Datenbank, in der es immer ein riesiger Prozess ist dort die entsprechenden Daten einzufügen. Vorher musste man die Excellisten immer erst durch ein Tool jagen, um die Spalten korrekt zu formatieren, Usernamen anzupassen und Spalten zu löschen, etc, danach in MS Access importieren und über Abfragen anfügen bzw aktualisieren. Für den Laien viel zu komplex!

    Eigentlich wollte ich das Teil als Projektarbeit hernehmen, aber Cheffchen wollte mal wieder was sehr viel komplizierteres haben, somit hatte ichs verworfen und kürzlich wieder aufgegriffen (weil mich der Import-Prozess langsam ankotzt! :D).

    Jedenfalls funktioniert das Importieren jetzt mit einem Klick (den ich unserer Buchhaltung grade noch so zutraue) und die Benutzeroberfläche ist quasi deppensicher (MS Access hatte bei manchen Benutzern seltsame und unauffindbare Bugs).

    Kurze Beschreibung:

    Admin-GUI:
    - Listen werden per Drag&Drop eingefügt und per Klick auf den jeweiligen Button in MySQL importiert (Zeitaufwand ca 10 Sekunden (Bisher mit MS Access 10-15 Minuten!))

    User-GUI:
    - Hier gibts die Möglichkeit ein Passwort einzugeben, was die Admin-Liste mit allen Usern freischaltet und jeder auswählbar ist, somit werden alle Zeiten/Stunden des jeweils Ausgewählten angezeigt. Bei 3x falscher Eingabe des Passworts, sowie korrektem Login bekommt der Admin (in dem Fall ich) eine Email (3x falsch eingeben = gesperrt - hab ich aber mal deaktiviert, denn das zu managen trau ich der Buchhaltung nicht mehr zu :whistling: )
    - Der Exportieren-Button exportiert die aktuell angezeigte Liste in Excel
    - Passwort ist änderbar, nachdem man das richtige eingegeben hat.
    - Im Code hinterlegte Teamleiter oder Führungskräfte benötigen kein Passwort (da gibts dann auch keine Info-Mail an mich)!

    Hier der Code zu den beiden GUIs:

    Admin-GUI:

    Spoiler anzeigen
    [autoit]

    ;Zeiterfassung - GUI - ADMIN

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

    #include <misc.au3>
    #include <file.au3>
    #include <array.au3>
    #include <excel.au3>
    #include <mysql.au3>
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    Dim $ary, $inp1 = False, $inp2 = False

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

    $GUI = GUICreate("Zeiterfassung Admin", 634, 173, 192, 114, -1, BitOR($WS_EX_ACCEPTFILES, $WS_EX_WINDOWEDGE))
    $times = GUICtrlCreateInput("", 16, 32, 513, 21)
    GUICtrlSetState(-1, $GUI_ACCEPTFILES)
    $add_times = GUICtrlCreateButton("Add Zeiten", 544, 32, 75, 25, $WS_GROUP)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $Label1 = GUICtrlCreateLabel("Stempelzeiten:", 16, 8, 73, 17)
    $Label2 = GUICtrlCreateLabel("Stunden:", 16, 88, 47, 17)
    $hours = GUICtrlCreateInput("", 16, 112, 513, 21)
    GUICtrlSetState(-1, $GUI_ACCEPTFILES)
    $add_hours = GUICtrlCreateButton("Add Stunden", 544, 112, 75, 25, $WS_GROUP)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $add_times
    sqlfill()
    Case $add_hours
    sqlhours()
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    If $inp1 = False And GUICtrlRead($times) <> "" Then
    GUICtrlSetState($add_times, $GUI_ENABLE)
    $inp1 = True
    EndIf
    If $inp2 = False And GUICtrlRead($hours) <> "" Then
    GUICtrlSetState($add_hours, $GUI_ENABLE)
    $inp2 = True
    EndIf
    WEnd

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

    Func sqlfill()
    Local $datei = GUICtrlRead($times)

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

    Local $sqluser = "root"
    Local $sqlpass = ""
    Local $sqldb = "zeit"
    Local $sqlserv = "192.168.10.2"

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

    Local $sqlcon = _MySQLConnect($sqluser, $sqlpass, $sqldb, $sqlserv)

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

    xls2csv($datei)
    $datei = StringTrimRight($datei, 3) & "csv"

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

    _FileReadToArray($datei, $ary)

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

    ;1;2;3;4;5;6;7;8;9;;;0

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

    Local $test

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

    For $c = 1 To $ary[0]
    $test = StringReplace($ary[$c], ";", "")

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

    If @extended < 29 Then
    For $z = 1 To @extended
    $ary[$c] &= ";"
    Next
    EndIf
    Next

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

    ;~ $sqlcon.execute("TRUNCATE Stempelzeiten")

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

    For $i = 2 To $ary[0]
    $str = StringSplit($ary[$i], ";")

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

    If $str[18] = "" Then $str[18] = " "
    If $str[21] = "" Then $str[21] = " "
    If $str[27] = "" Then $str[27] = " "

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

    ;2,4,5,6,8,18,21,27

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

    _Query($sqlcon, "INSERT INTO Stempelzeiten (user_index, datum, rein, raus, stunden, urlaub, krank, feiertag) VALUES ('" & _
    $str[2] & "', '" & _
    $str[4] & "', '" & _
    $str[5] & "', '" & _
    $str[6] & "', '" & _
    $str[8] & "', '" & _
    $str[18] & "', '" & _
    $str[21] & "', '" & _
    $str[27] & "');")
    Next

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

    _mysqlend($sqlcon)
    FileDelete($datei)

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

    MsgBox(64, "Import Stempelzeiten", "Import erfolgreich!")
    EndFunc ;==>sqlfill

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

    Func sqlhours()
    Local $datei = GUICtrlRead($hours)

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

    Local $sqluser = "root"
    Local $sqlpass = ""
    Local $sqldb = "zeit"
    Local $sqlserv = "192.168.10.2"

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

    Local $sqlcon = _MySQLConnect($sqluser, $sqlpass, $sqldb, $sqlserv)

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

    xls2csv($datei)
    $datei = StringTrimRight($datei, 3) & "csv"

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

    _FileReadToArray($datei, $ary)

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

    $sqlcon.execute("TRUNCATE stunden")

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

    For $i = 2 To $ary[0]
    $str = StringSplit($ary[$i], ";")
    $sqlcon.execute("INSERT INTO stunden (ID, Stunden) VALUES ('" & $str[1] & "', '" & $str[5] & "')")
    Next

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

    _mysqlend($sqlcon)
    FileDelete($datei)

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

    MsgBox(64, "Import Stempelzeiten", "Import erfolgreich!")
    EndFunc ;==>sqlhours

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

    Func xls2csv($file)
    $oExcel = _ExcelBookOpen($file, 0)
    $format = ".csv"
    $npath = StringTrimRight($file, 4)
    _ExcelSaveAsEX($oExcel, $format, $npath)
    EndFunc ;==>xls2csv

    [/autoit]

    User-GUI:

    Spoiler anzeigen
    [autoit]

    ;Zeiterfassung - GUI - SQL

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

    #include <misc.au3>
    #include <date.au3>
    #include <mysql.au3>
    #include <array.au3>
    #include <File.au3>
    #include <String.au3>
    #include <excel.au3>
    #include <ButtonConstants.au3>
    #include <GUIComboBoxEx.au3>
    #include <ComboConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIListBox.au3>
    #include <GUIListView.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <ListViewConstants.au3>

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

    Global $login = @UserName
    Global $pwcnt, $users, $zeit, $out, $pw

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

    $GUI = GUICreate("Zeitübersicht", 629, 856, 192, 114)
    $adminlist = GUICtrlCreateCombo("---", 24, 24, 353, 25)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlSetState(-1, $GUI_HIDE)
    $Label1 = GUICtrlCreateLabel("Admin:", 24, 8, 36, 15)
    GUICtrlSetState(-1, $GUI_HIDE)
    $adminpw = GUICtrlCreateInput("", 392, 24, 193, 21, $ES_PASSWORD)
    $adminbutton = GUICtrlCreateButton("->", 600, 24, 20, 21)
    $Label2 = GUICtrlCreateLabel("Passwort:", 392, 8, 50, 15)
    $timelist = GUICtrlCreateList("Datum|Zeit|Stunden|Urlaub|Krank|Feiertag", 24, 85, 565, 721, BitOR($WS_BORDER, $LBS_MULTIPLESEL))
    $Label3 = GUICtrlCreateLabel("+/- Stunden:", 24, 64, 64, 17)
    $stunden = GUICtrlCreateInput("", 88, 56, 121, 21)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $xit = GUICtrlCreateButton("Beenden", 512, 824, 75, 17, $WS_GROUP)
    $export = GUICtrlCreateButton("Export", 24, 824, 75, 17, $WS_GROUP)
    $pwgen = GUICtrlCreateButton("PW Neu", 244, 824, 75, 17, $WS_GROUP)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlSetState(-1, $GUI_HIDE)
    GUISetState(@SW_SHOW)

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

    WinMove("Zeitübersicht", "", @DesktopWidth / 2 - 300, @DesktopHeight / 2 - 450)

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

    If $login = "admin_1" Or $login = "admin_2" Or $login = "admin_3" Then
    GUICtrlSetState($adminlist, $GUI_ENABLE)
    GUICtrlSetState($adminpw, $GUI_DISABLE)
    GUICtrlSetState($adminbutton, $GUI_DISABLE)
    GUICtrlSetState($pwgen, $GUI_ENABLE)
    GUICtrlSetState($pwgen, $GUI_SHOW)
    GUICtrlSetState($Label1, $GUI_SHOW)
    GUICtrlSetState($adminlist, $GUI_SHOW)
    filllist()
    EndIf

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

    ;User blockieren Teil 1
    ;~ If IniRead("user.ini", "block", $login, "") = 1 Then
    ;~ MsgBox(16, "Blockiert", "Du hast keinen Zugriff," & @CRLF & "wende dich an den Admin!")
    ;~ Exit
    ;~ EndIf

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

    fill($login)
    plusstunden($login)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $pwgen
    newpw()
    Case $adminlist
    If GUICtrlRead($adminlist) <> "---" Then
    fill(GUICtrlRead($adminlist))
    plusstunden(GUICtrlRead($adminlist))
    EndIf
    Case $adminbutton
    dopw()
    Case $export
    If GUICtrlRead($adminlist) <> "---" Then export(GUICtrlRead($adminlist))
    If GUICtrlRead($adminlist) = "---" Then export($login)
    Case $GUI_EVENT_CLOSE, $xit
    Exit
    EndSwitch
    WEnd

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

    Func dopw() ;PW = test
    Local $pw = GUICtrlRead($adminpw)
    If _StringEncrypt(1, $pw, "sqlprojekt2013", 2) = IniRead("user.ini", "pass", "pw", "") Or $pw == "<resetpasswort>" And $pw <> "" Then
    GUICtrlSetState($adminlist, $GUI_ENABLE)
    GUICtrlSetState($adminpw, $GUI_DISABLE)
    GUICtrlSetState($adminbutton, $GUI_DISABLE)
    GUICtrlSetState($pwgen, $GUI_ENABLE)
    GUICtrlSetState($pwgen, $GUI_SHOW)
    GUICtrlSetState($Label1, $GUI_SHOW)
    GUICtrlSetState($adminlist, $GUI_SHOW)
    ;Keine Mail bei meinem Login
    If $login <> "ich_nachname" Then adminmail($login, "login")
    filllist()
    Else
    $pwcnt += 1
    If $pwcnt < 3 Then MsgBox(64, "Fehler", "Passwort falsch! (" & $pwcnt & ")")
    If $pwcnt >= 3 Then
    adminmail($login, "bad")
    ;User blockieren Teil 2
    ;~ IniWrite("user.ini", "block", $login, "1")
    MsgBox(64, "Fehler", "Passwort 3x falsch." & @CRLF & "Meldung an den Admin!")
    Exit
    EndIf
    EndIf
    EndFunc ;==>dopw

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

    Func filllist()
    Local $err = IniReadSection(@ScriptDir & "\user.ini", "users")
    Local $users[$err[0][0] + 1]

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

    $users[0] = $err[0][0]

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

    For $i = 1 To $err[0][0]
    $users[$i] = $err[$i][0] & " / " & $err[$i][1]
    Next

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

    _ArraySort($users)

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

    For $i = 1 To $users[0]
    GUICtrlSetData($adminlist, $users[$i], "---")
    Next
    EndFunc ;==>filllist

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

    Func fill($user)

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

    Global $ganzeliste = ""

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

    If StringInStr($user, " / ") Then
    $user = StringSplit($user, " / ")
    $userid = $user[2]
    $user = $user[1]
    EndIf

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

    WinSetTitle($GUI, "", "Zeitübersicht - " & $user)

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

    $userid = IniRead("user.ini", "users", $user, "")

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

    GUICtrlDelete($timelist)
    $timelist = GUICtrlCreateListView("User_Index |Datum |Kommen |Gehen |Stunden |Urlaub |Krank |Feiertag ", 24, 85, 565, 721)

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

    Local $sqluser = "root"
    Local $sqlpass = ""
    Local $sqldb = "zeit"
    Local $sqlserv = "192.168.10.2"
    Local $sqlcon = _MySQLConnect($sqluser, $sqlpass, $sqldb, $sqlserv)
    Local $read = _Query($sqlcon, "SELECT * FROM Stempelzeiten where user_index = " & $userid & " order by datum desc")

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

    Local $i = 1

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

    With $read
    While Not .eof
    $out = ""
    $out &= .fields("user_index" ).value & "|" & _
    StringReplace(.fields("datum" ).value, "2013", "13") & "|" & _
    _Iif(StringLen(.fields("rein" ).value) > 7, StringTrimRight(StringRight(.fields("rein" ).value, 8), 3), .fields("rein" ).value) & "|" & _
    _Iif(StringLen(.fields("raus" ).value) > 7, StringTrimRight(StringRight(.fields("raus" ).value, 8), 3), .fields("raus" ).value) & "|" & _
    .fields("stunden" ).value & "|" & _
    .fields("urlaub" ).value & "|" & _
    .fields("krank" ).value & "|" & _
    .fields("feiertag" ).value & @CRLF

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

    GUICtrlCreateListViewItem($out, $timelist)
    $ganzeliste &= StringReplace($out, @CRLF, "†")
    .movenext
    WEnd
    EndWith

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

    _mysqlend($sqlcon)
    EndFunc ;==>fill

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

    Func plusstunden($user)

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

    If StringInStr($user, " / ") Then
    $user = StringSplit($user, " / ")
    $userid = $user[2]
    $user = $user[1]
    EndIf

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

    $userid = IniRead("user.ini", "users", $user, "")

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

    Local $sqluser = "root"
    Local $sqlpass = ""
    Local $sqldb = "zeit"
    Local $sqlserv = "192.168.10.2"

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

    Local $sqlcon = _MySQLConnect($sqluser, $sqlpass, $sqldb, $sqlserv)

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

    Local $read = _Query($sqlcon, "SELECT * FROM stunden where id = " & $userid)

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

    With $read
    While Not .eof

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

    $out = .fields("Stunden" ).value & @CRLF

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

    .movenext
    WEnd
    EndWith

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

    If StringLen($out) > 10 Then $out = 0

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

    GUICtrlSetData($stunden, $out)

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

    _mysqlend($sqlcon)
    EndFunc ;==>plusstunden

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

    Func adminmail($badguy, $opt)
    $mail = ObjCreate("CDO.Message")
    With $mail

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

    $mail.From = "Zeiterfassung@blubb.com"
    $mail.To = "admin@blubb.com"

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

    If $opt = "bad" Then $mail.Subject = "Zeiterfassung - Passwort falsch"
    If $opt = "login" Then $mail.Subject = "Zeiterfassung - Admin Login"

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

    $mail.HTMLBody = _Now() & ": " & $badguy

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

    $mail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    $mail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "192.168.10.232"
    $mail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
    $mail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 0

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

    $mail.Configuration.Fields.Update
    $mail.Send
    EndWith
    EndFunc ;==>adminmail

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

    Func export($user)

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

    If StringInStr($user, " / ") Then
    $user = StringSplit($user, " / ")
    $userid = $user[2]
    $user = $user[1]
    EndIf

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

    Local $blubb
    Local $xls = _ExcelBookNew(0)
    Local $xfle = @DesktopDir & "" & $user & "_" & @HOUR & @MIN & @SEC & ".xls"

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

    _ExcelFontSetProperties($xls, 1, 1, 1, 8, True)
    _ExcelWriteCell($xls, "Index", 1, 1)
    _ExcelWriteCell($xls, "Datum", 1, 2)
    _ExcelWriteCell($xls, "Kommen", 1, 3)
    _ExcelWriteCell($xls, "Gehen", 1, 4)
    _ExcelWriteCell($xls, "Stunden", 1, 5)
    _ExcelWriteCell($xls, "Urlaub", 1, 6)
    _ExcelWriteCell($xls, "Krank", 1, 7)
    _ExcelWriteCell($xls, "Feiertag", 1, 8)

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

    If FileExists($xfle) Then FileDelete($xfle)

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

    $ganzeliste = StringSplit($ganzeliste, "†")

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

    For $i = 1 To $ganzeliste[0] Step 1
    $blubb = StringSplit($ganzeliste[$i], "|")

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

    For $x = 1 To $blubb[0]
    If StringLen($blubb[$x]) >= 1 Then _ExcelWriteCell($xls, $blubb[$x], $i + 1, $x)
    If StringLen($blubb[$x]) = 0 Then _ExcelWriteCell($xls, "' ", $i + 1, $x)
    Next
    Next

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

    $var = FileSaveDialog("Speichern unter:", $xfle, "Exceldatei (*.xls)", -1, $xfle)

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

    If @error Then
    MsgBox(4096, "Speichern abgebrochen", "Datei nicht gespeichert!")
    Else
    _ExcelBookSaveAs($xls, $var)
    MsgBox(64, "Speichern erfolgreich", "Gespeichert unter: " & $var)
    EndIf

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

    _ExcelBookClose($xls)
    EndFunc ;==>export

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

    Func newpw()
    Local $oldpw = InputBox("Passwort ändern", "Altes Passwort eingeben:", "", "*")
    Local $newpw1 = InputBox("Passwort ändern", "Neues Passwort eingeben:", "", "*")
    Local $newpw2 = InputBox("Passwort ändern", "Neues Passwort erneut eingeben:", "", "*")

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

    If $newpw1 <> $newpw2 Or _StringEncrypt(1, $oldpw, "sqlprojekt2013", 2) <> IniRead("user.ini", "pass", "pw", "") Or $newpw1 = "" Or $newpw2 = "" Then
    MsgBox(0, "Passwort ändern", "Passwort nicht geändert!", 5)
    Else
    IniWrite("user.ini", "pass", "pw", _StringEncrypt(1, $newpw1, "sqlprojekt2013", 2))
    MsgBox(0, "Passwort ändern", "Passwort erfolgreich geändert!", 3)
    EndIf
    EndFunc ;==>newpw

    [/autoit]

    Habe zusätzlich noch 2 Screenshots der beiden GUIs angehängt.

    Hier die Struktur der beiden MySQL-Tabellen:

    Spoiler anzeigen

    Tabelle "stempelzeiten":
    | ID | int(11) | NO | PRI | NULL | auto_increment|
    | user_index | varchar(30) | YES | | NULL | |
    | datum | varchar(30) | YES | | NULL | |
    | rein | varchar(30) | YES | | NULL | |
    | raus | varchar(30) | YES | | NULL | |
    | stunden | varchar(4) | YES | | NULL | |
    | urlaub | varchar(10) | YES | | NULL | |
    | feiertag | varchar(10) | YES | | NULL | |
    | krank | varchar(10) | YES | | NULL | |

    Tabelle "Stunden":
    | ID | int(11) | YES | | NULL | |
    | Stunden | varchar(32) | YES | | NULL | |

    ...und der Inhalt der Excellisten:

    Spoiler anzeigen

    Format Excelliste "Stempelzeiten":
    Name Index Personal-Nr. Datum Beginn Ende Dauer Dauer Projekt Tätigkeit Summe Summe Soll Soll Saldo Saldo Bemerkung Urlaub Urlaub (Std.) Urlaub (Std.) krank krank (Std.) krank (Std.) extra frei extra frei (Std.) extra frei (Std.) Feiertage Feiertage (Std.) Feiertage (Std.)
    Nachname Vorname 1273 396 01.08.13 8:00 16:00 8:00 8,00 00000000 00000000 8:00 8,00 8:00 8,00 0:00 0,00
    Nachname Vorname 1273 396 02.08.13 8:00 12:02 4:02 4,03 00000000 00000000
    Nachname Vorname 1273 396 02.08.13 12:42 15:44 3:02 3,03 00000000 00000000 7:04 7,07 8:00 8,00 -0:56 -0,93
    Nachname Vorname 1273 396 05.08.13 8:00 12:02 4:02 4,03 00000000 00000000

    Format Excelliste "Stunden":
    August 2013 Name Personal-Nr. alter Übertrag neuer Übertrag
    1273 Nachname Vorname 214 -2,80 4,78
    1323 Nachname Vorname 452 2,80 -1,63
    1342 Nachname Vorname 501 -4,10 3,00

    ...uuuund Aufbau & Inhalt der "user.ini":

    Spoiler anzeigen

    Inhalt "user.ini":
    [users]
    vorname_nachname1=1273
    vorname_nachname2=1141

    [block]
    vormane_nachname=1

    [pass]
    pw=<verschlüsselt>

    So, das wärs erstmal.

    Vielleicht kann das jemand als Denkanstoß gebrauchen, glaube aber nicht, dass wer den Code 1:1 übernehmen kann :)

    P.S.: Durchkommentiert hab ich den Code mal nicht, dürfte aber ziemlich selbsterklärend sein (ausser für die Buchhaltung! :thumbup: )

    PP.S.: Getestete, Cheffchen vorgeführt und für "extrem geil" befunden :D

    Grüße,
    x0r

    Dateien

    Admin-GUI.png 9,62 kB – 0 Downloads User-GUI.png 29,43 kB – 0 Downloads
  • If ... Then ... Problem

    • x0r
    • 23. September 2013 um 11:44

    war auch mehr ein hinweis an dich *rausred* 8)

  • Von Hex zu Binär und wieder zurück

    • x0r
    • 23. September 2013 um 08:06

    der is gut:

    [autoit]

    $binary = StringReplace($binary, "0000", "0")

    [/autoit]

    :D

    gibt übrigens massenweise funktionen, schreib dir doch selbst eine, in der das alles errechnet, statt ersetzt wird, dann lernst es gescheit :)

  • If ... Then ... Problem

    • x0r
    • 23. September 2013 um 08:04

    Hoi,

    [autoit]

    $rechnung3 = 0,1 * $v3

    [/autoit]

    wird statt "," nicht "." verwendet?

    [autoit]

    $rechnung3 = 0.1 * $v3

    [/autoit]

    Gruß,
    x0r

  • Was mach ich falsch?

    • x0r
    • 21. September 2013 um 16:24

    ach das meinst du!

    du kannst "uparrow" doch einfach per "HotKeySet()" blockieren?

    oder du bastelst dir eine separate funktion dafür (vorsicht, noobhafte formatierung :D):

    [autoit]

    hotkeyset("{up}", "stop")

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

    func stop()
    send("")
    endfunc

    [/autoit]

    gruß,
    x0r

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™