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

  • Programm mit Zufallsgenerator

    • BugFix
    • 6. Januar 2007 um 21:58

    Counter ist nur eine Variable, die du zum zählen benutzt.
    Im Bsp. wird der Zähler in jedem Durchlauf um eins erhöht.

    [autoit]

    $counter = 0
    while 1
    ;code
    $counter = $counter + 1
    wend

    [/autoit]
  • Dateikopieren

    • BugFix
    • 6. Januar 2007 um 17:19

    Wenn du noch nicht Version 3.2.2.0 Prod installiert hast, mußt du die Beta verwenden.
    In der <file.au3> der Beta sind mehr Funktionen als in der Prod. Sind diese dann Stable gibt es eine neue Version der Prod, wo diese eingebunden werden.
    Was klappt denn noch nicht? Ich habe mir zum Testen die Dateien erstellt um sicherzugehen, dass auch alles funktioniert. - Und das tut es.
    Du schreibst, du hast auch eine englische Version. Die Dateien liegen dann aber sicher in einem anderen Pfad. Somit kannst du das Skript in Abhängigkeit zur verwendeten Sprache steuern und eine weitere Sektion, z.B. [NoMoveEN] anlegen. Ebenfalls zusätzliche Pfade. Sollte kein Problem sein.
    Wenn du nicht weiterkommst, melde dich einfach wieder.

  • Dateikopieren

    • BugFix
    • 5. Januar 2007 um 21:11

    So, war grad Werbepause im TV. Hab dir mal eine Lösung gebastelt.
    Da du sowieso eine INI-Datei verwendest, fügst du einfach die Sektion "NoMove" ein.

    Code
    [NoMove]
    wert1=localized_english_iw01.iwd
    wert2=localized_english_iw03.iwd
    wert3=localized_english_iw08.iwd
    wert4=localized_english_iw11.iwd
    wert5=games_mp.log
    wert6=hunkusage.dat
    wert7=minibinds.cfg
    [autoit]

    #include <file.au3>
    Dim $INIPfad = @ScriptDir & "\test.ini"
    Dim $QuellPfad = "D:\TEST\"
    Dim $ZielPfad = "D:\TEST\moved\"

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

    ; Array mit allen Files, die nicht verschoben werden sollen
    $arNoMove = IniReadSection($INIPfad, "NoMove")

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

    ; Array mit allen ModFiles im Pfad
    $AllModFiles = _FileListToArray($QuellPfad, "*.iwd")
    For $i = 1 To $AllModFiles[0]
    For $k = 1 To $arNoMove[0][0]
    ; Dateien markieren, die nicht verschoben werden sollen
    If $AllModFiles[$i] = $arNoMove[$k][1] Then $AllModFiles[$i] &= "|"
    Next
    Next
    For $i = 1 To $AllModFiles[0]
    ; nicht markierte Dateien verschieben
    If StringRight($AllModFiles[$i], 1) <> "|" Then FileMove($QuellPfad & $AllModFiles[$i], $ZielPfad)
    Next

    [/autoit]
  • Dateikopieren

    • BugFix
    • 5. Januar 2007 um 18:41

    Als erstes zu deiner 2.ten Frage. Das geht so:

    [autoit]

    If $filepath="notset" Then
    MsgBox(4096, "Benutzer-Fehler", "Define filepath in .ini-file and try again")
    Exit
    EndIf

    [/autoit]

    Da mein Weib gerade zum Essen ruft, muss der Rest noch etwas warten. ;)
    Also bis gleich.

  • Dateikopieren

    • BugFix
    • 5. Januar 2007 um 17:53

    ?(
    Was willst du denn nun tun (oder nicht tun)?
    Ich hab dich so verstanden:
    - alle Dateien mit Endung ".iwd" sollen in einen gemeinsamen Ordner verschoben werden
    - alle anderen Dateien verbleiben im Ordner

    Ist das richtig? - Genau das macht der Code.

    Oder willst du einige festgelegte Dateien mit der Endung ".iwd" im Ordner belassen und die anderen gleichen Typs verschieben? Geht auch.

    Also erklär noch mal, was du genau möchtest.

  • Dateikopieren

    • BugFix
    • 5. Januar 2007 um 15:45
    [autoit]

    Dim $QuellPfad = "C:\TEST\" ; mußt du anpassen
    Dim $ZielPfad = "C:\ModFiles\" ; mußt du anpassen
    FileMove($QuellPfad & "*.iwd", $ZielPfad)

    [/autoit]
  • MAC Adresse

    • BugFix
    • 4. Januar 2007 um 21:01

    Hi,
    ich habe noch 'ne Variante für dich (übrigens, in der Registry gibt es keinen Vermerk der MAC-Adressen)

    Spoiler anzeigen
    [autoit]

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

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

    Dim $RegKey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards"
    Dim $MAC, $Device, $DevStr, $arMAC, $arAllAdapter[1], $arAllMAC[1]
    $arAllAdapter[0] = 0
    $arAllMAC[0] = 0

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

    For $i = 1 To 100
    $var = RegEnumKey($RegKey, $i)
    If @error <> 0 Then ExitLoop
    _ArrayAdd($arAllAdapter, RegRead($RegKey & "\" & $var, "ServiceName") & "|" & RegRead($RegKey & "\" & $var, "Description"))
    $arAllAdapter[0] += 1
    Next
    If FileExists("MAC.TXT") Then FileDelete("MAC.TXT")
    RunWait(@ComSpec & ' /c ' & 'getmac > MAC.TXT', '', @SW_HIDE)
    _FileReadToArray("MAC.TXT", $arMAC)
    For $i = 1 To $arMAC[0]
    If StringInStr($arMAC[$i], "Tcpip") Then
    $MAC = StringLeft($arMAC[$i], 17)
    $DevStr = _StringBetween($arMAC[$i], "{", "}")
    $Device = "{" & $DevStr[0] & "}"
    For $k = 1 To $arAllAdapter[0]
    $var = StringSplit($arAllAdapter[$k], "|")
    If $Device = $var[1] Then
    _ArrayAdd($arAllMAC, $MAC & " " & $var[2])
    $arAllMAC[0] += 1
    EndIf
    Next
    EndIf
    Next

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

    _ArrayDisplay($arAllMAC, "Alle aktiven MAC-Adapter")

    [/autoit]

    EDIT:

    Du kannst auch die MAC-Adresse eines entfernten Rechners abfragen. Dazu mußt du ihn erst anpingen. Dabei wird auch die MAC-Adresse im Cache gespeichert. Mit "arp -a" werden diese Daten aus dem Cache gelesen. Sieht dann etwa so aus:

    Zitat

    C:\WINDOWS>arp -a
    Schnittstelle: 136.1.32.34 on Interface 2 Internet-Adresse Physische Adresse
    136.1.32.37 00-6b-3f-6b-3b-31 136.1.32.42 00-43-68-4b-f6-a1

    Wenn du allerdings hinter einem Gateway bist, kannst du nur die Daten innerhalb des Subnetzes abfragen.

  • gruppierungen -> arrays

    • BugFix
    • 31. Dezember 2006 um 17:12

    Bin ehrlich gesagt momentan zu faul, um den Code zu erstellen.
    Aber ich habe einen Lösungsansatz für dich:
    - alle Sektionen einlesen
    - ein Array erzeugen, indem du jetzt einfügst
    "Sectionsname" & "|" & "Schlüssel" & "|" & "Wert"
    - jetzt vergleichst du bei Eintrag 1 beginnend ob Schlüssel-Wert-Paar mit dem eines anderen Array-Eintrags übereinstimmt. Wenn ja werden die Einträge in ein Zielarray eingefügt.

    Die Details überlasse ich dir :D

    Guten Rutsch auch.

  • Bildschirmschoner entfernen

    • BugFix
    • 31. Dezember 2006 um 15:39

    Hallo Gun,
    ich denke, für dich ist das hier von Interesse. Daraus kannst du das Script komplettieren und hast alles, was du brauchst.

    Guten Rutsch wünsch ich noch.

    Edit:

    Ich hab gleich mal das Script für "Monitor aus nach 5 Minuten" erstellt.
    Sollte bereits ein nutzerspezifisches Schema bestehen wäre dieses Schlüssel "....\6" und würde hiermit überschrieben. Wenn du das nicht möchtest, kannst du ja vorher abfragen, welches Schema das letzte ist, und dann einen neuen Schlüsselnamen erzeugen.

    [autoit]

    Dim $EnergyKey = "HKEY_CURRENT_USER\Control Panel\PowerCfg\PowerPolicies\6"
    Dim $EnergyKeyActiv = "HKEY_CURRENT_USER\Control Panel\PowerCfg"
    Dim $EnergySchema = "CurrentPowerPolicy"
    Dim $Energy_Name1 = "(Standard)"
    Dim $Energy_Name2 = "Description"
    Dim $Energy_Val2 = "Abschalten Monitor nach 5 Minuten. Andere Komponenten immer aktiv."
    Dim $Energy_Name3 = "Name"
    Dim $Energy_Val3 = "Monitor_out_5min"
    Dim $Energy_Name4 = "Policies"
    Dim $Energy_Val4 = "01000000000000000100000000000000020000000500000000000000000000007800000032320302020000000200000000003A772EF207002C0100003C00000000000000B4000000000064646464927C"
    Dim $type = "REG_SZ"
    Dim $type2 = "REG_BINARY"

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

    ; Energieschemaeintrag setzen
    RegWrite($EnergyKey, $Energy_Name1)
    RegWrite($EnergyKey, $Energy_Name2, $type, $Energy_Val2)
    RegWrite($EnergyKey, $Energy_Name3, $type, $Energy_Val3)
    RegWrite($EnergyKey, $Energy_Name4, $type2, $Energy_Val4)
    ; Eintrag aktivieren
    RegWrite($EnergyKeyActiv, $EnergySchema, $type, 6)

    [/autoit]
  • Bildschirmschoner entfernen

    • BugFix
    • 31. Dezember 2006 um 13:14

    Hi,
    ich habe häufiger das Problem, dass Kunden an ihren PC's sinnlose Spielereien mit dem Bildschirmschoner betreiben. Der Folgenutzer weiß davon nix und ruft dann in Panik den Service (also mich ;( ) an, weil plötzlich seine Anwendung verschwindet.
    Also habe ich jetzt ein Script erstellt, dass den momentanen Bildschirmschoner abschaltet und gleichzeitig den Reiter "Bildschirmschoner" von den Anzeigeeinstellungen entfernt.
    Somit ist nur noch über Registryzugriff ein Bildschirmschoner aktivierbar.

    [autoit]

    Dim $CurrSvrKey = "HKEY_CURRENT_USER\Control Panel\Desktop"
    Dim $CurrSvr = "SCRNSAVE.EXE"
    Dim $IsActive = "ScreenSaveActive"
    Dim $key = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System"
    Dim $valname = "NoDispScrSavPage"
    Dim $type = "REG_SZ"
    Dim $val = 1

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

    ; aktuellen Bildschirmschoner deaktivieren
    RegWrite($CurrSvrKey, $IsActive, $type, 0)
    RegDelete($CurrSvrKey, $CurrSvr)

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

    ; Reiter "Bildschirmschoner" entfernen
    RegRead($key, $valname)
    If @error = 0 Then
    MsgBox(0,"","Registry Schlüssel ist bereits vorhanden")
    Else
    If RegWrite($key, $valname, $type, $val) = 1 Then
    MsgBox(0,"","Registry Schlüssel erfolgreich aktualisiert.")
    Else
    MsgBox(0,"","Aktualisierung Registry Schlüssel fehlgeschlagen.")
    EndIf
    EndIf

    [/autoit]
  • Script für Netzwerkshares optimieren

    • BugFix
    • 30. Dezember 2006 um 22:08

    Dein Script enthält einen marginalen Fehler.
    Du verwendest

    [autoit]

    Return 0

    [/autoit]

    ausserhalb einer Funktion. Return ist aber ausschliesslich zur Nutzung in Funktionen vorbehalten.

    Zitat

    Use the Return keyword to exit the function. Unlike built-in functions, user-defined functions return 0 unless another return value is specified.

  • Fragen zu ListView-Formatierung

    • BugFix
    • 30. Dezember 2006 um 20:29

    Linksbündig ist default, das brauchst du nicht einstellen
    für Spalte 3 (rechtsbündig) gilt:

    [autoit]

    #Include <GuiListView.au3>
    _GUICtrlListViewJustifyColumn ($listview,2,1)

    [/autoit]


    Zum wechselseitigen Einfärben der Zeilen wird das Flag "$GUI_BKCOLOR_LV_ALTERNATE" genutzt,
    habe ich aber leider kein Beispiel parat.

    Ob Textfarbe für Spalten einzeln gesetzt werden kann, kann ich nicht sagen - jedenfalls hab ich es noch nicht gesehen.

  • link mit nur teilweise bekanntem namen klicken (ie.au3)

    • BugFix
    • 25. Dezember 2006 um 00:20

    Der Link heisst: "href="http://service.gmx.net/de/cgi/g.fcgi/mail/index?FOLDER=inbox&amp;CUSTOMERNO=xxxxxxxx&amp;t=dexxxxxxxxx.xxxxxxxxxx.eaf8dda9"><strong>21</strong> ungelesene E-Mails"

    Die accountspezifischen Daten habe ich mit x ersetzt ;)
    Es sollten sich eigentlich nur die Daten, die dem Link folgen, ändern.

  • Grafik mit Autoit

    • BugFix
    • 24. Dezember 2006 um 22:37

    Danke Mega, wieder etwas schlauer ;)

  • Loop stoppen

    • BugFix
    • 24. Dezember 2006 um 21:02
    [autoit]

    While $while < GUICtrlREad($Input_amount)
    If $stop = 1 Then
    ExitLoop

    [/autoit]

    Das "ExitLoop" ist natürlich wirkungslos, weil du damit nur die Schleife: "While $while < GUICtrlREad($Input_amount)" verlässt.
    Wie mausilein schon richtig sagte, solltest du an dieser Stelle einfügen:

    [autoit]

    While $while < GUICtrlREad($Input_amount)
    If $stop = 1 Then
    Return $returnvariable ;

    [/autoit]


    Diese $returnvariable kannst du dann auswerten, oder du gibst nur "Return" um die Funktion zu verlassen.

    EDIT

    So, ich habs mal "entschlackt" und angepasst. Hoffe, das ist was du wolltest.
    Und Happy Xmas!

    Spoiler anzeigen
    [autoit]

    #include <IE.au3>
    #include <GUIConstants.au3>
    #include <INet.au3>
    #include <string.au3>
    #include <array.au3>
    #include <file.au3>
    Opt("GUIOnEventMode", 1)
    Global $stop = 0
    Global $oIE = _IECreate ("http://www.habbo.ch")

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

    $Form1 = GUICreate("Test", 755, 155, 192, 125, $DS_MODALFRAME, $WS_EX_TOOLWINDOW)
    $Button_start = GUICtrlCreateButton("Start", 87, 0, 86, 17)
    GUICtrlSetOnEvent(-1, "start")
    $Button_stop = GUICtrlCreateButton("Stop", 173, 0, 86, 17)
    GUICtrlSetOnEvent(-1, "stop")
    $Input_amount = GUICtrlCreateInput("Amount", 1, 48, 160, 17, -1, $WS_EX_CLIENTEDGE)
    $Input_status = GUICtrlCreateInput("Status - Inactive - Press Start to start", 1, 113, 747, 17, $ES_READONLY, $WS_EX_CLIENTEDGE)
    GUISetState(@SW_SHOW)

    Do
    Sleep(100)
    Until $stop = 1

    Func stop()
    $stop = 1
    GUICtrlSetData($Input_status, "Status - Inactive - Press Start to start")
    EndFunc

    Func start()
    $while = 0
    $status = 0
    $stop = 0
    While $while < GUICtrlREad($Input_amount)
    If $stop = 1 Then
    Return
    ElseIf $stop = 0 Then
    _IENavigate ($oIE, "http://www.habbo.ch")
    $status = $status + 1
    GUICtrlSetData($Input_status, "Status - Active - Page Reloading... - " & $status & " Reloads")
    $while = $while + 1
    Sleep(3000)
    EndIf
    WEnd
    EndFunc

    [/autoit]
  • Kein Fenstertitel !

    • BugFix
    • 23. Dezember 2006 um 22:26

    Beispiel Aufruf 'freeCommander':

    [autoit]

    AutoItSetOption("WinTitleMatchMode", 4)
    WinWaitActive("classname=TfcForm") ; ACHTUNG! keine Leerzeichen!
    MsgBox(0, '', "Fenster ist aktiv")

    [/autoit]
  • Kein Fenstertitel !

    • BugFix
    • 23. Dezember 2006 um 21:36

    Nutze den ClassName stattdessen.

    Zitat

    "classname=" matches a window based on its classname. For example to identify a window that has the classname "MYCLASS1" then you would use "classname=MYCLASS1" for the title parameter.

    EDIT: ;( Immer ist pee schneller, selbst einen Tag vor Heiligabend.

  • Grafik mit Autoit

    • BugFix
    • 23. Dezember 2006 um 17:38

    Mit GUICtrlSetColor() kann ich die Farbe für das Grafikcontrol festlegen. Grafikelemente werden mit GUICtrlSetGraphic(-1,$GUI_GR_COLOR, color, backcolor) definiert.

  • Grafik mit Autoit

    • BugFix
    • 23. Dezember 2006 um 13:43

    Tja, nun kommt der nächste Punkt.
    Ich bekomme einfach keine Farbe in meine Zeichnung. Die Grafik als Träger der Zeichnung kann ich einfärben. Aber weiter komme ich nicht.
    Ich finde auch keinen Unterschied zur Syntax in der Hilfe. Kopiere ich allerdings einen Grafikblock aus dem Hilfecode in mein Beispiel rein, läufts dort auch nicht. ;(

    Also, wo ist hier der Fehler?

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    Dim $StartWinkel = 90, $Child[61], $gr[61], $kreis ; 0° = 90
    Dim $navajowhite = 0xFFDEAD, $royalblue = 0x4169E1, $black = 0x000000, $white = 0xFFFFFF, $silver = 0xC0C0C0
    $Form1 = GUICreate("Main", 200, 200, -1, -1)
    GUISetState()
    CreateChild()

    Do
    $msg = GUIGetMsg()
    Until $msg=$GUI_EVENT_CLOSE

    Func CreateChild()
    $kreis = GUICtrlCreateGraphic(0, 0, 200, 200)
    GUICtrlSetBkColor(-1,$navajowhite) ; funktioniert
    GUICtrlSetColor(-1,$silver) ; funktioniert
    GUICtrlSetGraphic(-1,$GUI_GR_ELLIPSE, 40, 40, 120, 120) ; Kreis: x, y = Schnittpunkt Tangenten 0° mit 270°
    GUICtrlSetGraphic(-1,$GUI_GR_COLOR, $black, $silver) ; keine Wirkung

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

    For $i = 0 To 60
    $gr[$i] = GUICtrlCreateGraphic(0, 0, 200, 200)
    GUICtrlSetGraphic($gr[$i], $GUI_GR_PIE, 100, 100, 60, $StartWinkel, 360 -($i*6)) ; Teilkreis: x, y = Mittelpunkt
    GUICtrlSetGraphic($gr[$i], $GUI_GR_COLOR, $royalblue, $navajowhite) ; keine Wirkung
    Sleep(100)
    If $i > 0 Then GUICtrlDelete($gr[$i-1])
    Next
    EndFunc

    [/autoit]
  • Grafik mit Autoit

    • BugFix
    • 23. Dezember 2006 um 12:31

    Vielen Dank jonk.

    Leider ist die Hilfe zu diesem Thema eigentlich nur eine Syntaxbeschreibung.
    Wenn ich es erstmal selbst kapiert habe ;) werde ich hierzu für die deutsche Übersetzung mal eine vllt. verständlichere Anleitung erstellen.

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™