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

  • Wie kann ich Symbolleisten an- oder abhaken

    • BugFix
    • 7. Januar 2007 um 16:38
    Zitat

    Wenn sie aber nicht angehakt war, dann hake ich sie damit auch noch an :(


    Ja, das stimmt leider. Momentan sehe ich aber keine Möglichkeit abzufragen, ob die Symbolleiste aktiviert oder deaktiviert ist. Vielleicht geht sowas durch Verwendung der WinAPI. Aber da bin ich nicht firm.

    Edit:
    Ich habe dir mal eine Möglichkeit mit Ermittlung der Taskbar-Position erstellt. Dann bist du zumindest dabei unabhängig.

    Spoiler anzeigen
    [autoit]

    $TrayBarPos = WinGetPos("", "Notification Area" )
    Select
    Case $TrayBarPos[0] = -4
    If $TrayBarPos[1] = -4 And $TrayBarPos[2] = (@DesktopWidth +8) Then
    ; Position = "unten"
    $x=0
    $y=@DesktopHeight
    ElseIf $TrayBarPos[1] = -4 And $TrayBarPos[3] = (@DesktopHeight +8) Then
    ; Position = "rechts"
    $x=@DesktopWidth
    $y=0
    Else
    ; Position = "oben"
    $x=0
    $y=0
    EndIf
    Case Else
    ; Position = "links"
    $x=0
    $y=0
    EndSelect
    MouseClick("right", $x, $y, 1, 0)
    Send("y") ; Aufruf Menü Symbolleisten
    Sleep(100)
    Send("c") ; deaktiviert Schnellstart
    MouseClick("right", $x, $y, 1, 0)
    Send("y") ; Aufruf Menü Symbolleisten
    Sleep(100)
    Send("f") ; aktiviert FreeLaunchBar

    [/autoit]
  • Wie kann ich Symbolleisten an- oder abhaken

    • BugFix
    • 7. Januar 2007 um 15:54

    Ja Bernd, da hast du natürlich recht.
    ich habe noch etwas rumprobiert. Sollte aber die Taskbar unten sein, ist folgende Variante schneller und darüber lässt sich auch die FreeLaunchBar aktivieren.

    [autoit]

    Dim $x = 0, $y = @DesktopHeight
    MouseClick("right", $x, $y, 1, 0)
    Send("y") ; Aufruf Menü Symbolleisten
    Sleep(100)
    Send("c") ; deaktiviert Schnellstart
    MouseClick("right", $x, $y, 1, 0)
    Send("y") ; Aufruf Menü Symbolleisten
    Sleep(100)
    Send("f") ; aktiviert FreeLaunchBar

    [/autoit]

    Ideal wäre natürlich, wenn per RunDLL32 auch dieses Menü direkt aufgerufen werden könnte. Hab aber k.P. ob das geht.

  • Wie kann ich Symbolleisten an- oder abhaken

    • BugFix
    • 7. Januar 2007 um 14:45

    Hier eine Lösung, die funktioniert. Leider dauert das Eintragen der Änderung bei Windows recht lang, sodass das Eigenschaftsfenster noch 4-5 Sekunden sichtbar ist.

    [autoit]

    AutoItSetOption("WinTitleMatchMode", 4)
    Dim $x = 0, $y = @DesktopHeight
    MouseClick("right", $x, $y, 1, 0) ; Rechtsklick in unterste linke Ecke
    Send("i") ; Aufruf Kontextmenü Eigenschaften
    WinWaitActive("Eigenschaften von Taskleiste und Startmenü")
    ControlClick("Eigenschaften von Taskleiste und Startmenü", "", 1107) ; egal welcher Tab gerade sichtbar, das Control wird direkt angesprochen
    Send("{ENTER}") ; dauert etwas

    [/autoit]
  • Wie kann ich Symbolleisten an- oder abhaken

    • BugFix
    • 7. Januar 2007 um 11:16

    Die Einstellungen für die Taskbar findest du im Registry-Schlüssel: HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Streams\Desktop\

    Im Schlüssel "TaskbarWinXP" sind alle Informationen als Binärwert abgelegt. Du kannst also nicht gezielt einzelne Einstellungen verändern, sondern müsstest vorher wissen, wie sich dabei der Binärwert ändert.
    Ist also z.B. für unattended installation interessant, dass gleich die Voreinstellungen für die Taskbar wieder installiert werden.

    Bleibt also nur der Mausklick in den Taskbareigenschaften zum Deaktivieren der Schnellstartleiste.

  • 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]

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™