leider verstehe ich nicht, was das werden soll.
Aber ich steh ja öfter mal auf der Leitung ...
leider verstehe ich nicht, was das werden soll.
Aber ich steh ja öfter mal auf der Leitung ...
es muss doch nicht immer gleich eine externe Anwendung angesprochen werden.
Kann man alles mit AutoIt-Mitteln lösen:
WOL mit AutoIt:
#include-once
[/autoit] [autoit][/autoit] [autoit]; #INDEX# ===========================================================================================
; Title .........: _Net_Wol
; AutoIt Version: 3.3.0.0
; Language: English
; Description ...: Function that sends a Magic Packet for WOL to an specified IP-Address or Hostname
; ===================================================================================================
; #FUNCTION# ;=======================================================================================
;
; Name...........: _Net_Wol
; Description ...: Wake on Lan Function, by sending the "MagicPacket"
; Syntax.........: _Net_Wol($sWolMac, $sWolIp)
; Parameters ....: $sWolMac - The MAC-Address of the Network Adapter in the format "XXXXXXXXXXXX"
; X = [0-9 & A-F not case-sensitive]
; $sWolIp - The IPAdress of the NIC in the format "192.168.0.1"
; - or the Broadcast-Address of the Subnet in the format "192.168.0.255"
; - or the Internet Hostname of the NIC e.g. myhost.isp
; Return values .: Success - Returns 1
; Failure - Returns 0 and Sets @Error:
; |1 - Invalid $sWolMac
; |2 - Invalid $sWolIp
; |3 - Error sending "MagicPacket"
; Author ........: Schnuffel http://www.autoit.de
; Modified.......:
; Remarks .......: Internet Host name may not work behind NAT-Router's
; the Magic Packet is always send to the Broadcast-Address ".255"
; Return 1 means only, that the MagicPacket is been sent,
; it indicates not whether the Remote-PC ist really started
; Related .......:
; Link ..........;
; Example .......; Yes
; #include <_Net_Wol.au3>
; Send a WakeOnLan packet for the MAC-Address "0002A5840B46" to the SubNet "192.168.0"
; _Net_Wol("0002A5840B46", "192.168.0.255")
; ;==================================================================================================
Func _Net_Wol($sWolMac, $sWolIp, $iWolSwitch = 0)
If Not StringRegExp($sWolMac, "(\A[[:xdigit:]]{12}\z)") Then
SetError(1, 0, 1)
Return 0
EndIf
TCPStartup()
$sWolIp = TCPNameToIP($sWolIp)
TCPShutdown()
If Not StringRegExp($sWolIp, "\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}\b\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){1}\b") Then
SetError(1, 0, 2)
Return 0
EndIf
Local $sWolHeader, $sWolData, $sWolConnect, $sWolResult
For $p = 1 To 11 Step 2
$sWolData &= Chr(Dec(StringMid($sWolMac, $p, 2)))
Next
For $p = 1 To 6
$sWolHeader = Chr(Dec("ff")) & $sWolHeader
Next
For $p = 1 To 16
$sWolHeader &= $sWolData
Next
UDPStartup()
$sWolConnect = UDPOpen($sWolIp, 7)
$sWolResult = UDPSend($sWolConnect, $sWolHeader)
UDPCloseSocket($sWolConnect)
UDPShutdown()
If $sWolResult = "102" Then
Return 1
Else
SetError(1, 0, 3)
Return 0
EndIf
EndFunc ;==>_Net_Wol
Alina:
ich hab mal wieder meine geistigen Ergüsse nicht bei mir behalten können...
Ich hoffe, dass geht so in die richtige Richtung.
#include<File.au3>
#include<GUIConstantsEx.au3>
#include <ButtonConstants.au3>
$ini0 = @ScriptDir & "\test.ini"
$ini2 = @ScriptDir & "\para.ini"
If Not FileExists($ini0) Then _FileCreate($ini0)
[/autoit] [autoit][/autoit] [autoit]Dim $DTM_SETFORMAT_, $style
[/autoit] [autoit][/autoit] [autoit]$Form1 = GUICreate("44_45_46_47_CB_RB_RB", 360, 380, 193, 125)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]GUICtrlCreateGroup('MaxAge', 10, 10, 340, 100)
$Combobox46 = GUICtrlCreateCheckbox("aktivieren", 20, 30, 89, 15)
$Radio60 = GUICtrlCreateRadio("Radio60", 20, 55, 60, 15)
GUICtrlSetState(-1, $GUI_CHECKED)
$Radio61 = GUICtrlCreateRadio("Radio61", 20, 80, 60, 15)
$Input23 = GUICtrlCreateInput("1899", 100, 53, 33, 21)
$Date1 = GUICtrlCreateDate("2009/09/21 16:08:49", 100, 77, 90, 21)
GUICtrlSetState(-1, $GUI_DISABLE)
$DTM_SETFORMAT_ = 0x1032
$style = "dd.MM.yyyy"; HH:mm:ss"
GUICtrlSendMsg($Date1, $DTM_SETFORMAT_, 0, $style)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup('MinAge', 10, 120, 340, 100)
$Combobox47 = GUICtrlCreateCheckbox("aktivieren", 20, 140, 89, 15)
$Radio62 = GUICtrlCreateRadio("Radio62", 20, 165, 60, 15)
GUICtrlSetState(-1, $GUI_CHECKED)
$Radio63 = GUICtrlCreateRadio("Radio63", 20, 190, 60, 15)
$Input24 = GUICtrlCreateInput("1", 100, 163, 33, 21)
$Date2 = GUICtrlCreateDate("2009/09/21 16:08:49", 100, 187, 90, 21)
GUICtrlSetState(-1, $GUI_DISABLE)
$DTM_SETFORMAT_ = 0x1032
$style = "dd.MM.yyyy"; HH:mm:ss"
GUICtrlSendMsg($Date2, $DTM_SETFORMAT_, 0, $style)
GUICtrlCreateGroup("", -99, -99, 1, 1)
Global $a_cb46[5] = [$Combobox46,$Radio60,$Radio61,$Input23,$Date1]
Global $a_cb47[5] = [$Combobox47,$Radio62,$Radio63,$Input24,$Date2]
_changeState($a_cb46)
_changeState($a_cb47)
$Button2 = GUICtrlCreateButton("A U S G A B E", 5, 348, 346, 25, 0, $BS_CENTER)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $a_cb46[0]
_changeState($a_cb46)
Case $a_cb46[3], $a_cb46[1]
If BitAND(GUICtrlRead($a_cb46[1]), $GUI_CHECKED) = $GUI_CHECKED Then
GUICtrlSetState($a_cb46[3], $GUI_ENABLE)
GUICtrlSetState($a_cb46[4], $GUI_DISABLE)
If GUICtrlRead($a_cb46[3]) >= 1900 Then
MsgBox(0, "MELDUNG", "Wert maximal 1899")
GUICtrlSetData($a_cb46[3], "1899")
Else ; kleiner als 1900
IniWriteSection($ini0, "parameter", "MAXAGE=/MAXAGE:" & GUICtrlRead($a_cb46[3]))
IniWrite($ini2, "parameter", "MAXAGE", IniRead($ini0,"parameter", "MAXAGE","default"))
EndIf
Else
GUICtrlSetState($a_cb46[3], $GUI_DISABLE)
EndIf
Case $a_cb46[2], $a_cb46[4]
If BitAND(GUICtrlRead($a_cb46[2]), $GUI_CHECKED) = $GUI_CHECKED Then
GUICtrlSetState($a_cb46[4], $GUI_ENABLE)
GUICtrlSetState($a_cb46[3], $GUI_DISABLE)
Local $1_day ; ----------------> Anfang : ;Example_date1()
$1_day = StringSplit(GUICtrlRead($a_cb46[4]), ".", 1)
IniWriteSection($ini0, "parameter", "MAXAGE=/MAXAGE:" & $1_day[3] & $1_day[2] & $1_day[1])
IniWrite($ini2, "parameter", "MAXAGE", IniRead($ini0,"parameter", "MAXAGE","default"))
Else
GUICtrlSetState($a_cb46[4], $GUI_DISABLE)
EndIf
Case $a_cb47[0]
_changeState($a_cb47)
Case $a_cb47[3], $a_cb47[1]
If BitAND(GUICtrlRead($a_cb47[1]), $GUI_CHECKED) = $GUI_CHECKED Then
GUICtrlSetState($a_cb47[3], $GUI_ENABLE)
GUICtrlSetState($a_cb47[4], $GUI_DISABLE)
If GUICtrlRead($a_cb47[3]) >= 1900 Then
MsgBox(0, "MELDUNG", "Wert maximal 1899")
GUICtrlSetData($a_cb47[3], "1899")
Else ; kleiner als 1900
IniWriteSection($ini0, "parameter", "MINAGE=/MINAGE:" & GUICtrlRead($a_cb47[3]))
IniWrite($ini2, "parameter", "MINAGE", IniRead($ini0,"parameter", "MINAGE","default"))
EndIf
Else
GUICtrlSetState($a_cb47[3], $GUI_DISABLE)
EndIf
Case $a_cb47[2], $a_cb47[4]
If BitAND(GUICtrlRead($a_cb47[2]), $GUI_CHECKED) = $GUI_CHECKED Then
GUICtrlSetState($a_cb47[4], $GUI_ENABLE)
GUICtrlSetState($a_cb47[3], $GUI_DISABLE)
Local $1_day ; ----------------> Anfang : ;Example_date1()
$1_day = StringSplit(GUICtrlRead($a_cb47[4]), ".", 1)
IniWriteSection($ini0, "parameter", "MINAGE=/MINAGE:" & $1_day[3] & $1_day[2] & $1_day[1])
IniWrite($ini2, "parameter", "MINAGE", IniRead($ini0,"parameter", "MINAGE","default"))
Else
GUICtrlSetState($a_cb47[4], $GUI_DISABLE)
EndIf
Case $Button2
[/autoit] [autoit][/autoit] [autoit]EndSwitch
WEnd
Func _changeState($cID)
Select
Case BitAND(GUICtrlRead($cID[0]), $GUI_CHECKED) = $GUI_CHECKED
For $i = 1 To UBound($cID) - 1
GUICtrlSetState($cID[$i], $GUI_SHOW)
Next
Case Else
For $i = 1 To UBound($cID) - 1
GUICtrlSetState($cID[$i], $GUI_HIDE)
Next
EndSelect
EndFunc ;==>_changeState
Oscar :
ZitatZum einen ist es überflüssig ein 2D-Array zu verwenden, wenn man eh nur eine Dimension benutzt.
Hmmm, hast Recht, ich weiß gar nicht, was mich da nachts um 23.00Uhr in ein 2D-Array geritten hat
ZitatZum anderen die If-Abfragen, damit die Eingabefelder mit den entsprechenden Radio-Buttons de-/aktiviert werden.
Deine For...Next-Schleife in der Funktion war auch fehlerhaft, da sich in $cID[0][0] nicht die Anzahl der Array-Elemtente befindet.
Hmmm, ich hatte zuerst in $a_cb46[0][0] die Anzahl Array-Elemente drin, hab aber dann die Sache wieder über den Haufen geschmissen und vergessen dass in der Funktion zu ändern
ZitatDie Festlegung für das Datumsformat sollte man auch lieber beim erstellen des Controls benutzen. Es sei denn, man ändert das Format während der Laufzeit.
Na wenigstens bin ich da unschuldig dran, das habe ich so von Alina übernommen/unverändert gelassen, da sich mir der Sinn nicht erschlossen hatte ... ![]()
Alles in allem sage ich danke für die Korrekturen, denn nur so lerne auch ich immer weiter.
Was sagt mir das jetzt: Man sollte nachts um 23.00Uhr keine Scripte Anderer verschlimmbessern ... ![]()
Ich gelobe Besserung
Hallo Oscar,
was hast Du denn verändert?
ich wollte jetzt nicht beide Dateien vergleichen ...
ich hab Dein Beispiel mal ein wenig umgeschrieben.
mit dem Array für die jeweilige CHeckbox-Section bist Du Variabel,
um die Funktion _changeState universell nutzen zu können
#include<File.au3>
#include<GUIConstantsEx.au3>
#include <ButtonConstants.au3>
$ini = @ScriptDir & "\test.ini"
If Not FileExists($ini) Then _FileCreate($ini)
Dim $a_cb46[1][5]
[/autoit] [autoit][/autoit] [autoit]$Form1 = GUICreate("44_45_46_47_CB_RB_RB", 360, 180, 193, 125)
GUICtrlCreateGroup('Checkbox46',10,10,340,100)
$a_cb46[0][0] = GUICtrlCreateCheckbox("Checkbox46", 20, 30, 89, 15)
$a_cb46[0][1] = GUICtrlCreateRadio("Radio60", 20, 55, 60, 15)
$a_cb46[0][2] = GUICtrlCreateRadio("Radio61", 20, 80, 60, 15)
$a_cb46[0][3] = GUICtrlCreateInput("1899", 100, 53, 33, 21)
$a_cb46[0][4] = GUICtrlCreateDate("2009/09/21 16:08:49", 100, 77, 186, 21)
_changeState($a_cb46)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button1 = GUICtrlCreateButton("A U S G A B E", 5, 148, 346, 25, 0, $BS_CENTER )
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $a_cb46[0][0]
_changeState($a_cb46)
Case $a_cb46[0][3], $a_cb46[0][1]
if BitAND(GUICtrlRead($a_cb46[0][1]), $GUI_CHECKED) = $GUI_CHECKED And GUICtrlRead($a_cb46[0][3]) >=1900 Then
Msgbox(0,"MELDUNG", "Wert maximal 1899")
GUICtrlSetData($a_cb46[0][3],"1899")
EndIf
If BitAND(GUICtrlRead($a_cb46[0][1]), $GUI_CHECKED) = $GUI_CHECKED AND GUICtrlRead($a_cb46[0][3]) <=1899 Then
IniWriteSection($ini,"Werte","CheckBox46="&GUICtrlRead($a_cb46[0][3]))
EndIf
Case $a_cb46[0][2], $a_cb46[0][4]
If BitAND(GUICtrlRead($a_cb46[0][2]), $GUI_CHECKED) = $GUI_CHECKED Then
Local $DTM_SETFORMAT_, $style, $1_day ; ----------------> Anfang : ;Example_date1()
; Um ein bestimmtes Standardformat auszuwählen
$DTM_SETFORMAT_ = 0x1032
$style = "dd.MM.yyyy"; HH:mm:ss"
GUICtrlSendMsg($a_cb46[0][4], $DTM_SETFORMAT_, 0, $style)
;GUISetState()
$1_day = StringSplit(GUICtrlRead($a_cb46[0][4]),".",1)
IniWriteSection($ini,"Werte","CheckBox46="&$1_day[3]&$1_day[2]&$1_day[1])
EndIf
Case $Button1
EndSwitch
WEnd
Func _changeState($cID)
Select
Case BitAND(GUICtrlRead($cID[0][0]), $GUI_CHECKED) = $GUI_CHECKED
For $i = 1 To $cID[0][0]
GUICtrlSetState($cID[0][$i], $GUI_SHOW)
Next
Case Else
For $i = 1 To $cID[0][0]
GUICtrlSetState($cID[0][$i], $GUI_HIDE)
Next
EndSelect
EndFunc ;==>_changeState
@ScriptDir ist Dein Freund
Hallo Alina,
irgendwie finde ich in deinem Script Fehler über Fehler.
- zum testen fehlt ein include #include <GuiConstants.au3>
- $1_day = StringSplit(GUICtrlRead($Date1),".",1) ergibt kein Array in deinem Sinne, da GUICtrlRead($Date1) 0 ergibt
...
da müsste man erstmal alle Ungenauigkeiten beseitigen.
wenn Du uns ein Demo-Script einstellst zum testen, dann wird es sicher Antworten hageln ...
dazu musst Du in einer Variable vorhalten,
wieviele Einträge die Sektion schon hat und dann dementsprechend
den nächsten Eintrag mit "Quelle"&$anzahl +1 schreiben
Einfach mit IniReadSection beim Start einlesen und [0][0] auswerten
Im Programm hochzählen ...
nein, du musst einen neuen Key schreiben
IniWrite('save.ini', 'Backup', 'Quelle', $var1) ;Hier wird immer derselbe Wert überschrieben?!
in diesem Fall ist Quelle Dein Key .....
Quelle1
Quelle2
Quelle3
wäre eine Möglichkeit ...
versuch es mal mit damit, hab ich bei Google gefunden (hättest Du bestimmt auch gefunden ...)
http://www.ojaehrling.de/Eisfair-Pakete/7zip/
ich hab mich mal aus Langeweile an die Vergleichsfunktion gemacht ...
In der Funktion wird nur mit Buchstaben verglichen.
Sonderzeichen und Zahlen und der gleichen werden nicht berücksichtigt.
Vielleicht ist das ja hilfreich
#include <Array.au3>
; benötigt die LevenshteinDistance.dll von Bernd670
$Str1 = '"Sweet(&%$§"!$ 123_About Me":Gabriella Cilmi'
$Str2 = 'Gabriella Cilmi: "Sweet About Me"'
MsgBox(0,'', CompTwoStr($Str1, $Str2))
[/autoit] [autoit][/autoit] [autoit]Func CompTwoStr($s, $t)
Local $a_str1, $a_str2, $a_str1_result, $a_str2_result
Local $hDLL = DllOpen("LevenshteinDistance.dll")
Local $n = StringLen($s)
Local $m = StringLen($t)
If $n < $m Then $n = $m
$a_str1=StringSplit(StringRegExpReplace($s, '\W|_|[0-9]', " ")," ",2)
_arraysort($a_str1)
$a_str1_result = _ArrayFindAll($a_str1, "")
For $i = 1 To UBound($a_str1_result)
_ArrayDelete($a_str1,$a_str1_result[0])
Next
$s = _ArrayToString($a_str1,"")
$a_str2=StringSplit(StringRegExpReplace($t, '\W|_|[0-9]', " ")," ",2)
_arraysort($a_str2)
$a_str2_result = _ArrayFindAll($a_str2, "")
For $i = 1 To UBound($a_str2_result)
_ArrayDelete($a_str2,$a_str2_result[0])
Next
$t = _ArrayToString($a_str2,"")
$arDLL = DllCall($hDLL, "int", "LevenshteinDistance", "str", $s, "str", $t)
DllClose($hDLL)
If IsArray($arDLL) Then Return ($n - $arDLL[0]) / $n
EndFunc
Edit: hatte ganz übersehen, dass dabei noch nicht Zahlen und der Unterstrich mit gefiltert werden.
Jetzt sollte es aber passen ![]()
Hallo Simon,
ich liege vielleicht daneben, aber ich hatte auch mal so einen Fall bei Strato und bin fast verzweifelt.
Ergebnis: Telnet ist !nicht! zwingend in jedem Paket enthalten!!!
In irgendeiner Help-File bei Strato stand dann, in welchen Paketen es überhaupt einen Telnet Zugang gibt.
Hab leider den Link nicht dazu.
Du wirst das schon finden ![]()
Hallo subzero007
die 12 bei Deiner Ausgabe ist die CtrlID des Elements selbst.
Versuche es mal mit:
Func _iniwrite()
FileDelete($ini)
Local $checked = 0
For $i = 0 To 6
If BitAND(GUICtrlRead($arCheckBox[$i]), $GUI_CHECKED) Then
$checked = BitOR($checked, 2 ^ $i)
EndIf
Next
For $i = 0 To _GUICtrlListView_GetItemCount($hListView) - 1;hier zählst du die einträge
$var1 = _GUICtrlListView_GetItemText($hListView, $i, 0)
$var2 = _GUICtrlListView_GetItemText($hListView, $i, 1)
IniWrite('save.ini', 'Backup', 'Quelle', $var1)
IniWrite('save.ini', 'Backup', 'Ziel', $var2)
Next
; Next
IniWrite('save.ini', 'Wochentag', 'tage', $checked)
Msgbox(0,"", GUICtrlRead($time))
IniWrite('save.ini', 'Startzeit', 'Uhr', GUICtrlRead($time))
EndFunc ;==>_iniwrite
[/autoit]naja, dann rufe nach GuiSetState deine Funktion auf.
Danach läuft Dein Script ab da einfach weiter, wenn in der Func keine Schleife ist.
Verstehe Dein Problem nicht so ganz
Hallo Alina,
damit du flexibler in der Anzahl Deiner Checkboxen bist,
würde ich das mit einem Array und einer For-Schleife machen...
#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]GUICreate("Checkboxauswertung ",150,220)
Global $ted, $count
Global $cb[11] = [11, _
GUICtrlCreateCheckbox("Box 1", 10, 10), _
GUICtrlCreateCheckbox("Box 2", 10, 30), _
GUICtrlCreateCheckbox("Box 3", 10, 50), _
GUICtrlCreateCheckbox("Box 4", 10, 70), _
GUICtrlCreateCheckbox("Box 5", 10, 90), _
GUICtrlCreateCheckbox("Box 6", 10, 110), _
GUICtrlCreateCheckbox("Box 7", 10, 130), _
GUICtrlCreateCheckbox("Box 8", 10, 150), _
GUICtrlCreateCheckbox("Box 9", 10, 170), _
GUICtrlCreateCheckbox("Box 10", 10, 190)]
$Button = GUICtrlCreateButton("OK",75,20,50,50)
GUICtrlSetState(-1, $GUI_FOCUS) ; "OK" - Button im Fokus
GUISetState()
Example()
Func Example()
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
Case $msg = $Button
$ted = ""
$count = 0
For $i = 1 To UBound($cb)-1
IF BitAND(GUICtrlRead($cb[$i]),$GUI_CHECKED) Then
$ted &= $i&","
$count += 1
EndIf
Next
Switch $count
Case 0
MsgBox(0, '',"Es sind keine Checkboxen aktiv")
Case 1
MsgBox(0, '',"Die Checkbox "&StringTrimRight($ted,1)&" ist aktiv")
Case Else
MsgBox(0, '',"Die Checkboxen "&StringTrimRight($ted,1)&" sind aktiv")
EndSwitch
EndSelect
WEnd
EndFunc
Edit: da hatte sich doch glatt noch ein Fehler eingeschlichen.
Edit2: so, jetzt fallen mir auf die Schnelle keine Verbesserungen mehr ein ![]()
ich weiß nicht, ob du das bereits verwendest, aber auf jeden Fall brauchst Du das:
[autoit]Opt("WinTitleMatchMode", 2)
[/autoit]nimm einfach:
[autoit]ShellExecute("firefox.exe")
[/autoit]