Wow, das ich mal ein Beitrag eines Admins verschieben darf hätte ich mir nie Träumen lassen
Von Skripte --> H&Ü!
Gruß
Spider
Wow, das ich mal ein Beitrag eines Admins verschieben darf hätte ich mir nie Träumen lassen
Von Skripte --> H&Ü!
Gruß
Spider
Heyho,
Da ich nun paar Anfragen darauf bekommen habe, was das für ein Skin ist, hier mal der Link (Ja! Es ist ein echter Skin und nicht nur ein Bild^^):
http://omnimo.info/
Außerdem braucht ihr "Rainmeter".
Gruß
Spider
Heyho,
"Livin' in the future"
[Blockierte Grafik: http://h82t.img-up.net/Unbenannteo4sd.jpg]
Ist aber Win7 mit Rainmeter
Gruß
Spider
Heyho,
Du könntest z.B. 250ms in der primary_down funktion warten, und dann mit Hilfe einer Globalen Variable überprüfen, ob kurz danach die double Funktion aufgerufen wurde. Falls ja --> Return bei der Down Funktion
Gruß
Spider
(Um nur einiges zu nennen)
Die Frage wäre vielleicht besser gestellt: Wofür könnt ihr AutoIt nicht verwenden?
Gruß
Spider
Gibt ja aber sowas wie die Hilfe Oben auf dieser Page auf "Online-Hilfe" klicken.
Gruß
Spider
Probiers mal mit ShellExecute bzw. ShellExecuteWait
Gruß
Spider
Hallo Poker,
Inklusive heißt immer einschließlich. Also sind die 14,00€ in dem Preis eingeschlossen. Also Zahlst du 86€
Allerdings steht dadrunter "zzgl. Versandkosten" also zuzüglich Versandkosten, also sind die Versandkosten nicht mit eingerechnet
Gruß
Spider
Heyho,
Das Teil is über ein Jahr alt Heute würde grade für sowas eher mit der TCP UDF (Event Driven) (einfach mal googlen) arbeiten. Funktioniert nämlich schon über Callbacks
Gruß
Spider
Heyho,
https://autoit.de/www.lmgtfy.com/?q=listview+progress+autoit
Da gibts auch irgendwo eine RegisterMsg Funktion die das verhindert!
Gruß
Spider
Heyho,
Vielen Dank Schon wieder ein Jahr älter
Gruß
Max
Heyho,
Kann paar Links nicht anpingen, die allerdings online seien sollten z.B. amazon.de oder gtaspider.de...
Gruß
Spider
jay Was war denn falsch?
@SW_MAXIMIZE muss ein Komma nach hinten, atm is er bei dem Pfad;) Also [...] .cmd"', "", @SW_MAXIMIZE
Heyho,
@COMSPEC ist schon cmd.exe (hieß unter Win95 oder so mal nicht cmd.exe sondern irgendwie anders ;-))
[autoit]Run(@COMSPEC & ' /k "C:\Programme\Windows AIK\Tools\PETools\pesetenv.cmd"',@SW_MAXIMIZE)
[/autoit]Gruß
Spider
Hallo,
Ah, alles klar, danke
Ich habe es jetzt tatsächlich gelöst bekommen, IP_PROTO ist 0 aber ADD_MEMBERSHIP ist 12, nicht 5! Endlich funktioniert es komplett, falls es irgendwann mal aus irgendeinem Grund jemand brauchen sollte:
;======================
;Multicast Datagram
;By Max Reble
;http://www.maxreble.de
;======================
Dim $SOL_SOCKET = 0xffff
Dim $SO_REUSEADDR = 4
Dim $SOCK_DGRAM = 2
Dim $AF_INET = 2
Dim $IPPROTO_UDP = 17
Dim $IPPROTO_IP = 0
Dim $IP_ADD_MEMBERSHIP = 12
Dim $INADDR_NONE = 0xffffffff
Dim $INADDR_ANY = "0.0.0.0"
Global $hWs2_32 = DllOpen("Ws2_32.dll")
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]ConsoleWrite(_GetIPFromDevice() & @CRLF)
[/autoit] [autoit][/autoit] [autoit]Func _GetIPFromDevice()
Local $aRecv, $sZero
UDPStartup()
Local $bSearchGroup = "Search_Group:0"
Local $bPopServer = "Pop_Server:"&@IPAddress1
Do
$sZero &= Chr(0)
Until StringLen($sZero) = 64
$bSearchGroup = Binary($bSearchGroup & StringTrimLeft($sZero,StringLen($bSearchGroup)))
$bPopServer = Binary($bPopServer & StringTrimLeft($sZero,StringLen($bPopServer)))
Local $aUDP = _ConnectGroup("225.1.1.1", 5555)
If @error Then Return SetError(1,@error,0*UDPShutdown())
Local $hUPDopen = UDPOpen("225.1.1.1", 5555)
If @error Then Return SetError(2,@error,0*UDPShutdown())
If UDPSend($hUPDopen, $bSearchGroup) <> BinaryLen($bSearchGroup) Then Return SetError(3,0,0*UDPShutdown())
If UDPSend($hUPDopen, $bPopServer) <> BinaryLen($bPopServer) Then Return SetError(4,0,0*UDPShutdown())
UDPCloseSocket($hUPDopen)
Local $hTi = TimerInit()
While TimerDiff($hTi) < 30000
$aRecv = UDPRecv($aUDP, 1024,2)
If @error Then Return SetError(5,@error,0*UDPShutdown())
If IsArray($aRecv) Then
ConsoleWrite($aRecv[0] & @CRLF)
If StringInStr($aRecv[0],"Group_Device") Then ExitLoop
EndIf
Sleep(50)
WEnd
UDPCloseSocket($aUDP)
UDPShutdown()
If Not IsArray($aRecv) Then Return SetError(6,0,0)
Return $aRecv[1]
EndFunc
Func _ConnectGroup($sIPAddr, $iPort)
Local $iDllErr, $fError = False, $aRes, $iRet, $iLastEr
Local $tIPmreq, $tSockAddr
Local $hSock = _WinSock_Socket($AF_INET, $SOCK_DGRAM, $IPPROTO_UDP)
If @error Then
$iDllErr = 3
ElseIf $hSock = $INADDR_NONE Or $hSock = -1 Then
$fError = True
Else
If $iDllErr = 0 Then
$tIPmreq = _WinSock_Struct_IPmreq()
If _WinSock_SetSockOpt($hSock,$SOL_SOCKET,$SO_REUSEADDR,$tIPmreq) <> 0 Then
$fError = True
Else
Local $tSockAddr = _WinSock_Struct_SockAddr($INADDR_ANY, $iPort, $AF_INET)
$iRet = _WinSock_Bind($hSock,$tSockAddr)
Select
Case @error
$iDllErr = 4
Case $iRet <> 0
$iLastEr = _WSAGetLastError()
If $iLastEr = 10035 Then ContinueCase
$fError = True
case Else
$tIPmreq = _WinSock_Struct_IPmreq($sIPAddr,$INADDR_ANY,$tIPmreq)
If _WinSock_SetSockOpt($hSock,$IPPROTO_IP,$IP_ADD_MEMBERSHIP,$tIPmreq) <> 0 Then $fError = False
EndSelect
EndIf
EndIf
EndIf
If $iDllErr Then
UDPCloseSocket($hSock)
$hSock = -1
ElseIf $fError Then
$iDllErr = _WSAGetLastError()
If $iDllErr = 0 Then $iDllErr = 5
$hSock = -1
Else
Local $udparr[4] = [45454545, $hSock, $INADDR_ANY, 5555]
EndIf
Return SetError($iDllErr, 0, $udparr)
EndFunc ;==>_ConnectGroup
Func _WinSock_InetAddr($sIP)
$aRet = DllCall($hWs2_32, "uint", "inet_addr", "str", $sIP)
If @error Then Return SetError(@error,0,-1)
Return $aRet[0]
EndFunc ;==>_inet_addr
Func _WinSock_SetSockOpt($hSock,$iLevel,$iOptName,$tIPmreq)
$aRes = DllCall($hWs2_32, "int", "setsockopt", "int", $hSock, "int", $iLevel, "int", $iOptName, "ptr", DllStructGetPtr($tIPmreq), "int", DllStructGetSize($tIPmreq))
If @error Or $aRes[0] <> 0 Then Return SetError(1,0,-1)
Return $aRes[0]
EndFunc
Func _WinSock_htons($iHost)
$aRet = DllCall($hWs2_32, "ushort", "htons", "ushort", $iHost)
If @error Then Return SetError(@error,0,-1)
Return $aRet[0]
EndFunc
Func _WinSock_Struct_IPmreq($sImr_multiaddr = "",$sImr_interface = "",$tIPmreq = -1);IP,IP
If $tIPmreq = -1 Then $tIPmreq = DllStructCreate("ulong imr_multiaddr;ulong imr_interface")
If @error Then Return SetError(1,@error,0)
$sImr_multiaddr = _WinSock_InetAddr($sImr_multiaddr)
If @error Or $sImr_multiaddr = $INADDR_NONE Then Return SetError(2,_WSAGetLastError(),False)
DllStructSetData($tIPmreq,1,$sImr_multiaddr)
$sImr_interface = _WinSock_InetAddr($sImr_interface)
If @error Or $sImr_interface = $INADDR_NONE Then Return SetError(3,_WSAGetLastError(),False)
DllStructSetData($tIPmreq,2,$sImr_interface)
Return $tIPmreq
EndFunc
Func _WinSock_Struct_SockAddr($sIP, $iPort, $iAddressFamily = 2)
Local $iRet, $tSockAddr
$tSockAddr = DllStructCreate("short; ushort; uint; char[8]")
If @error Then Return SetError(1, @error,0)
DllStructSetData($tSockAddr, 1, $iAddressFamily)
[/autoit] [autoit][/autoit] [autoit]$iPort = _WinSock_htons($iPort)
If @error Then Return SetError(2,@error,0)
DllStructSetData($tSockAddr, 2, $iPort)
$sIP = _WinSock_InetAddr($sIP)
If $sIP = $INADDR_NONE Then Return SetError(3, _WSAGetLastError(),False)
DllStructSetData($tSockAddr, 3, $sIP)
Return $tSockAddr
EndFunc ;==>___SockAddr
Func _WinSock_Bind($hSock,$tSockAddr)
Local $aRes = DllCall($hWs2_32, "int", "bind", "uint", $hSock, "ptr", DllStructGetPtr($tSockAddr), "int", DllStructGetSize($tSockAddr))
If @error Then Return SetError(1,0,-1)
Return $aRes[0]
EndFunc
Func _WinSock_Socket($iAddressFamily = 2, $iType = 1, $iProtocol = 6)
Local $hSocket = DllCall($hWs2_32, "uint", "socket", "int", $iAddressFamily, "int", $iType, "int", $iProtocol)
If @error Then Return SetError(1, @error,-1)
If $hSocket[0] = -1 Then Return SetError(2, _WSAGetLastError(),-1)
Return $hSocket[0]
EndFunc ;==>___ASocket
Func _WSAGetLastError()
Local $iRet = DllCall($hWs2_32, "int", "WSAGetLastError")
If @error Then Return 0
Return $iRet[0]
EndFunc ;==>___WSAGetLastError
Gruß
Spider
Heyho,
Stimmt. Ich habe nochmal etwas weiter geforscht und habe nun aus der TCP udf event driven (die ich btw auch schon seit Jahren nutze ) die ___A... funktionen extrahiert, nun klappt zumindest das.
Leider stehe ich nun vor nem neuen Problem, natürlich.. Ich bekomme es nicht hin, dass die Dll mich in die datagram gruppe hinzufügt., das Problem liegt bei dem DLL Aufruf in Zeile 67. Er gibt mir immer als Fehler 10042 zurück (WSAENOPROTOOPT: Bad protocol option.)
Es kann sein, dass es an den falschen globalen Variablen liegt, ich kann mir eigentlich kaum vorstellen, dass IPPROTO_IP = 0 ist. Aber im Internet findet man nur wenig darüber, irgendwo habe ich aber "#define IPPROTO_IP 0" gelesen.. Gibt es ne Möglichkeit diese Variablen irgendwo her alle zu bekommen? Und was ist die INADDR_ANY IP? Ist das 255.255.255.255?
Hier mal der Code, wäre super wenn sich das nochmal jemand angucken kann, progandy, dir aber schonmal vielen Dank
Dim $SOL_SOCKET = 0xffff
Dim $SO_REUSEADDR = 4
Dim $SOCK_DGRAM = 2
Dim $AF_INET = 2
Dim $IPPROTO_UDP = 17
Dim $IPPROTO_IP = 0
Dim $IP_ADD_MEMBERSHIP = 5
Dim $hWs2_32 = DllOpen("Ws2_32.dll")
[/autoit] [autoit][/autoit] [autoit]UDPStartup()
[/autoit] [autoit][/autoit] [autoit]$sTCP = _ConnectGroup("225.1.1.1", 5555)
ConsoleWrite("sTCP: " & $sTCP & " - error: " & @error & @CRLF)
Func _ConnectGroup($sIPAddr, $iPort, $iTimeOut = -1)
Local $INADDR_ANY = "255.255.255.255";Ist das wahr?
Local $iDllErr, $fError = False, $aRes
Local $hSock = ___ASocket($AF_INET, $SOCK_DGRAM, $IPPROTO_UDP)
If @error Then
$iDllErr = 3
ElseIf $hSock = 4294967295 Or $hSock = -1 Then
$fError = True
Else
ConsoleWrite("Socket: "&$hSock & @CRLF)
If 0 = $iDllErr Then
Local $tIPmreq = DllStructCreate("ulong imr_multiaddr;ulong imr_interface")
;~ DllStructSetData($tIPmreq, 1, _inet_addr("225.1.1.1",$hWs2_32))
;~ DllStructSetData($tIPmreq, 2, @IPAddress1)
$hDll = DllCall($hWs2_32, "uint", "setsockopt", "int", $hSock, "int", $SOL_SOCKET, "int", $SO_REUSEADDR, "ptr", DllStructGetPtr($tIPmreq), "int", DllStructGetSize($tIPmreq))
ConsoleWrite($hDll[0] & @CRLF)
$tSockAddr = ___SockAddr("127.0.0.1", $iPort, $AF_INET)
$aRes = DllCall($hWs2_32, "int", "bind", "uint", $hSock, "ptr", DllStructGetPtr($tSockAddr), "int", DllStructGetSize($tSockAddr))
Select
Case @error
$iDllErr = 4
Case $aRes[0] <> 0
ConsoleWrite("!" & $aRes[0] & @CRLF)
$aRes = DllCall($hWs2_32, "int", "WSAGetLastError")
If Not @error And $aRes[0] = 10035 Then ContinueCase
$fError = True
Case $iTimeOut > -1
ConsoleWrite("52353252623" & @CRLF)
If IsKeyword($iTimeOut) Or $iTimeOut = 0 Then $iTimeOut = Opt("TCPTimeout")
Local $t = DllStructCreate("uint;int")
DllStructSetData($t, 1, 1)
DllStructSetData($t, 2, $hSock)
Local $to = DllStructCreate("long;long")
DllStructSetData($to, 1, Floor($iTimeOut / 1000))
DllStructSetData($to, 2, Mod($iTimeOut, 1000))
$aRes = DllCall($hWs2_32, "int", "select", "int", $hSock, "ptr", DllStructGetPtr($t), "ptr", DllStructGetPtr($t), "ptr", 0, "ptr", DllStructGetPtr($to))
If Not @error And $aRes[0] = 0 Then
$aRes = DllCall($hWs2_32, "int", "WSAGetLastError")
If Not @error And $aRes[0] = 0 Then
$iDllErr = 10060
Else
$fError = True
EndIf
Else
DllCall($hWs2_32, "int", "ioctlsocket", "int", $hSock, "long", 0x8004667e, "uint*", 0)
EndIf
EndSelect
DllStructSetData($tIPmreq, 1, _inet_addr("225.1.1.1",$hWs2_32))
DllStructSetData($tIPmreq, 2, _inet_addr("9.5.1.1",$hWs2_32))
$hDll = DllCall($hWs2_32, "int", "setsockopt", "int", $hSock, "int", $IPPROTO_IP, "int", $IP_ADD_MEMBERSHIP, "ptr", DllStructGetPtr($tIPmreq), "int", DllStructGetSize($tIPmreq))
ConsoleWrite("setsockopt:" & @CRLF)
ConsoleWrite(Hex($hDll[0]) & @CRLF)
ConsoleWrite(___WSAGetLastError() & @CRLF)
EndIf
EndIf
If $iDllErr Then
ConsoleWrite("!iDllErr: " & $iDllErr & @CRLF)
TCPCloseSocket($hSock)
$hSock = -1
ElseIf $fError Then
ConsoleWrite("fError: " & $fError & @CRLF)
$iDllErr = DllCall($hWs2_32, "int", "WSAGetLastError")
If Not @error Then $iDllErr = $iDllErr[0]
If $iDllErr = 0 Then $iDllErr = 5
$hSock = -1
EndIf
TCPCloseSocket($hSock)
DllClose($hWs2_32)
Return SetError($iDllErr, 0, $hSock)
EndFunc ;==>_ConnectGroup
Func _inet_addr($sIP,$hDll = "")
$aRet = DllCall($hDll, "uint", "inet_addr", "str", $sIP)
Return SetError(@error,0,$aRet[0])
EndFunc
Func ___ASocket($iAddressFamily = 2, $iType = 1, $iProtocol = 6)
Local $hSocket = DllCall($hWs2_32, "uint", "socket", "int", $iAddressFamily, "int", $iType, "int", $iProtocol)
If @error Then
SetError(1, @error)
Return -1
EndIf
If $hSocket[0] = -1 Then
SetError(2, ___WSAGetLastError())
Return -1
EndIf
Return $hSocket[0]
EndFunc ;==>___ASocket
; A wrapper function to ease all the pain in creating and filling the sockaddr struct
Func ___SockAddr($sIP, $iPort, $iAddressFamily = 2)
Local $iRet
Local $stAddress
If $hWs2_32 = -1 Then $hWs2_32 = DllOpen("Ws2_32.dll")
[/autoit] [autoit][/autoit] [autoit]$stAddress = DllStructCreate("short; ushort; uint; char[8]")
If @error Then
SetError(1, @error)
Return False
EndIf
DllStructSetData($stAddress, 1, $iAddressFamily)
$iRet = DllCall($hWs2_32, "ushort", "htons", "ushort", $iPort)
DllStructSetData($stAddress, 2, $iRet[0])
$iRet = DllCall($hWs2_32, "uint", "inet_addr", "str", $sIP)
If $iRet[0] = 0xffffffff Then; INADDR_NONE
$stAddress = 0; Deallocate
SetError(2, ___WSAGetLastError())
Return False
EndIf
DllStructSetData($stAddress, 3, $iRet[0])
Return $stAddress
EndFunc ;==>___SockAddr
Func ___WSAGetLastError()
[/autoit] [autoit][/autoit] [autoit]Local $iRet = DllCall($hWs2_32, "int", "WSAGetLastError")
If @error Then
;ConsoleWrite("+> _WSAGetLastError(): WSAGetLastError() failed. Script line number: " & @ScriptLineNumber & @CRLF)
SetExtended(1)
Return 0
EndIf
Return $iRet[0]
EndFunc ;==>___WSAGetLastError
Gruß
Spider
Jep, ich weiß, sorry, habe es nochmal mit allen Möglichkeiten getestet und es dann mit falschen Werten hier rein gepostet.
Problem ist eben, das er über genau diesen DLLCall nicht herrüber kommt. Er gibt mir immer ein falschen socket raus!
Was gibt er denn bei dir aus, wenn du den Befehl ausführst? Und bei welchem OS?
Gruß
Spider
HEyho,
Jep, das ist wahr. Allerdings scheitert es ja schon am ersten DLL Call
Gruß
Spider