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

Beiträge von Xenon

  • Überprüfen ob bei einer ListView mit selektiertem Item eine Taste gedrückt wurde

    • Xenon
    • 25. Juni 2013 um 16:15

    Ich würde HotKeySet aus der While-Schleife entfernen, das ist sinnlos.

    Besser so:

    [autoit]

    HotKeySet("{DEL}", "DeleteListViewElement")
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

    [/autoit]


    MfG Xenon

  • ScreenLock - Desktop sperren mit Muster

    • Xenon
    • 24. Juni 2013 um 21:51
    Zitat von m-obi

    Das ist sonst unsaubere Programmierung.

    Da hast du natürlich recht.

    Bei mir war die Farbe auch einmal schwarz, aber da das dann plötzlich nicht mehr so war, habe ich mir nichts dabei gedacht...
    Noch einmal vielen Dank :)

    MfG Xenon

  • ScreenLock - Desktop sperren mit Muster

    • Xenon
    • 24. Juni 2013 um 21:39
    Zitat von James1337

    AutoIt wandelt zwischen den Datentypen hin und her wie es gerade nötig ist, also sollte das kein Problem sein.


    Ich habe es jetzt trotzdem mal geändert, sollte jetzt so gehen.

    Xenon

  • ScreenLock - Desktop sperren mit Muster

    • Xenon
    • 24. Juni 2013 um 21:26

    Danke m-obi für den Hinweis. :thumbup:
    Das wird natürlich sofort geändert.

    Trotzdem wundert es mich, das es auch so geklappt hat. :huh: Komisch...

    Vielen Dank
    Xenon

  • Wert wird nicht in Variable gespeichert?

    • Xenon
    • 24. Juni 2013 um 19:34

    Dein $FileArray[100] wird jeden Durchlauf der Schleife gelöscht.

    (direkt nach $nMsg = GUIGetMsg ())

    Edit: Mist, Andy war schneller!

    MfG Xenon

  • Wert wird nicht in Variable gespeichert?

    • Xenon
    • 24. Juni 2013 um 18:55
    Zitat von CrazyAutoIT

    Nein da der Wert zugewiesen wird bevor überhaupt ein Element der ListView hinzugefügt wird (siehe Post #4).


    Ich sehe nicht, dass da ein Element hinzugefügt wird... ?(

    Zitat von CrazyAutoIT

    $counter = 0

    Also muss das Array irgendwie auf der Strecke der einzelnen Switch-Case Anweisungen verloren gegangen sein :(

    Nein, das heißt, dass das "ListView" 0 Elemente hat...
    Fügst du da überhaupt welche hinzu ?

  • Wert wird nicht in Variable gespeichert?

    • Xenon
    • 24. Juni 2013 um 18:44

    Aber dann müsstest du doch bei

    [autoit]

    $FileCounter = _GUICtrlListView_GetItemCount($ListView1)

    [/autoit]

    auch eine "-1" dranhängen, da das sonst auch "1" ist.


    Versuch mal:

    [autoit]

    $FileCounter = _GUICtrlListView_GetItemCount($ListView1)
    $InputFile = FileOpenDialog("Gepackte Dateien speichern...", "Bibliotheken\Dokumente", "Alle Dateien (*.*)|Archive (*.zip)")
    $FileArray[$FileCounter] = $InputFile
    $counter = _GUICtrlListView_GetItemCount($ListView1)
    MsgBox (0, "", "FileCounter:" & $FileCounter & " counter:" & $counter & " FileArray[$FileCounter]:" & $FileArray[$FileCounter] & " FileArray[$counter]:" & $FileArray[$counter])

    [/autoit]

    Und sag mal, was ausgegeben wird.

    MfG Xenon

  • Wert wird nicht in Variable gespeichert?

    • Xenon
    • 24. Juni 2013 um 18:31
    Zitat von CrazyAutoIT

    Seltsamerweise führt ein "Debug to MsgBox" auf $counter dazu, dass einmal eine MsgBox mit dem Return-Wert "0" und dann gleich wieder eine mit dem Return-Wert "1" aufgeht?


    Du hast ja auch eine For-Schleife, die $counter auf 0 setzt und dann immer um 1 erhöht, bis $counter = ...ItemCount($ListView1).
    (schau dir mal For-Schleifen in der Hilfe an)

    Probier doch mal:

    [autoit]

    $FileCounter = _GUICtrlListView_GetItemCount($ListView1)
    $InputFile = FileOpenDialog("Gepackte Dateien speichern...", "Bibliotheken\Dokumente", "Alle Dateien (*.*)|Archive (*.zip)")
    $FileArray[$FileCounter] = $InputFile
    $counter = _GUICtrlListView_GetItemCount($ListView1)
    _BuildInZIP($GetArchivePath & "\" & GetFileName($FileArray[$counter]), $FileArray[$counter])

    [/autoit]


    (das ist ohne Schleife und nur zum Test ;) )

    MfG Xenon

  • Wert wird nicht in Variable gespeichert?

    • Xenon
    • 24. Juni 2013 um 18:19

    Du schreibst in

    $FileArray[_GUICtrlListView_GetItemCount($ListView1)], liest aber bis maximal

    $FileArray[_GUICtrlListView_GetItemCount($ListView1) -1] (bis dahin geht die For-Schleife), also einen Index niedriger aus.

    Dann kann doch nicht das richtige Ergebnis kommen. ;)

    MfG Xenon

  • Wert wird nicht in Variable gespeichert?

    • Xenon
    • 24. Juni 2013 um 18:04

    Hallo CrazyAutoIT,

    Vielleicht postest du mal etwas mehr Code als diesen kleinen Ausschnitt, zum Beispiel, wie du $counter und $FileCounter initialisierst und änderst.

    An dem bisherigen Codeausschnitt kann man leider nicht viel erkennen... ;)

    MfG Xenon

  • ScreenLock - Desktop sperren mit Muster

    • Xenon
    • 24. Juni 2013 um 17:24

    Hi Joriktos,

    Ich meinte eher den unteren Teil :D :

    Kiosk Mode unter Windows 7 absichern


    Tasten deaktivieren

    Eine Möglichkeit alle Tastenkombinationen zu unterbinden ist das komplette Deaktivieren einzelner Tasten, wie z.B. die Windows-Tasten, STRG, ALT, DEL, F10, sowie die Kontextmenü-Taste. Hierzu muss in der Registry unter

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout

    den Wert des Eintrags Keyboard Layout geändert werden. Am Einfachsten geht dies über ein Reg-File mit folgendem Inhalt:

    Windows Registry Editor Version 5.00
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
    "Scancode Map"=hex:00,00,00,00,00,00,00,00,09,00,00,00,00,00,5b,e0,00,00,5c,e0,00,00,5d,e0,00,00,44,00,00,00,1d,00,00,00,38,00,00,00,1d,e0,00,00,38,e0,00,00,00,00

    Dieser Text wird in einen Texteditor kopiert und die Datei mit beliebigem Name sowie der Dateiendung „.reg“ abgespeichert und anschließend ausgeführt. Durch den Vorgang wird der Inhalt der Scancode Map überschrieben und damit die Tasten Windows-Taste, STRG, ALT, DEL, F10, sowie die Kontextmenü-Taste deaktiviert.

    Die Funktionsweise (Hinweis: alle Werte sind hexadezimal):
    Der Wert 09 nach den ersten 16 Nullen definiert die Anzahl der Tasten-Mappings. Dies sind in unserem Fall 9. Anschließend kommen 10 Nullen bis die eigentlichen Mappings beginnen. Hierbei bedeutet „5b e0 00 00“ das Deaktivieren der linken Windows-Taste. Im Folgenden werden alle verwendeten Mappings aufgelistet:

    5b e0 – linke Windows-Taste
    5c e0 – rechte Windows-Taste
    5d e0 – Kontextmenü-Taste
    44 00 – F10
    1d 00 – linke Strg-Taste
    38 00 – linke Alt-Taste
    1d e0 – rechte Strg-Taste
    38 e0 – rechte Alt-Taste

    ACHTUNG:
    Das systemweite Deaktivieren der Tasten STRG, ALT und ENTF führt dazu, dass diese Tasten auch beim Anmeldebildschirm nicht funktionieren. Somit lässt sich die Sichere Anmeldung mit STRG+ALT+ENTF nicht verwenden, die daher unbedingt vorher über die Benutzerkontensteuerung deaktiviert werden muss, weil sich der Nutzer sonst vom Zugriff auf das System ausschließt


    Das Beispiel muss natürlich noch abgewandelt werden, damit z.B. nur die Alt-Taste deaktiviert wird.

    Aber meiner Meinung nach ist es gar nicht notwendig, Strg+Alt+Entf zu deaktivieren:
    Der Taskmanager bringt nichts (der wird sofort in den Hintergrund gerückt) und Abmelden/Herunterfahren/... kann man auch durch den POWER-Knopf erreichen.

    MfG Xenon

  • Herzlichen Glückwunsch ...

    • Xenon
    • 24. Juni 2013 um 16:14

    HappyBirthday!

    :party: :party: :party: :party: :party:

    Besonders natürlich an Blume zum 18. Geburtstag! :party: :party: :party:

  • Heyho

    • Xenon
    • 23. Juni 2013 um 21:13

    Hallo chungwarlet,

    Herzlich Willkommen im Forum
    und viel Spaß hier! :)

    MfG Xenon

  • ScreenLock - Desktop sperren mit Muster

    • Xenon
    • 23. Juni 2013 um 07:24

    Hallo,

    @Autolaser/Joriktos:

    Ich kenne nur die Möglichkeit, eine Taste systemweit zu deaktivieren, siehe hier.

    Dazu ist jedoch ein Neustart nötig, deshalb kann ich so etwas nicht in mein Programm einbauen.
    Wenn ihr diese Möglichkeit jedoch nutzen möchtet, könntet ihr z.B. nur die Alt-Taste deaktivieren, dann funktioniert Strg+Alt+Entf auch nicht mehr.

    Aber vorsicht: wenn ihr Strg+Alt+Entf bei der Anmeldung benötigt, das klappt dann auch nicht mehr. ;)

    Ob es noch eine andere Möglichkeit gibt, würde mich auch sehr interessieren.

    MfG Xenon

  • ScreenLock - Desktop sperren mit Muster

    • Xenon
    • 22. Juni 2013 um 18:13

    So, ich habe jetzt eine neue Version des Skriptes hochgeladen:

    Die schwarze, nicht transparente Fläche ist entfernt und noch ein paar kleine andere Änderungen wurden gemacht.

    Download siehe Post 1.

    MfG Xenon

  • ScreenLock - Desktop sperren mit Muster

    • Xenon
    • 22. Juni 2013 um 17:56

    Vielen Dank für eure Rückmeldungen!

    @TheShadowAE:
    Falls du _GDIPlus_GraphicsSetSmoothingMode meinst, das hatte ich schon gemacht. :D

    Sirocool:
    Ich hoffe, es klappt jetzt! :)

    Ich bin gerade noch beim Verbessern, ihr könnt mir gerne noch Tipps geben, was ich besser machen könnte. ;)

    MfG Xenon

  • ScreenLock - Desktop sperren mit Muster

    • Xenon
    • 20. Juni 2013 um 22:19

    Hallo liebe AutoIt-Community,

    ich möchte euch hier mein erstes veröffentlichtes Skript vorstellen: ScreenLock.

    Sicherlich kennt fast jeder von euch die Handysperre per Muster. Diese habe ich nun in AutoIt umgesetzt, da mir der normale Windows-Sperrbildschirm ziemlich langweilig erschien und ich nicht jedesmal mein Passwort eintippen wollte.

    Beim Sperren erscheint eine Vollbild-GUI, auf welcher zum Entsperren das Muster eingegeben werden muss.
    Es gibt außerdem ein Skript zum konfigurieren der Farbe, der Abdunklung des Hintergrunds und natürlich des Musters. :D

    Neue Version:

    Die Anzahl der Kreise ist nicht mehr auf 3 pro Spalte/Zeile festgelegt, sondern einstellbar.
    Es ist auch die Auswahl nur eines Kreises als Muster möglich.

    ScreenLock.au3
    [autoit]

    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.8.1
    Author: Xenon

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

    Script Function: Locks the screen, for unlocking a code is needed.

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

    #ce ----------------------------------------------------------------------------

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

    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GDIPlus.au3>
    #include <WinAPI.au3>
    #include "BlockInputEx.au3"
    #include <Misc.au3>
    #include <Array.au3>
    #include <String.au3>

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

    Global $bEditMode = False
    Global $sIniSection = "ScreenLock"
    If $CmdLine[0] >= 1 And $CmdLine[1] = "ChangeCode" Then
    $bEditMode = True
    $sIniSection = "ScreenLockSettings"
    EndIf

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

    Global $sSettingsIni = @ScriptDir & "\Settings.ini"

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

    Global $nCirclesPerRow = Int(IniRead($sSettingsIni, $sIniSection, "Circles", 3))
    Global $nCircles = $nCirclesPerRow*$nCirclesPerRow
    Global $nRadius = Int((@DesktopHeight-100)/($nCirclesPerRow+($nCirclesPerRow+1)*0.5))*0.5
    Global $aState[$nCircles]
    Global $aOrder[$nCircles]
    Global $nLastCircle = -1
    Global $bRun = True
    Global $bCodeRight = True

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

    For $i = 0 To $nCircles-1
    $aOrder[$i] = -1
    Next

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

    ; Tastatur sperren
    If Not $bEditMode Then _BlockInputEx(3)

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

    ; GUI erstellen
    $hGUI = GUICreate("ScreenLock", @DesktopWidth + 10, @DesktopHeight + 10, -5, -5, $WS_POPUP, $WS_EX_TOPMOST)
    GUICtrlCreatePic("",0,0, @DesktopWidth + 10,@DesktopHeight + 10)
    ; Farbe = schwarz
    GUISetBkColor (0x000000, $hGUI)
    ; Transparenz aus Settings.ini
    WinSetTrans ($hGUI, "", IniRead($sSettingsIni, $sIniSection, "Transparency", 125))

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

    ; Eingabefeld erstellen
    $hChildInput = GUICreate("ScreenLockInput", @DesktopHeight-100, @DesktopHeight - 100, Int((@DesktopWidth-@DesktopHeight+100)*0.5)+10, 100+10, $WS_POPUP,$WS_EX_LAYERED+$WS_EX_MDICHILD+$WS_EX_TOPMOST, $hGUI)
    GUISetBkColor(0x050505, $hChildInput)
    _WinAPI_SetLayeredWindowAttributes($hChildInput, 0x050505)

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

    ; Text-GUI
    $hChildCaption = GUICreate("ScreenLockCaption", @DesktopHeight-100, 50, Int((@DesktopWidth-@DesktopHeight+100)*0.5)+10, 25+10, $WS_POPUP,$WS_EX_LAYERED+$WS_EX_MDICHILD+$WS_EX_TOPMOST, $hGUI)
    GUISetBkColor(0xABCDEF, $hChildCaption)
    $hLabelCaption = GUICtrlCreateLabel("Code eingeben", (@DesktopHeight-219-100)*0.5, 8, 219, 41)
    GUICtrlSetFont(-1, 25, 400, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, IniRead($sSettingsIni, $sIniSection, "Color", "0x00FF00"))
    _WinAPI_SetLayeredWindowAttributes($hChildCaption, 0xABCDEF)

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

    ; Alles anzeigen
    GUISetState(@SW_SHOW, $hGUI)
    GUISetState(@SW_DISABLE, $hGUI)
    GUISetState(@SW_SHOW, $hChildInput)
    GUISetState(@SW_SHOW, $hChildCaption)

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

    _GDIPlus_Startup()

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

    ; Buffer erstellen
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hChildInput)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics(@DesktopHeight-100, @DesktopHeight-100, $hGraphic)
    $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    _GDIPlus_GraphicsSetSmoothingMode ($hBuffer, 2)
    _GDIPlus_GraphicsSetSmoothingMode ($hGraphic, 2)

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

    ; Brushs und Pens erstellen
    $hBrushActivated = _GDIPlus_BrushCreateSolid (Dec("FF" & StringReplace(IniRead($sSettingsIni, $sIniSection, "Color", "0x00FF00"), "0x", "")))
    $hBrushInvisible = _GDIPlus_BrushCreateSolid (0xFF050505)
    $hBrushRed = _GDIPlus_BrushCreateSolid (0xFFFF0000)
    $hBrushWhite = _GDIPlus_BrushCreateSolid (0xFFFFFFFF)
    $hPenActivated = _GDIPlus_PenCreate (Dec("FF" & StringReplace(IniRead($sSettingsIni, $sIniSection, "Color", "0x00FF00"), "0x", "")), 6, 2)
    $hPenRed = _GDIPlus_PenCreate (0xFFFF0000, 6, 2)
    $hPenBlack = _GDIPlus_PenCreate (0xFF000000, 12, 2)

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

    ; Alles zeichnen
    _Render ()

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

    ; Dauerschleife
    While $bRun

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

    ; Andere Fenster in den Hintergrund
    If Not WinActive ("ScreenLockInput") And Not $bEditMode Then
    WinActivate ("ScreenLockInput")
    EndIf

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

    ; Überprüfen, ob linke Maustaste noch gedrückt, wenn ja, Abstand zu allen Kreisen berechen:
    $aCursorInfo = GUIGetCursorInfo ($hChildInput)
    If $aCursorInfo[2] Then
    $MousePosition = MouseGetPos ()
    For $i = 0 To $nCirclesPerRow-1 ; Alle Kreise durchlaufen
    For $j = 0 To $nCirclesPerRow-1
    If Sqrt (($MousePosition[0] - ($i *$nRadius*3+2*$nRadius + Int((@DesktopWidth-@DesktopHeight+100)*0.5)))*($MousePosition[0] - ($i *$nRadius*3+2*$nRadius + Int((@DesktopWidth-@DesktopHeight+100)*0.5))) + _
    ($MousePosition[1] - ($j *$nRadius*3+2*$nRadius + 100)) * ($MousePosition[1] - ($j *$nRadius*3+2*$nRadius + 100))) <= $nRadius Then ;Abstand nach Pythagoras

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

    $aState[$i*$nCirclesPerRow+$j] = 1
    If $nLastCircle <= $nCircles-1 And _ArraySearch ($aOrder, $i * $nCirclesPerRow + $j) = -1 Then
    $nLastCircle += 1
    $aOrder[$nLastCircle] = $i * $nCirclesPerRow + $j
    _Render ()
    EndIf

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

    If $nLastCircle >= $nCircles-1 And Not _CheckCode () Then
    _Render (True)
    Sleep (1500)
    For $i = 0 To $nCircles-1
    $aOrder[$i] = -1
    $aState[$i] = 0
    Next
    $nLastCircle = -1
    _Render ()
    EndIf
    EndIf
    Next
    Next
    Else
    If $aOrder[0] <> -1 And Not _CheckCode () Then
    _Render (True)
    Sleep (1500)
    For $i = 0 To $nCircles-1
    $aOrder[$i] = -1
    $aState[$i] = 0
    Next
    $nLastCircle = -1
    _Render ()
    EndIf
    EndIf
    WEnd

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

    ; Ressourcen freigeben
    _GDIPlus_PenDispose ($hPenActivated)
    _GDIPlus_PenDispose ($hPenRed)
    _GDIPlus_PenDispose ($hPenBlack)
    _GDIPlus_BitmapDispose ($hBitmap)
    _GDIPlus_BrushDispose ($hBrushActivated)
    _GDIPlus_BrushDispose ($hBrushInvisible)
    _GDIPlus_BrushDispose ($hBrushRed)
    _GDIPlus_BrushDispose ($hBrushWhite)
    _GDIPlus_GraphicsDispose($hGraphic)

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

    _GDIPlus_Shutdown()

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

    If Not $bEditMode Then _BlockInputEx (0) ; Tastatur entsperren

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

    Func _CreateCircle ($nColor, $nCenterX, $nCenterY) ; $nColor - Farbe (0-weiß, 1-aktive Farbe, 2-Fehler) ; $nCenterX/Y - Mittelpunkt des zu zeichnenden Kreises (Koordinaten)
    Local $nWidth1 = 10
    Local $nWidth2 = 20
    Local $nWidth3 = 60
    Local $hBrush
    If $nColor = 0 Then
    $hBrush = _GDIPlus_BrushClone ($hBrushWhite)
    ElseIf $nColor = 1 Then
    $hBrush = _GDIPlus_BrushClone ($hBrushActivated)
    ElseIf $nColor = 2 Then
    $hBrush = _GDIPlus_BrushClone ($hBrushRed)
    EndIf
    _GDIPlus_GraphicsFillEllipse($hBuffer, $nCenterX - $nRadius , $nCenterY - $nRadius , 2*$nRadius , 2*$nRadius)
    _GDIPlus_GraphicsFillEllipse($hBuffer, $nCenterX - $nRadius + Round($nRadius/100*$nWidth1), $nCenterY - $nRadius + Round($nRadius/100*$nWidth1), 2*$nRadius - Round($nRadius/100*2*$nWidth1), 2*$nRadius - Round($nRadius/100*2*$nWidth1), $hBrush)
    _GDIPlus_GraphicsFillEllipse($hBuffer, $nCenterX - $nRadius + Round($nRadius/100*$nWidth2), $nCenterY - $nRadius + Round($nRadius/100*$nWidth2), 2*$nRadius - Round($nRadius/100*2*$nWidth2), 2*$nRadius - Round($nRadius/100*2*$nWidth2))
    _GDIPlus_GraphicsFillEllipse($hBuffer, $nCenterX - $nRadius + Round($nRadius/100*$nWidth3), $nCenterY - $nRadius + Round($nRadius/100*$nWidth3), 2*$nRadius - Round($nRadius/100*2*$nWidth3), 2*$nRadius - Round($nRadius/100*2*$nWidth3), $hBrush)
    _GDIPlus_BrushDispose ($hBrush)
    EndFunc ; _CreateCircle ($nColor, $nCenterX, $nCenterY)

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

    Func _Render ($bWrongCode = False) ; $bWrongCode - Falscher Code eingegeben? (standart: nein)

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

    ; unsichtbarer Hintergrund
    _GDIPlus_GraphicsFillRect ($hBuffer, -1, -1, @DesktopWidth+2, @DesktopWidth+98, $hBrushInvisible)

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

    If Not $bWrongCode Then

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

    ; kein falscher Code -> Standardfarben
    If Not $bCodeRight Then
    GUICtrlSetData ($hLabelCaption, "Code eingeben")
    GUICtrlSetColor($hLabelCaption, IniRead($sSettingsIni, "ScreenLock", "Color", "0x00FF00"))
    $bCodeRight = True
    EndIf

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

    ; alle Linien zeichnen
    For $i = 1 To $nCircles-1
    If $aOrder[$i] = -1 Then ExitLoop
    _GDIPlus_GraphicsDrawLine ($hBuffer, Int($aOrder[$i-1]/$nCirclesPerRow) *$nRadius*3+2*$nRadius, Mod($aOrder[$i-1], $nCirclesPerRow)*$nRadius*3+2*$nRadius, Int($aOrder[$i]/$nCirclesPerRow) *$nRadius*3+2*$nRadius, Mod($aOrder[$i], $nCirclesPerRow)*$nRadius*3+2*$nRadius, $hPenBlack)
    _GDIPlus_GraphicsDrawLine ($hBuffer, Int($aOrder[$i-1]/$nCirclesPerRow) *$nRadius*3+2*$nRadius, Mod($aOrder[$i-1], $nCirclesPerRow)*$nRadius*3+2*$nRadius, Int($aOrder[$i]/$nCirclesPerRow) *$nRadius*3+2*$nRadius, Mod($aOrder[$i], $nCirclesPerRow)*$nRadius*3+2*$nRadius, $hPenActivated)
    Next

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

    ;Kreise erstellen
    For $i = 0 To $nCirclesPerRow-1
    For $j = 0 To $nCirclesPerRow-1
    _CreateCircle ($aState[$i*$nCirclesPerRow+$j], $i*$nRadius*3+2*$nRadius, $j*$nRadius*3+2*$nRadius)
    Next
    Next

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

    Else
    ; falscher Code -> rote Farbe

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

    If $bCodeRight Then
    GUICtrlSetData ($hLabelCaption, "Falscher Code")
    GUICtrlSetColor($hLabelCaption, 0xFF0000)
    $bCodeRight = False
    EndIf

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

    ; alle Linien zeichnen
    For $i = 1 To $nCircles-1
    If $aOrder[$i] = -1 Then ExitLoop
    _GDIPlus_GraphicsDrawLine ($hBuffer, Int($aOrder[$i-1]/$nCirclesPerRow) *$nRadius*3+2*$nRadius, Mod($aOrder[$i-1], $nCirclesPerRow)*$nRadius*3+2*$nRadius, Int($aOrder[$i]/$nCirclesPerRow)*$nRadius*3+2*$nRadius, Mod($aOrder[$i], $nCirclesPerRow)*$nRadius*3+2*$nRadius, $hPenBlack)
    _GDIPlus_GraphicsDrawLine ($hBuffer, Int($aOrder[$i-1]/$nCirclesPerRow) *$nRadius*3+2*$nRadius, Mod($aOrder[$i-1], $nCirclesPerRow)*$nRadius*3+2*$nRadius, Int($aOrder[$i]/$nCirclesPerRow)*$nRadius*3+2*$nRadius, Mod($aOrder[$i], $nCirclesPerRow)*$nRadius*3+2*$nRadius, $hPenRed)
    Next

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

    ;Kreise erstellen
    For $i = 0 To $nCirclesPerRow-1
    For $j = 0 To $nCirclesPerRow-1
    _CreateCircle (2, $i*$nRadius*3+2*$nRadius, $j*$nRadius*3+2*$nRadius)
    Next
    Next
    EndIf

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

    ; alles auf GUI anzeigen
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, @DesktopHeight-100, @DesktopHeight-100)

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

    EndFunc

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

    Func _CheckCode ()
    Local $sCode = ""

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

    ; Code entsteht aus zusammensetzen der Reihenfolge zu einem String
    For $i = 0 To $nCircles-1
    If $aOrder[$i] <> -1 Then
    $sCode &= $aOrder[$i]
    Else
    ExitLoop
    EndIf

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

    Next

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

    If Not $bEditMode Then
    ; Wenn .ini-Code leer oder gleich dem Eingegebenen, dann Programm beenden
    If IniRead ($sSettingsIni, "ScreenLock", "Code", "") = "" Or IniRead ($sSettingsIni, "ScreenLock", "Code", "") == _StringEncrypt (1, $sCode, $sCode, 3) Then
    $bRun = False
    Return True ;richtiger Code
    EndIf
    Return False ;falscher Code
    Else
    IniWrite ($sSettingsIni, $sIniSection, "Code", _StringEncrypt (1, $sCode, $sCode, 3))
    $bRun = False
    Return True
    EndIf

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

    EndFunc

    [/autoit]
    ScreenLockSettings.au3
    [autoit]

    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.8.1
    Author: Xenon

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

    Script Function: Changes the settings for the ScreenLock script.

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

    #ce ----------------------------------------------------------------------------

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

    #include <Misc.au3>
    #include <GUIConstantsEx.au3>
    #include <Process.au3>

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

    ; Variablen
    Global $sSettingsIni = @ScriptDir & "\Settings.ini"
    Global $nColor = Dec(StringReplace(IniRead ($sSettingsIni, "ScreenLock", "Color", "0x00FF00"), "0x", ""))
    Global $nTempColor = 0
    Global $nTransparency = IniRead ($sSettingsIni, "ScreenLock", "Transparency", 125)
    Global $nCirclesPerRow = IniRead ($sSettingsIni, "ScreenLock", "Circles", 3)
    Global $sCode = IniRead ($sSettingsIni, "ScreenLock", "Code", "")
    #Region ### GUI

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

    $hGUI = GUICreate("ScreenLock - Optionen", 553, 492, 192, 124)
    $hLabel1 = GUICtrlCreateLabel("Transparenz des Sperrbildschirms:", 16, 40, 198, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $hTransparency = GUICtrlCreateSlider(40, 72, 425, 41)
    GUICtrlSetLimit(-1, 255, 1)
    GUICtrlSetData(-1, $nTransparency)
    $hLabel2 = GUICtrlCreateLabel("Transparent", 24, 120, 61, 17)
    $hLabel3 = GUICtrlCreateLabel("Nicht transparent", 416, 120, 85, 17)
    $hLabel4 = GUICtrlCreateLabel("Muster:", 16, 160, 46, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $hColor = GUICtrlCreateButton("Farbe ändern", 325, 250, 129, 33)
    $hCode = GUICtrlCreateButton("Muster ändern", 325, 315, 129, 33)
    $hLabel5 = GUICtrlCreateLabel ("Anzahl der Kreise je Reihe bzw. Spalte:", 20, 200)
    $hCircles = GUICtrlCreateSlider (210, 197, 250, 30)
    GUICtrlSetLimit(-1, 7, 2)
    GUICtrlSetData(-1, $nCirclesPerRow)
    $hLabel6 = GUICtrlCreateLabel (GUICtrlRead($hCircles), 470, 200)
    $hLabel7 = GUICtrlCreateLabel("Farbe der Kreise:", 20, 260)
    $hLabel8 = GUICtrlCreateLabel("Muster:", 20, 320)
    $hSave = GUICtrlCreateButton("OK", 145, 432, 121, 33)
    $hExit = GUICtrlCreateButton("Abbrechen", 275, 432, 121, 33)
    $hShowColor = GUICtrlCreateGraphic(150, 255, 150, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion

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

    GUICtrlSetBkColor($hShowColor, $nColor)
    GUICtrlSetData ($hTransparency, $nTransparency)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $hExit
    Exit
    Case $hColor
    ; Farbe wählen
    $nTempColor = _ChooseColor (2, $nColor, 2, $hGUI)
    If $nTempColor <> -1 And $nTempColor <> 0x000000 Then
    $nColor = $nTempColor
    GUICtrlSetBkColor($hShowColor, $nColor)
    EndIf
    Case $hCode

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

    IniWrite ($sSettingsIni, "ScreenLockSettings", "Color", "0x" & Hex($nColor, 6))
    IniWrite ($sSettingsIni, "ScreenLockSettings", "Transparency", GUICtrlRead($hTransparency))
    IniWrite ($sSettingsIni, "ScreenLockSettings", "Circles", GUICtrlRead($hCircles))

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

    If FileExists (@ScriptDir & "\ScreenLock.au3") Then
    _RunDos (@ScriptDir & "\ScreenLock.au3 ChangeCode")
    ElseIf FileExists (@ScriptDir & "\ScreenLock.exe") Then
    Run (@ScriptDir & "\ScreenLock.exe ChangeCode")
    Else
    MsgBox (16, "ScreenLock", "Es wurde im Skriptverzeichnis keine Datei" & @CRLF & "'ScreenLock.au3' bzw. 'ScreenLock.exe'" & @CRLF & "gefunden. Muster ändern nicht möglich!", 0, $hGUI)
    EndIf

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

    $sCode = IniRead ($sSettingsIni, "ScreenLockSettings", "Code", "")

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

    Case $hSave
    If $sCode = "" Then
    MsgBox (16, "ScreenLock", "Es wurde kein Code angegeben!", 0, $hGUI)
    Else
    IniWrite ($sSettingsIni, "ScreenLock", "Color", "0x" & Hex($nColor, 6))
    IniWrite ($sSettingsIni, "ScreenLock", "Transparency", GUICtrlRead($hTransparency))
    IniWrite ($sSettingsIni, "ScreenLock", "Circles", GUICtrlRead($hCircles))
    IniWrite ($sSettingsIni, "ScreenLock", "Code", $sCode)
    Exit
    EndIf

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

    Case $hCircles
    GUICtrlSetData ($hLabel6, GUICtrlRead($hCircles))

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

    EndSwitch
    WEnd

    [/autoit]

    Achtung: Damit die Konfigurationen wirksam werden, müssen sich beide .au3-Dateien im selben Ordner befinden.
    Weiterhin wird für das Sperren des Desktops die Datei "BlockInputEx.au3" benötigt, erhältlich hier.

    Tipp: Sollte man den Code jedoch einmal vergessen haben, so hilft immer nocht Strg+Alt+Entf! ;)


    Ich freue mich schon auf Kritik bzw. Lob.

    MfG Xenon :)

    Dateien

    ScreenLock.png 92,52 kB – 0 Downloads Optionen.PNG 39,43 kB – 0 Downloads ScreenLock.au3 10,61 kB – 515 Downloads ScreenLockSettings.au3 3,87 kB – 568 Downloads
  • Alles Gute Alina (und der ganze Rest)

    • Xenon
    • 19. Juni 2013 um 18:21

    Von mir auch alles Gute zum Geburtstag, Alina :party: :party: :party:

  • und wieder ein neuer

    • Xenon
    • 19. Juni 2013 um 18:19

    Willkommen hier im Forum, Neuland! :)

    Und ich kann chesstiger nur zustimmen. :thumbup:

    MfG Xenon

  • Array variable subscript badly formatted.

    • Xenon
    • 18. Juni 2013 um 17:21

    Hallo masterRobb,
    ich glaube, dein Fehler liegt hier:

    Zeile 6 fehlt die (hier rot markierte) Klammer: $4GewPicsDatei[$i+3][$x+3] = $4GewRedYellow

    Demzufolge ist der Index des Arrays falsch. (Das erkennst du ja an der Fehlermeldung.)

    MfG Xenon :)

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™