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

Beiträge von BugFix

  • Windows Anmeldebildschirm ausfüllen?

    • BugFix
    • 26. Januar 2007 um 19:28

    Wegen AutoAdminLogon s. auch hier.
    Wichtig ist auch der Eintrag: "ForceAutoLogon" auf "1" im gleichen Schlüssel "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon". Sonst wird spätestens, nachdem du dich unter einem anderen Konto angemeldet hast, "AutoAdminLogon" wieder auf "0" gesetzt.

  • Übersetzungstool

    • BugFix
    • 24. Januar 2007 um 22:03

    Hi, vielleicht hilft dir das etwas. In dem Bsp. habe ich Adressdaten von der Web-Site selektiert.
    Leider sehr schlechter html-Code. Mal wird ein Adressblock zwischen <L> und </L> eingefasst, beim nächsten endet er mit <P>.
    Grundsätzlich ist das Filtern recht simpel.
    Wenn du es absolut wasserdicht machen willst, solltest du ein Array mit allen html-Sonderzeichen erstellen und auf jede Zeile anwenden (Ersetzen).
    Die Steuerbefehle kriegst du einfach mit _StringBetween($str, "<", ">") selektiert.
    Schau mal in mein Bsp. .

    Spoiler anzeigen
    [autoit]

    #include <ie.au3>
    #include <file.au3>
    #include <array.au3>
    #include <string.au3>
    #include <GUIConstants.au3>

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

    Dim $quelle = "http://www.charite.de/dgsm/dgsm/ger/labors.htm"
    Dim $ziel = "\DGSM_Lab_raw.txt"
    Dim $fh, $line, $n = 1, $str
    Dim $arBlock[1], $arAdressen, $block = 0, $barwidth
    Dim $ae = "&auml;", $oe = "&ouml;", $ue = "&uuml;", $sz = "&szlig;", $ee = "&eacute;"
    $arBlock[0] = 0

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

    $Busy = GUICreate("",160,110,-1,-1,$WS_POPUP)
    GUISetBkColor(0x708090)
    $label_busy = GUICtrlCreateLabel("Einen Moment bitte." & @LF & @LF & "Die notwendigen Daten" _
    & @LF & "werden ermittelt..", 20, 15, 120, 100, $SS_CENTER)
    GUICtrlSetFont(-1, 10, Default,2)
    GUICtrlSetColor(-1, 0xF0E68C)
    GUISetState()

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

    InetGet($quelle, $ziel)
    $fh = FileOpen($ziel, 0)
    While 1
    $line = FileReadLine($fh, $n)
    If @error = -1 Then ExitLoop
    $str = StringStripWS($line, 1) ; führende Leerzeichen entfernen
    If $block = 0 Then
    If StringUpper(StringLeft($str, 4)) = "<LI>"Then
    $block = 1
    _Ersetzen()
    _ArrayAdd($arBlock, $str)
    $arBlock[0] += 1
    EndIf
    Else
    If $str <> "" Then
    If StringUpper(StringRight($str, 5)) = "</LI>" Or StringUpper(StringRight($str, 3)) = "<P>" Then
    $block = 0
    _Ersetzen()
    $arBlock[UBound($arBlock)-1] &= "|" & $str
    Else
    _Ersetzen()
    $arBlock[UBound($arBlock)-1] &= "|" & $str
    EndIf
    EndIf
    EndIf
    $n += 1
    WEnd
    FileClose($fh)
    GUISetState(@SW_HIDE, $Busy)
    _ArrayDisplay($arBlock, "Adressen")
    Exit

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

    Func _Ersetzen()
    $str = StringReplace($str, $ae, "ä")
    $str = StringReplace($str, $oe, "ö")
    $str = StringReplace($str, $ue, "ü")
    $str = StringReplace($str, $sz, "ß")
    $str = StringReplace($str, $ee, "é")
    $tmp = _StringBetween($str, "<", ">")
    If Not @error Then
    For $i = 0 To UBound($tmp)-1
    $str = StringReplace($str, "<" & $tmp[$i] & ">", "")
    Next
    EndIf
    EndFunc

    [/autoit]
  • GELÖST: IE vertikal abwärts scrollen durch Objekt

    • BugFix
    • 24. Januar 2007 um 08:50

    Nur ein Gedanke - ob es so geht weiss ich nicht.
    Vielleicht ist es möglich, dass du z.B.mit _IEFormGetCollection( ) die Objekte der Seite ausliest. Anschließend mit _IEAction( ByRef $o_object, "focus" ) die Objekte durchlaufen. Ist sicher nicht ein direkter vertikaler Durchlauf, aber in der Regel sollte die Objektindexierung schon von oben nach unten verlaufen.

  • "Zeilen vergleichen"

    • BugFix
    • 23. Januar 2007 um 20:08

    Hi, ich hab deine Funktion Unregister( ) mal etwas ausgebessert.
    Aber ich kann nicht richtig nachvollziehen, ob du mit dieser Logik den gewünschten Erfolg erzielst.
    Tipp: Anstatt Leerzeilen zwischen den Einzelschritten einzufügen, achte besser darauf, dass alle Unterschritte auch tiefer eingerückt sind. Das macht den Code wesentlich lesbarer.

    Spoiler anzeigen
    [autoit]

    Func Unregister()
    Dim $arFile, $write, $tmp, $last
    If _FileReadToArray($regsource, $arFile) = 0 Then
    MsgBox(0, 'Achtung', "Datei konnte nicht eingelesen werden!")
    Exit
    EndIf
    For $i = 1 To UBound($arFile) -1 ; -1 muß sein, sonst bist du ausserhalb des Arrays
    $tmp = $arFile[$i]
    If StringInStr($arFile[$i], "[") Then
    $tmp1 = _StringBetween($tmp, "[", "]") ; _StringBetween( ) gibt ein Array zurück!!
    $last1 = _StringBetween($last, "[", "]")
    If StringInStr($tmp1[0], $last1[0]) Then ; also auch als Array abfragen
    $last = $arFile[$i]
    _ArrayDelete($arFile, $i) ; -> warum?
    Else
    If Not StringInStr($tmp1[0], $last1[0]) Then ; hier das Gleiche (Array)
    FileWriteLine($UnRegScript, $arFile[$i])
    $last = $arFile[$i]
    EndIf
    EndIf
    EndIf
    Next
    FileClose($UnRegScript)
    Exit
    EndFunc ;==>Unregister

    [/autoit]
  • "Zeilen vergleichen"

    • BugFix
    • 23. Januar 2007 um 09:46

    Also bei mir läuft es. Ich vermute, du hast bei der Anpassung an deine Variablennamen einen Fehler drin. Aufgrund des Fehlermeldung tippe ich auf die Rückgabevariable von _StringBetween( ) .

    Ich habe jetzt mal die von dir verwendeten Variablennamen eingebaut, in der Hoffnung, dass ich richtig liege in meiner Einschätzung, welche wofür ist. ;)
    Außerdem habe ich jetzt mal jede Zeile kommentiert, damit du genau nachvollziehen kannst, was wo passiert.

    Spoiler anzeigen
    [autoit]

    #include <File.au3>
    #include <String.au3>

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

    Dim $arFile ; das Array nimmt die Quelldatei auf
    Dim $regsource = "Source.txt" ; der Pfad der Quelldatei
    Dim $UnRegScript = "WriteBack.txt" ; der Pfad der Ergebnisdatei
    Dim $write ; das Filehandle für die zum Schreiben geöffnete Ergebnisdatei
    Dim $tmp, $str ; temporäre Variablen
    Dim $last = "" ; enthält den zuletzt geschriebenen Eintrag

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

    If _FileReadToArray($regsource, $arFile) = 0 Then
    MsgBox(0, 'Achtung', "Datei konnte nicht eingelesen werden!")
    Exit
    EndIf
    $write = FileOpen($UnRegScript, 1) ; Zuweisung Datei an Filehandle
    For $i = 1 To $arFile[0]
    $tmp = $arFile[$i] ; aktuelle Zeile
    $str = _StringBetween($tmp, "[", "]") ; Zeileninhalt zwischen den Klammern an Arrayvariable
    If $last = "" Then ; ausführen bei erster Zeile
    FileWriteLine($write, $str[0]) ; Zeile in Zieldatei schreiben
    $last = $str[0] ; Zuweisen letzter geschriebener Wert
    Else ; für alle anderen Zeilen
    If Not StringInStr($str[0], $last) Then ; wenn letzter Eintrag nicht in aktueller Zeile -> dann
    FileWriteLine($write, $str[0]) ; Zeile in Zieldatei schreiben
    $last = $str[0] ; Zuweisen letzter geschriebener Wert
    EndIf
    EndIf
    Next
    FileClose($write) ; Filehandle schließen
    Exit

    [/autoit]
  • "Zeilen vergleichen"

    • BugFix
    • 22. Januar 2007 um 22:26

    Sorry, aber mir ist in meinem Code ein Fehler unterlaufen. Ich hatte nicht dran gedacht, dass _StringBetween( ) ein Array zurückgibt. ;)
    Also hier das funktionsfähige Ergebnis.
    In deiner Auflistung der Keys widersprichst du aber deiner Regel, dass du alle Hauptschlüssel auslesen willst.
    Diese beiden Zeilen willst du nicht haben:

    Zitat

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\AutoIt3.exe
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Aut2Exe.exe

    Sie entsprechen aber deiner Regel, dass der Schlüssel das erste Mal auftreten muss und nicht im vorigen enthalten ist.

    Spoiler anzeigen
    [autoit]

    #include <File.au3>
    #include <String.au3>

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

    Dim $arFile, $pfadRead = "Source.txt", $pfadWrite = "WriteBack.txt", $write, $tmp, $str, $last = ""

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

    If _FileReadToArray($pfadRead, $arFile) = 0 Then
    MsgBox(0, 'Achtung', "Datei konnte nicht eingelesen werden!")
    Exit
    EndIf
    $write = FileOpen($pfadWrite, 1)
    For $i = 1 To $arFile[0]
    $tmp = $arFile[$i]
    $str = _StringBetween($tmp, "[", "]")
    If $last = "" Then
    FileWriteLine($write, $str[0])
    $last = $str[0]
    Else
    If Not StringInStr($str[0], $last) Then
    FileWriteLine($write, $str[0])
    $last = $str[0]
    EndIf
    EndIf
    Next
    FileClose($write)
    Exit

    [/autoit]
  • "Zeilen vergleichen"

    • BugFix
    • 21. Januar 2007 um 21:16

    Du liest ja auch nur eine Zeile ein, was willst du da vergleichen.
    Besser _FileReadToArray() und dann die Einträge abarbeiten.
    Bzw. wenn du aus der Reg liest - gleich in ein Array einlesen und durch dieses iterieren.

  • Textzeile auslesen und ins clipboard kopieren ?

    • BugFix
    • 21. Januar 2007 um 20:40

    Anhand von pee's Beispiel:
    For $i = 1 to 1000
    ClipPut( "http://lol.de/" & FileReadLine("C:\Text.txt", $i))
    Sleep(60000)
    Next

  • Windows-Account: Admin oder Eingeschränkt ?

    • BugFix
    • 21. Januar 2007 um 20:10
    Zitat

    Wieso speicherst Du das PW nicht mittels _StringEncrypt in der Registry ab???


    Weil Windows Logon das Passwort im Klartext fordert. AutoAdminLogon ist ja keine Erfindung von mir, sondern eine Windows-eigene Funktion.

    Den Tipp mit den Admins werde ich gleich mal testen, thx.

  • "Zeilen vergleichen"

    • BugFix
    • 21. Januar 2007 um 20:04

    Hier eine Variante von mir.
    So, wie ich das lese, willst du nur mit der vorhergehenden Zeile vergleichen.

    [autoit]

    ; aktuelle Prod oder Beta benutzen
    #include <File.au3>
    #include <String.au3>

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

    Dim $arFile, $pfadRead = "D:\beispiel.txt", $pfadWrite = "D:\WriteBack.txt", $write, $tmp, $last = ""

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

    If _FileReadToArray($pfadRead, $arFile) = 0 Then
    MsgBox(0, 'Achtung', "Datei konnte nicht eingelesen werden!")
    Exit
    EndIf
    $write = FileOpen($pfadWrite, 1)
    For $i = 1 To $arFile[0]
    $tmp = $arFile[$i]
    $tmp = _StringBetween($tmp, "[", "]")
    If $last = "" Then
    FileWriteLine($write, $tmp)
    $last = $tmp
    Else
    If Not StringInStr($last, $tmp) Then
    FileWriteLine($write, $tmp)
    $last = $tmp
    EndIf
    EndIf
    Next
    FileClose($write)
    Exit

    [/autoit]
  • Windows-Account: Admin oder Eingeschränkt ?

    • BugFix
    • 21. Januar 2007 um 15:41

    Hi,
    ich habe ein Tool geschrieben um AutoAdminLogon zu aktivieren/ deaktivieren.
    Dann brauch ich da nicht jedes mal bei unseren Kunden von Hand zu fummeln.
    Für meine Zwecke reichts ja, ich hätte es aber gern allgemeingültig geschrieben und dazu benötige ich eine Möglichkeit herauszufinden, welche der Benutzerkonten Admin und welche Eingeschränkt sind.
    Dann würde ich auch nur diese in der Userliste aufführen, da AutoAdminLogon, wie der Name sagt, nur für Adminkonten funktioniert.

    Also, wenn da jemand 'ne Idee hat - immer her damit. :)

    (AutoAdminLogon sollte aber niemals auf 'nem PC mit Internetzugang und/oder LAN-Zugehörigkeit verwendet werden. - Denn das PW wird im Klartext gespeichert in der Registry. Wenn die dann nicht gut eingetütet ist....)

    Hier das Script:

    Spoiler anzeigen
    [autoit]

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

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

    AutoIt Version: 3.2.1.14 (beta)
    Author: BugFix ( [email='bugfix@autoit.de'][/email] )
    Script Function: AutoAdminLogon aktivieren / deaktivieren

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

    #ce ----------------------------------------------------------------------------
    #include <GUIConstants.au3>
    #include <array.au3>
    #Include <GuiList.au3>
    Dim $LogonKey = "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"
    Dim $AllUserKey = "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList"
    Dim $CurrDefUser = RegRead($LogonKey, "DefaultUserName"), $AllUsers = ""
    Dim $arUsers, $CurrAutologonUser, $User

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

    If RegRead($LogonKey, "AutoAdminLogon") = "" Or RegRead($LogonKey, "AutoAdminLogon") = 0 Then
    $CurrAutologonUser = "kein Konto"
    Else
    $CurrAutologonUser = $CurrDefUser
    EndIf
    $Form1 = GUICreate("Auto Login festlegen / aufheben", 263, 224, -1, -1)
    $Input1 = GUICtrlCreateInput("", 124, 140, 133, 21, BitOR($ES_AUTOHSCROLL,$ES_READONLY))
    $Button1 = GUICtrlCreateButton("Auto Login aufheben", 6, 169, 250, 21, 0)
    $Button2 = GUICtrlCreateButton("Auto Login für markiertes Konto festlegen", 6, 196, 250, 21, 0)
    $Group1 = GUICtrlCreateGroup("Benutzerkonten auf diesem PC", 6, 10, 250, 125)
    $List1 = GUICtrlCreateList("", 15, 28, 233, 102)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Label1 = GUICtrlCreateLabel("Auto Login besteht für:", 6, 143, 111, 17)
    GUISetState(@SW_SHOW)

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

    For $i= 1 to 20 ; Benutzerkonten auslesen
    $var = RegEnumKey($AllUserKey, $i)
    If @error <> 0 then ExitLoop
    $tmp = RegRead($AllUserKey & "\" & $var, "ProfileImagePath")
    $str = StringRight($tmp, StringLen($tmp) - StringInStr($tmp, "\", 1, -1))
    If $str <> "systemprofile" And $str <> "LocalService" And $str <> "NetworkService" Then
    If $AllUsers = "" Then
    $AllUsers &= $str
    Else
    $AllUsers &= "|" & $str
    EndIf
    EndIf
    Next
    $arUsers = StringSplit($AllUsers, "|")
    For $i = 1 To $arUsers[0] ; Benutzer in Liste eintragen
    _GUICtrlListAddItem($List1, $arUsers[$i])
    Next
    _MarkDefUser($CurrDefUser)
    GUICtrlSetData($Input1, $CurrAutologonUser) ; Kontoname eintragen, falls AutoLogon bereits besteht

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    _AutoOFF()
    Case $Button2
    _AutoON()
    EndSwitch
    WEnd

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

    Func _MarkDefUser($tmpUser)
    If $tmpUser <> "" Then ; DefaultUser markieren
    For $i = 0 To _GUICtrlListCount($List1) - 1
    If $tmpUser = _GUICtrlListGetText($List1, $i) Then
    _GUICtrlListSelectIndex($List1, $i)
    ExitLoop
    EndIf
    Next
    EndIf
    EndFunc

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

    Func _AutoON()
    $User = _GUICtrlListGetText($List1, _GUICtrlListGetCaretIndex($List1))
    If MsgBox(262180, 'Auto Logon setzen', 'Soll für den Benutzer: ' & $User & @LF & _
    "das automatische Einloggen aktiviert werden?" & @LF & _
    "(Hinweis: Nur für Benutzer mit Administratorrechten möglich.)" ) = 6 Then
    RegWrite($LogonKey, "DefaultUserName", "REG_SZ", $User)
    RegWrite($LogonKey, "DefaultPassword", "REG_SZ", InputBox("Passwort", "Bitte Passwort für: " & $User & " eingeben." _
    & @LF & "Falls der Nutzer kein Passwort hat - frei lassen.", "", "*" ))
    RegWrite($LogonKey, "AutoAdminLogon", "REG_SZ", 1)
    RegWrite($LogonKey, "ForceAutoLogon", "REG_SZ", 1)
    _CheckRegEntry()
    EndIf
    EndFunc

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

    Func _AutoOFF()
    RegWrite($LogonKey, "AutoAdminLogon", "REG_SZ", 0)
    If @error <> 0 Then
    MsgBox(262160, 'Auto Logon', "Vorgang fehlgeschlagen.")
    Else
    RegWrite($LogonKey, "DefaultPassword", "REG_SZ", "")
    RegWrite($LogonKey, "ForceAutoLogon", "REG_SZ", 0)
    GUICtrlSetData($Input1, "kein Konto")
    MsgBox(262208, 'Auto Logon', "Auto Logon wurde erfolgreich deaktiviert.")
    EndIf
    EndFunc

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

    Func _CheckRegEntry()
    If RegRead($LogonKey, "AutoAdminLogon") = 1 And RegRead($LogonKey, "ForceAutoLogon") = 1 Then
    MsgBox(262208, 'Auto Logon', "Das automatische Einloggen für: " & RegRead($LogonKey, "DefaultUserName") _
    & " wurde erfolgreich eingerichtet.")
    GUICtrlSetData($Input1, $User)
    _MarkDefUser($User)
    Else
    MsgBox(262160, 'Auto Logon', "Vorgang fehlgeschlagen.")
    EndIf
    EndFunc

    [/autoit]
  • problem mit undeclared variable

    • BugFix
    • 21. Januar 2007 um 13:37

    Variablen, die innerhalb einer Funktion generiert werden, sind den anderen Funktionen nicht bekannt. Deshalb mußt du sie deklarieren.
    In deinem Bsp. reicht "Dim" völlig aus. Wann du "Local", "Dim" oder "Global" verwendest, kannst du in der Hilfe nachlesen.

    [autoit]

    ;Includes
    #include <GUIConstants.au3>
    #include <ie.au3>
    #include <guilist.au3>
    #include <guilistview.au3>
    #include <array.au3>
    #include <INet.au3>

    ; Variablen definieren
    Dim $console

    [/autoit]
  • bestimmte Zeile in ListView markieren

    • BugFix
    • 20. Januar 2007 um 21:11

    I am very gerührt. ;)
    Schön, wenn ich dir helfen konnte.

  • bestimmte Zeile in ListView markieren

    • BugFix
    • 19. Januar 2007 um 17:30

    So, jetzt hab ich eine funktionierende Lösung für dich.
    Mit _GUICtrlListViewSetItemSelState( ) kannst du den Eintrag markieren - ist dann aber grau markiert. Also noch ein {DOWN} hinterher und schon ist es blau markiert :)

    [autoit]

    _GUICtrlListViewSetItemSelState($listview, $index, 1, 1)
    Send("{DOWN}")

    [/autoit]
  • Happy Birthday huggy

    • BugFix
    • 18. Januar 2007 um 00:11

    Hi huggy,
    da will ich doch mal der erste Gratulant sein.

    Alles Gute, viele Geschenke und und und ....

    :birthday:
    :party:

  • bestimmte Zeile in ListView markieren

    • BugFix
    • 17. Januar 2007 um 23:51

    Zitat Hilfe:

    Zitat

    _GUICtrlListViewSetHotItem
    --------------------------------------------------------------------------------

    Sets the hot item for a list-view control


    #Include <GuiListView.au3>
    _GUICtrlListViewSetHotItem($h_listview, $i_index)


    Parameters

    $h_listview control id/control hWnd
    $i_index Zero-based index of the item to be set as the hot item

    Return Value

    Returns the index of the item that was previously hot
    $LV_ERR is returned if no item previously hot

    Alles anzeigen

    Hier ein Bsp.:

    [autoit]

    #Include <GuiListView.au3>

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

    For $i = 0 To _GUICtrlListViewGetItemCount($listview)-1
    If _GUICtrlListViewGetItemText($listview, $i) = $vergleichsbegriff Then
    _GUICtrlListViewSetHotItem($listview, $i)
    EndIf
    ExitLoop
    Next

    [/autoit]
  • outlook

    • BugFix
    • 14. Januar 2007 um 20:40

    Hier die Funktion für SMTP-Mail von Jos:

    Spoiler anzeigen
    [autoit]

    Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", _
    $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Username = "", $s_Password = "",$IPPort=25, $ssl=0)
    $objEmail = ObjCreate("CDO.Message")
    $objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>'
    $objEmail.To = $s_ToAddress
    Local $i_Error = 0
    Local $i_Error_desciption = ""
    If $s_CcAddress <> "" Then $objEmail.Cc = $s_CcAddress
    If $s_BccAddress <> "" Then $objEmail.Bcc = $s_BccAddress
    $objEmail.Subject = $s_Subject
    If StringInStr($as_Body,"<") and StringInStr($as_Body,">") Then
    $objEmail.HTMLBody = $as_Body
    Else
    $objEmail.Textbody = $as_Body & @CRLF
    EndIf
    If $s_AttachFiles <> "" Then
    Local $S_Files2Attach = StringSplit($s_AttachFiles, ";")
    For $x = 1 To $S_Files2Attach[0]
    $S_Files2Attach[$x] = _PathFull ($S_Files2Attach[$x])
    If FileExists($S_Files2Attach[$x]) Then
    $objEmail.AddAttachment ($S_Files2Attach[$x])
    Else
    $i_Error_desciption = $i_Error_desciption & @lf & 'File not found to attach: ' & $S_Files2Attach[$x]
    SetError(1)
    return 0
    EndIf
    Next
    EndIf
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort
    ;Authenticated SMTP
    If $s_Username <> "" Then
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = $s_Username
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $s_Password
    EndIf
    If $Ssl Then
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
    EndIf
    ;Update settings
    $objEmail.Configuration.Fields.Update
    ; Sent the Message
    $objEmail.Send
    if @error then
    SetError(2)
    return $oMyRet[1]
    EndIf
    EndFunc ;==>_INetSmtpMailCom

    [/autoit]


    Arbeitet mit den meisten SMTP-Mail Accounts. Also unabhängig von Outlook.

  • Problem mit Random

    • BugFix
    • 14. Januar 2007 um 20:17

    Hier meine Lösung für dich:

    Spoiler anzeigen
    [autoit]

    #include <IE.au3>
    Dim $oIE=_IECreate("http://",0,1)
    Dim $counter=0, $LastRandom = 1

    While 1
    _IELoadWait($oIE) ; warten bis Seite geladen
    $counter=$counter+1

    If $counter<3 Then
    $seite=Random(1,4,1)

    If $seite=1 And $seite <> $LastRandom Then
    $oDocLinks = _IELinkGetCollection ($oIE); gibt links als Collection aus
    For $olink IN $oDocLinks
    if StringInStr ( $olink.outerText , "items") Then ; der anzuklickende Link
    $zeit=Random(40312,47623,1)
    sleep($zeit) ; gibt zufallswert aus und Sleep übernimmt den Wert
    $olink.click() ; der Klick auf den Link
    ExitLoop
    EndIf
    Next
    $LastRandom = $seite

    ElseIf $seite=2 And $seite <> $LastRandom Then
    $oDocLinks = _IELinkGetCollection ($oIE); gibt links als Collection aus
    For $olink IN $oDocLinks
    if StringInStr ( $olink.outerText , "modifikationen") Then ; der anzuklickende Link
    $zeit=Random(35001,55131,1)
    sleep($zeit) ; gibt zufallswert aus und Sleep übernimmt den Wert
    $olink.click() ; der Klick auf den Link
    ExitLoop
    EndIf
    Next
    $LastRandom = $seite

    ElseIf $seite=3 And $seite <> $LastRandom Then
    $oDocLinks = _IELinkGetCollection ($oIE); gibt links als Collection aus
    For $olink IN $oDocLinks
    if StringInStr ( $olink.outerText , "die story") Then ; der anzuklickende Link
    $zeit=Random(40878,49851,1)
    sleep($zeit) ; gibt zufallswert aus und Sleep übernimmt den Wert
    $olink.click() ; der Klick auf den Link
    ExitLoop
    EndIf
    Next
    $LastRandom = $seite

    ElseIf $seite=4 And $seite <> $LastRandom Then
    $oDocLinks = _IELinkGetCollection ($oIE); gibt links als Collection aus
    For $olink IN $oDocLinks
    if StringInStr ( $olink.outerText , "underground") Then ; der anzuklickende Link
    $zeit=Random(38543,51923,1)
    sleep($zeit) ; gibt zufallswert aus und Sleep übernimmt den Wert
    $olink.click() ; der Klick auf den Link
    ExitLoop
    EndIf
    Next
    $LastRandom = $seite
    Else ; ElseIf-Zweig konnte nicht gewählt werden, da $seite = $LastRandom
    $counter -= 1 ; Counter zurücksetzen, da in diesem Durchlauf nix passierte
    EndIf
    EndIf
    WEnd

    [/autoit]

    Ich glaube der Counter ist wichtig, darum setze ich ihn bei Leerlauf zurück.

  • Problem mit Random

    • BugFix
    • 14. Januar 2007 um 19:35

    Führe eine zusätzliche Variable, z.B. $LastRandom .
    Wenn Zufallszahl = $LastRandom -> Zufallszahl erneut ermitteln.

  • 10 € Schein Analysetool

    • BugFix
    • 14. Januar 2007 um 13:08

    Hi,
    ich hab mich auch mal dran gemacht. ;)
    Beim Betrachten der Aufgabe denkt man schon, das ist doch Pillepalle. Na gut, der Algorithmus ist nicht schwierig.
    Wie üblich liegen 90 % der Arbeit darin alle möglichen (und unmöglichen) Eigaben und Fehler abzufangen. ;)
    Um das Endprodukt DAU-sicher zu machen, ist es doch viel umfangreicher geworden als ich dachte. :rofl:
    Man könnte natürlich noch die verschiedenen Gewinnkategorien in unterschiedlichen Farben darstellen - aber das war mir dann doch zuviel.

    EDIT: Hab noch eine Fehlermöglichkeit abgefangen (Eintrag löschen bei aktiver Ergebnisliste). Und noch 'ne Fehlerquelle abgefangen (Löschen bei leerer Liste).

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <GuiListView.au3>
    Opt("GUIOnEventMode", 1)

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

    Dim $arAlleSN, $arTreffer[1], $Fehler = 0, $SN
    Dim $alleRichtig = 0, $dreiRichtig = 0, $zweiRichtig = 0, $einRichtig = 0, $lastEntry, $new = 0
    Dim $rot = 0xFF0000
    $arAlleSN = IniReadSection(@ScriptDir & "\SN10Euro.INI", "serien")
    $arTreffer[0] = 0
    If @error = 1 Then $Fehler = 1

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

    $Form1 = GUICreate("100.000 für 10", 636, 344, -1, -1)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Ende")
    $ListView1 = GUICtrlCreateListView("Seriennummern", 17, 19, 353, 305)
    _GUICtrlListViewSetColumnWidth(-1, 0, 349)
    $Group0 = GUICtrlCreateGroup(" Modus ", 384, 17, 240, 40)
    $Radio1 = GUICtrlCreateRadio("Erfassen", 400, 30, 80)
    GUICtrlSetOnEvent(-1, "RadioErfassen")
    $Radio2 = GUICtrlCreateRadio("Vergleichen", 520, 30, 80)
    GUICtrlSetOnEvent(-1, "RadioVergleichen")
    GUICtrlSetState(-1, $GUI_CHECKED)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group1 = GUICtrlCreateGroup(" Seriennummer ", 384, 59, 240, 57)
    $Input1 = GUICtrlCreateInput("", 395, 81, 220, 21, $ES_UPPERCASE)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Button1 = GUICtrlCreateButton("Vergleichen", 384, 128, 70, 21, 0)
    GUICtrlSetOnEvent(-1, "Vergleichen")
    $Group2 = GUICtrlCreateGroup(" Ergebnis ", 384, 158, 240, 167)
    $Label0 = GUICtrlCreateLabel("Hauptgewinn", 465, 180, 90, 17)
    GUICtrlSetColor($Label0, $rot)
    GUICtrlSetStyle(-1, $WS_DISABLED)
    $Label1 = GUICtrlCreateLabel("letzte 3 Ziffern richtig", 396, 214, 102, 17)
    GUICtrlSetStyle(-1, $WS_DISABLED)
    $Label2 = GUICtrlCreateLabel("letzte 2 Ziffern richtig", 396, 252, 102, 17)
    GUICtrlSetStyle(-1, $WS_DISABLED)
    $Label3 = GUICtrlCreateLabel("letzte Ziffer richtig", 396, 290, 87, 17)
    GUICtrlSetStyle(-1, $WS_DISABLED)
    $Input2 = GUICtrlCreateInput("", 550, 211, 45, 21, BitOR($ES_RIGHT,$ES_AUTOHSCROLL,$ES_READONLY))
    $Input3 = GUICtrlCreateInput("", 550, 249, 45, 21, BitOR($ES_RIGHT,$ES_AUTOHSCROLL,$ES_READONLY))
    $Input4 = GUICtrlCreateInput("", 550, 287, 45, 21, BitOR($ES_RIGHT,$ES_AUTOHSCROLL,$ES_READONLY))
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Button2 = GUICtrlCreateButton("Ende", 554, 128, 70, 21, 0)
    GUICtrlSetOnEvent(-1, "Ende")
    $Button3 = GUICtrlCreateButton("Löschen", 469, 128, 70, 21, 0)
    GUICtrlSetOnEvent(-1, "DeleteSN")

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

    If $Fehler = 1 Then
    $lastEntry = 0
    Else
    $lastEntry = StringTrimLeft($arAlleSN[$arAlleSN[0][0]][1], 2)
    _ListAllSN()
    EndIf
    If Not FileExists(@ScriptDir & "\SN10Euro.INI") Then
    GUICtrlSetState($Button3, $GUI_DISABLE)
    Else
    GUICtrlSetState($Button3, $GUI_ENABLE)
    EndIf

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

    GUISetState(@SW_SHOW)
    ControlFocus("", "", $Input1)

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

    While 1
    Sleep(100)
    WEnd

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

    Func _ListAllSN()
    If IsArray($arAlleSN) Then
    For $i = 1 To $arAlleSN[0][0]
    _GUICtrlListViewInsertItem($ListView1, -1, $arAlleSN[$i][1])
    Next
    EndIf
    EndFunc

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

    Func RadioErfassen()
    GUICtrlSetData($Button1, "Erfassen")
    If Not FileExists(@ScriptDir & "\SN10Euro.INI") Then
    GUICtrlSetState($Button3, $GUI_DISABLE)
    Else
    GUICtrlSetState($Button3, $GUI_ENABLE)
    EndIf
    GUICtrlSetStyle($Label0, $WS_DISABLED)
    GUICtrlSetStyle($Label1, $WS_DISABLED)
    GUICtrlSetStyle($Label2, $WS_DISABLED)
    GUICtrlSetStyle($Label3, $WS_DISABLED)
    _GUICtrlListViewDeleteAllItems($ListView1)
    If $Fehler = 0 Then _ListAllSN()
    ControlFocus("", "", $Input1)
    GUICtrlSetData($Input2, "")
    GUICtrlSetData($Input3, "")
    GUICtrlSetData($Input4, "")
    EndFunc

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

    Func RadioVergleichen()
    GUICtrlSetData($Button1, "Vergleichen")
    ControlFocus("", "", $Input1)
    EndFunc

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

    Func Vergleichen()
    If GUICtrlRead($Radio2) = 1 Then ; vergleichen
    If $Fehler = 1 Then
    MsgBox(48, 'ACHTUNG', "Es sind noch keine Seriennummern zum Vergleich hinterlegt!")
    Return
    EndIf
    _vergleich()
    _GUICtrlListViewDeleteAllItems($ListView1)
    _treffer()
    Else ; erfassen
    $SN = GUICtrlRead($Input1)
    If $SN <> "" Then
    _GUICtrlListViewInsertItem($ListView1, -1, $SN)
    IniWrite(@ScriptDir & "\SN10Euro.INI", "serien", "sn" & $lastEntry +1, $SN)
    $lastEntry += 1
    $Fehler = 0
    $new = 1
    GUICtrlSetState($Button3, $GUI_ENABLE)
    Else
    MsgBox(0, 'ACHTUNG!', "Bitte eine Seriennummer für Vergleich eingeben!")
    EndIf
    EndIf
    ControlFocus("", "", $Input1)
    EndFunc

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

    Func DeleteSN()
    Dim $tmp
    If $new = 1 Then $arAlleSN = IniReadSection(@ScriptDir & "\SN10Euro.INI", "serien")
    $tmp = _GUICtrlListViewGetItemText($ListView1)
    If $tmp <> "" And MsgBox(292,"Löschen","Soll die Seriennummer:" & @LF & $tmp & @LF & "wirklich gelöscht werden?") = 6 Then
    For $i = 1 To $arAlleSN[0][0]
    If $arAlleSN[$i][1] = $tmp Then
    $arAlleSN[$i][1] = ""
    ExitLoop
    EndIf
    Next
    FileDelete(@ScriptDir & "\SN10Euro.INI")
    $lastEntry = 0
    For $i = 1 To $arAlleSN[0][0]
    If $arAlleSN[$i][1] <> "" Then
    IniWrite(@ScriptDir & "\SN10Euro.INI", "serien", "sn" & $lastEntry +1, $arAlleSN[$i][1])
    $lastEntry += 1
    $Fehler = 0
    EndIf
    Next
    _GUICtrlListViewDeleteAllItems($ListView1)
    $arAlleSN = IniReadSection(@ScriptDir & "\SN10Euro.INI", "serien")
    _ListAllSN()
    If Not FileExists(@ScriptDir & "\SN10Euro.INI") Then GUICtrlSetState($Button3, $GUI_DISABLE)
    EndIf
    EndFunc

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

    Func _vergleich()
    $SN = GUICtrlRead($Input1)
    If $new = 1 Then $arAlleSN = IniReadSection(@ScriptDir & "\SN10Euro.INI", "serien")
    For $i = 1 To $arAlleSN[0][0]
    If $arAlleSN[$i][1] = $SN Then
    $alleRichtig += 1
    _ArrayAdd($arTreffer, $arAlleSN[$i][1] & " / Volltreffer = 100.000 €")
    $arTreffer[0] += 1
    ElseIf StringRight($arAlleSN[$i][1], 3) = StringRight($SN, 3) Then
    $dreiRichtig += 1
    _ArrayAdd($arTreffer, $arAlleSN[$i][1] & " / 3 R = 10.000 €")
    $arTreffer[0] += 1
    ElseIf StringRight($arAlleSN[$i][1], 2) = StringRight($SN, 2) Then
    $zweiRichtig += 1
    _ArrayAdd($arTreffer, $arAlleSN[$i][1] & " / 2 R = 1.000 €")
    $arTreffer[0] += 1
    ElseIf StringRight($arAlleSN[$i][1], 1) = StringRight($SN, 1) Then
    $einRichtig += 1
    _ArrayAdd($arTreffer, $arAlleSN[$i][1] & " / 1 R = 100 €")
    $arTreffer[0] += 1
    EndIf
    Next
    EndFunc

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

    Func _treffer()
    For $i = 1 To $arTreffer[0]
    _GUICtrlListViewInsertItem($ListView1, -1, $arTreffer[$i])
    Next
    If $alleRichtig = 1 Then GUICtrlSetStyle($Label0, $GUI_SS_DEFAULT_LABEL)
    GUICtrlSetState($Button3, $GUI_DISABLE)
    GUICtrlSetStyle($Label1, $GUI_SS_DEFAULT_LABEL)
    GUICtrlSetStyle($Label2, $GUI_SS_DEFAULT_LABEL)
    GUICtrlSetStyle($Label3, $GUI_SS_DEFAULT_LABEL)
    GUICtrlSetData($Input2, $dreiRichtig)
    GUICtrlSetData($Input3, $zweiRichtig)
    GUICtrlSetData($Input4, $einRichtig)
    ReDim $arTreffer[1]
    $arTreffer[0] = 0
    $dreiRichtig = 0
    $zweiRichtig = 0
    $einRichtig = 0
    EndFunc

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

    Func Ende()
    Exit
    EndFunc

    [/autoit]

    Dateien

    100000_f 6,68 kB – 289 Downloads

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™