Counter ist nur eine Variable, die du zum zählen benutzt.
Im Bsp. wird der Zähler in jedem Durchlauf um eins erhöht.
$counter = 0
while 1
;code
$counter = $counter + 1
wend
Counter ist nur eine Variable, die du zum zählen benutzt.
Im Bsp. wird der Zähler in jedem Durchlauf um eins erhöht.
$counter = 0
while 1
;code
$counter = $counter + 1
wend
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.
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.
[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
#include <file.au3>
Dim $INIPfad = @ScriptDir & "\test.ini"
Dim $QuellPfad = "D:\TEST\"
Dim $ZielPfad = "D:\TEST\moved\"
; Array mit allen Files, die nicht verschoben werden sollen
$arNoMove = IniReadSection($INIPfad, "NoMove")
; 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
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
Da mein Weib gerade zum Essen ruft, muss der Rest noch etwas warten. ![]()
Also bis gleich.
![]()
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.
Dim $QuellPfad = "C:\TEST\" ; mußt du anpassen
Dim $ZielPfad = "C:\ModFiles\" ; mußt du anpassen
FileMove($QuellPfad & "*.iwd", $ZielPfad)
Hi,
ich habe noch 'ne Variante für dich (übrigens, in der Registry gibt es keinen Vermerk der MAC-Adressen)
#include <file.au3>
#include <string.au3>
#include <array.au3>
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
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
_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:
ZitatC:\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.
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 ![]()
Guten Rutsch auch.
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.
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"
; 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)
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.
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
; aktuellen Bildschirmschoner deaktivieren
RegWrite($CurrSvrKey, $IsActive, $type, 0)
RegDelete($CurrSvrKey, $CurrSvr)
; 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
Dein Script enthält einen marginalen Fehler.
Du verwendest
Return 0
[/autoit]ausserhalb einer Funktion. Return ist aber ausschliesslich zur Nutzung in Funktionen vorbehalten.
ZitatUse the Return keyword to exit the function. Unlike built-in functions, user-defined functions return 0 unless another return value is specified.
Linksbündig ist default, das brauchst du nicht einstellen
für Spalte 3 (rechtsbündig) gilt:
#Include <GuiListView.au3>
_GUICtrlListViewJustifyColumn ($listview,2,1)
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.
Der Link heisst: "href="http://service.gmx.net/de/cgi/g.fcgi/mail/index?FOLDER=inbox&CUSTOMERNO=xxxxxxxx&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.
Danke Mega, wieder etwas schlauer ![]()
While $while < GUICtrlREad($Input_amount)
If $stop = 1 Then
ExitLoop
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:
While $while < GUICtrlREad($Input_amount)
If $stop = 1 Then
Return $returnvariable ;
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!
#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")
$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
Beispiel Aufruf 'freeCommander':
[autoit]AutoItSetOption("WinTitleMatchMode", 4)
WinWaitActive("classname=TfcForm") ; ACHTUNG! keine Leerzeichen!
MsgBox(0, '', "Fenster ist aktiv")
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.
Mit GUICtrlSetColor() kann ich die Farbe für das Grafikcontrol festlegen. Grafikelemente werden mit GUICtrlSetGraphic(-1,$GUI_GR_COLOR, color, backcolor) definiert.
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?
#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
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
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.