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. Micha_he

Beiträge von Micha_he

  • Frage wegen .ini abfrage

    • Micha_he
    • 10. Januar 2009 um 00:01

    zu 2.

    [autoit]

    ShellExecute($cod2, '+connect "85.153.5.155:28960" +set password "5544" +set cl_maxpackets "100" +set rate "25000" +set com_maxfps "0" +set name ' & GUICtrlRead($input1), $cod22)

    [/autoit]
  • Übergeordnetes Verzeichnis...

    • Micha_he
    • 9. Januar 2009 um 23:32
    [autoit]

    ; 1. Möglichkeit
    RunWait(@ScriptDir & "\..\Test.exe")

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

    ; 2. Möglichkeit
    $parentDir = StringLeft(@scriptdir, StringInStr(@scriptdir,"\",2,-1)-1)
    RunWait($parentDir & "\Test.exe")

    [/autoit]
  • Remote scannen mit IrfanView

    • Micha_he
    • 7. Januar 2009 um 16:59

    Ich brauchte die Tage eine Lösung, um parallel von 2 Rechnern mit einem Scanner zu arbeiten.

    Herausgekommen ist folgende Lösung:

    Server-Rechner:
    - Server-Script
    - Irfanview
    - Port (Std. 39200) ist freigegeben
    - keine Adminrechte notwendig
    - Speicherort auf dem ein Scan abgelegt werden kann

    Server-Script
    [autoit]

    #NoTrayIcon
    #compiler_icon=nwscan.ico
    #compiler_outfile=RemoteIVScan_Server.exe

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

    Opt("TrayMenuMode",1)
    Opt("TrayOnEventMode",1)
    Opt("MustDeclareVars",1)
    FileInstall("nwscan.ico",@TempDir & "\nwscan.ico",1)

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

    Dim $pid, $trayexit, $ziel, $socketId, $acceptSocketId, $IVprogramm
    Dim $port = 39200
    Dim $aufloesung = 150
    ; Fenstertexte (z.B. die des Twain Treibers) die während des
    ; Scanvorgangs versteckt werden sollen
    Dim $fenster[2] = ["Der Scanner befindet sich in der Aufwärmphase","Scanvorgang läuft"]

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

    If FileExists(@ScriptDir & "\i_view32.exe") Then
    $IVprogramm = @ScriptDir & "\i_view32.exe"
    Else
    If FileExists(@ProgramFilesDir & "\IrfanView\i_view32.exe") Then $IVprogramm = @ProgramFilesDir & "\IrfanView\i_view32.exe"
    EndIf

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

    If $IVprogramm = "" Then
    MsgBox(48,"Fehler","Das notwendige Tool 'IrfanView' wurde weder in '" & @ScriptDir &"' noch in '" & @ProgramFilesDir & "' gefunden !")
    Exit
    EndIf

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

    $trayexit = TrayCreateItem("RemoteIVScan Server beenden")
    TrayItemSetOnEvent(-1,"ExitEvent")
    TraySetIcon(@TempDir & "\nwscan.ico")
    TraySetToolTip ("RemoteIVScan Server")
    TraySetState()

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

    TCPStartup()
    $socketId = TCPListen(@IPAddress1,$port)
    If $socketId = -1 Then
    Msgbox(48,"Fehler","Der TCP Port " & $port & " konnte NICHT zur Kommunikation geöffnet werden !")
    TCPShutDown()
    Exit
    Else
    While 1
    Do
    $acceptSocketId = TCPAccept($socketId)
    Until $acceptSocketId <> -1
    $ziel = ""
    While 1
    $ziel &= TCPRecv($acceptSocketId,2048)
    If @error Then ExitLoop
    Wend
    If FileExists(StringLeft($ziel,StringInStr($ziel,"\",2,-1))) Then
    $pid = Run($IVprogramm & " /scanhidden /dpi=(" & $aufloesung & "," & $aufloesung & ") /convert=" & $ziel,"",@SW_HIDE)
    While ProcessExists($pid)
    For $i = 0 To UBound($fenster)-1
    If WinWait("",$fenster[$i],1) = 1 Then WinSetState("",$fenster[$i],@SW_HIDE)
    Next
    Wend
    Sleep(500)
    If FileGetSize($ziel) = 0 Then FileDelete($ziel)
    EndIf
    Wend
    EndIf

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

    Func ExitEvent()
    TCPCloseSocket($socketId)
    TCPShutDown()
    If FileExists(@TempDir & "\nwscan.ico") Then FileDelete(@TempDir & "\nwscan.ico")
    Exit
    EndFunc

    [/autoit]

    Client-Rechner:
    - Client-Script
    - keine Adminrechte notwendig
    - Zugriff auf den Speicherort der Scan's
    - IrfanView wenn Bild angezeigt/geschnitten/nachbearbeitet werden soll

    Client-Script
    [autoit]

    Opt("MustDeclareVars",1)
    #compiler_icon=nwscan.ico
    #compiler_outfile=RemoteIVScan_Client.exe
    FileInstall("nwscan.ico",@TempDir & "\nwscan.ico",1)
    TraySetIcon(@TempDir & "\nwscan.ico")

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

    Dim $start, $antwort, $socketId, $IVprogramm
    Dim $timeout = 60
    Dim $server = "Micha1"
    Dim $port = "39200"
    Dim $ziel = FileSaveDialog( "Wählen Sie einen Ziel-Dateinamen","\\Micha1\Neu\BILDER_SELCO","Bilder (*.jpg;*.bmp)",2)

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

    If $ziel <> "" Then
    If StringInStr(StringRight($ziel,5),".") = 0 Then $ziel &= ".jpg"
    If FileExists(@ScriptDir & "\i_view32.exe") Then
    $IVprogramm = @ScriptDir & "\i_view32.exe"
    Else
    If FileExists(@ProgramFilesDir & "\IrfanView\i_view32.exe") Then $IVprogramm = @ProgramFilesDir & "\IrfanView\i_view32.exe"
    EndIf

    While FileExists($ziel)
    $antwort = Msgbox(48 + 4,"Datei vorhanden","Die Datei ist bereits vorhanden ! Soll sie überschrieben werden ?")
    If $antwort = 7 Then
    $ziel = Inputbox("Zielname","Bitte Zielname mit Dateiendung eingeben",$ziel)
    Else
    FileDelete($ziel)
    Endif
    Wend
    TCPStartup()
    $socketId = TCPConnect(TCPNameToIP($server),$port)
    If $socketId = -1 Then
    MsgBox(48,"Fehler"," Eine Verbindung mit dem entfernten RemoteIVScan Server" _
    & @CRLF & @CRLF & " Name/IP " & @TAB & ":" & @TAB & $server _
    & @CRLF & @CRLF & " Portnummer" & @TAB & ":" & @TAB & $port _
    & @CRLF & @CRLF & " konnte NICHT hergestellt werden !")
    TCPShutDown()
    Programm_beenden()
    Else
    TCPSend($socketId,$ziel)
    TCPCloseSocket($socketId)
    TCPShutDown()
    EndIf
    $start = TimerInit()
    Do
    If FileExists($ziel) Then
    If FileGetSize($ziel) > 0 Then
    Sleep(100)
    If $IVProgramm <> "" Then
    Run("C:\Programme\IrfanView\i_view32.exe " & $ziel)
    Else
    MsgBox(0,"Ausgabe","IrfanView konnte nicht gefunden werden !" & @CRLF & @CRLF _
    & "Die Zieldatei liegt unter : '" & $ziel & "'.")
    EndIf
    Programm_beenden()
    EndIf
    EndIf
    Until TimerDiff($start) >= $timeout * 1000
    Msgbox(48,"Fehler","Die Zieldatei '" & $ziel & "' konnte nicht geöffnet werden !")
    EndIf
    Programm_beenden()

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

    Func Programm_beenden()
    If FileExists(@TempDir & "\nwscan.ico") Then FileDelete(@TempDir & "\nwscan.ico")
    Exit
    EndFunc

    [/autoit]

    Ggf. muss man die Fenstertexte, der (zu versteckenden) Twain-Fenster, im Server-Script
    noch an den eigenen Treiber anpassen und den Servernamen im Client-Script.
    IrfanView kann im Scriptordner oder unter ...\Programme\IrfanView\.. liegen.

    Hier noch das Icon : Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Edit: neue Version, Client mit FileSaveDialog

    Edit: neue Version V2, Versand des Bildes per TCP an den Client

    Server
    [autoit]

    #NoTrayIcon
    #compiler_icon=nwscan.ico
    #compiler_outfile=RemoteIVScan_Server.exe

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

    Opt("TrayMenuMode",1)
    Opt("TrayOnEventMode",1)
    Opt("MustDeclareVars",1)
    Opt("WinTitleMatchMode",4)
    Opt("WinTextMatchMode",2)
    Opt("WinSearchChildren",1)
    FileInstall("nwscan.ico",@TempDir & "\nwscan.ico",1)

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

    Dim $pid, $trayexit, $socketId, $acceptSocketId, $IVprogramm
    Dim $acceptIP, $dateiID, $dateiInhalt, $anforderung
    Dim $ServerPort, $ClientPort, $aufloesung, $fenster
    Dim $peek, $rueckgabe, $prozesse
    Dim $gefunden = False

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

    ; ggf. Konfiguration aus der INI-Datei lesen
    $ServerPort = IniRead("RemoteIVScan.ini","Server","Port",39200)
    $ClientPort = IniRead("RemoteIVScan.ini","Client","Port",39200)
    $aufloesung = IniRead("RemoteIVScan.ini","Server","Aufloesung",150)
    $fenster = StringSplit(IniRead("RemoteIVScan.ini","Server","Fenster",""),"|")
    If $fenster[0] = 1 And $fenster[1] = "" Then
    ReDim $fenster[1]
    $fenster[0] = 0
    EndIf

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

    ; Prüfen ob ein RemoteIVScan-Server-Process bereits auf dem
    ; angegebenen Port läuft
    $rueckgabe = ""
    $pid = Run("netstat.exe -ona","",@SW_HIDE,6)
    While 1
    $peek = StdOutRead($pid, 0, True)
    If Not @error And $peek > 0 Then
    $rueckgabe &= StdoutRead($pid)
    EndIf
    $peek = StdErrRead($pid, 0, True)
    If @error Then
    Exitloop
    Else
    If $peek > 0 Then
    $rueckgabe &= StderrRead($pid)
    EndIf
    EndIf
    Sleep(100)
    Wend
    $prozesse = Processlist("RemoteIVScan_Server.exe")
    For $i = 1 To $prozesse[0][0]
    If StringRegExp($rueckgabe,"\r\n.*TCP.*:39200.*" & $prozesse[$i][1] & "\r\n") = 1 Then
    $gefunden = True
    ExitLoop
    EndIf
    Next
    If $gefunden = True Then
    ; nur Beenden keine Meldung
    ;MsgBox(48,"Fehler","Die Server-Anwendung läuft bereits auf Port '" & $ServerPort &"' !")
    Exit
    EndIf

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

    ; IrfanView wird gesucht
    If FileExists(@ScriptDir & "\i_view32.exe") Then
    $IVprogramm = @ScriptDir & "\i_view32.exe"
    Else
    If FileExists(@ProgramFilesDir & "\IrfanView\i_view32.exe") Then $IVprogramm = @ProgramFilesDir & "\IrfanView\i_view32.exe"
    EndIf
    If $IVprogramm = "" Then
    MsgBox(48,"Fehler","Das notwendige Tool 'IrfanView' wurde weder in '" & @ScriptDir &"' noch in '" & @ProgramFilesDir & "' gefunden !")
    Exit
    EndIf

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

    ; neuen Traymenu zum Beenden anlegen
    $trayexit = TrayCreateItem("RemoteIVScan Server beenden")
    TrayItemSetOnEvent(-1,"ExitEvent")
    TraySetIcon(@TempDir & "\nwscan.ico")
    TraySetToolTip ("RemoteIVScan Server")
    TraySetState()

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

    ; einen ggf. vorhandenen alten Scan löschen
    If FileExists(@TempDir & "\RemoteIVScan_OUT.jpg") Then FileDelete(@TempDir & "\RemoteIVScan_OUT.jpg")

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

    TCPStartup()
    While 1
    $socketId = TCPListen(@IPAddress1,$ServerPort)
    If $socketId = -1 Then
    Msgbox(48,"Fehler","Der TCP Port " & $ServerPort & " konnte NICHT zur Kommunikation geöffnet werden !")
    TCPShutDown()
    ExitEvent()
    Else
    Do
    $acceptSocketId = TCPAccept($socketId)
    Until $acceptSocketId <> -1
    $acceptIP = SocketToIP($acceptSocketId)
    $anforderung = ""
    While 1
    $anforderung &= TCPRecv($acceptSocketId,2048)
    If @error Then ExitLoop
    Wend
    TCPCloseSocket($socketId)
    If StringLeft($anforderung,20) = "|RemoteIVScan|Start|" Then
    $pid = Run($IVprogramm & " /scanhidden /dpi=(" & $aufloesung & "," & $aufloesung & ") /convert=" & @TempDir & "\RemoteIVScan_OUT.jpg")
    While ProcessExists($pid)
    For $i = 1 To $fenster[0]
    ;If WinExists("",$fenster[$i]) = 1 Then WinSetState("",$fenster[$i],@SW_HIDE)
    ;WinWait("[CLASS:#32770]", "",1)
    WinSetState($fenster[$i],"",@SW_HIDE)
    Next
    ;Sleep(10)
    Wend
    Sleep(500)
    If FileGetSize(@TempDir & "\RemoteIVScan_OUT.jpg") = 0 Then
    FileDelete(@TempDir & "\RemoteIVScan_OUT.jpg")
    Else
    _TCPSendFile(@TempDir & "\RemoteIVScan_OUT.jpg",$acceptIP,$ClientPort,5,0,0)
    Sleep(200)
    FileDelete(@TempDir & "\RemoteIVScan_OUT.jpg")
    EndIf
    EndIf
    EndIf
    Wend

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

    Func ExitEvent()
    TCPShutDown()
    If FileExists(@TempDir & "\nwscan.ico") Then FileDelete(@TempDir & "\nwscan.ico")
    Exit
    EndFunc

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

    Func SocketToIP($SHOCKET)
    Local $sockaddr = DLLStructCreate("short;ushort;uint;char[8]")
    Local $aRet = DLLCall("Ws2_32.dll","int","getpeername","int",$SHOCKET, _
    "ptr",DLLStructGetPtr($sockaddr),"int*",DLLStructGetSize($sockaddr))
    If Not @error And $aRet[0] = 0 Then
    $aRet = DLLCall("Ws2_32.dll","str","inet_ntoa","int",DLLStructGetData($sockaddr,3))
    If Not @error Then $aRet = $aRet[0]
    Else
    $aRet = 0
    EndIf
    $sockaddr = 0
    Return $aRet
    EndFunc

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

    ;=============================================== _TCPSendFile ==============================================
    ;
    ; Author: DJ Baselord
    ; Version: 1.0
    ; Requirements: Autoit v. 3.2.4.0
    ; Parameters: $sFile: File
    ; $sIP: IP to conenct to
    ; $iPort: TCP - Port to connect to
    ; $iTimeout: Time to wait for a connection
    ; $bPopup: 1 to popup Progress, 0 to hide
    ; $bShowMessageOnSuccess: 1 to show Msg on success, 0 to hide
    ; $iSleep: Time to sleep beetween each TCPSend, very important for the
    ; relation beetween CPU - ussage and transmition rate
    ; $iPartsize: Size in KB needed by TCP - Send also important for the
    ; relation beetween CPU - ussage and transmition rate
    ;
    ; Returnvalue: 1 on succes
    ; 0 on failure and @error is set as below:
    ; 1: file doesn't exist
    ; 2: error occured while file reading
    ; 3: if timer is expired
    ;
    ;===========================================================================================================
    Func _TCPSendFile($sFile,$sIP,$iPort,$iTimeout=0,$bPopup=1,$bShowMessageOnSuccess=1,$iSleep=10,$iPartsize=128)
    Local $hFile, $hFileRead, $iFilesize, $iConnectedSocket, $iCurrenttime, $TCPSend, $iFilesizeMB
    Local $iNewTime, $iOldTime, $iTime, $iRate, $iSent, $hTimer
    If $bPopup Then ProgressOn("Senden des Scan's","Verbindungsaufbau","Datei Einlesen",-1,-1,16)
    If Not FileExists($sFile) Then Return SetError(1,0,0)
    $hFile = FileOpen($sFile,16)
    $hFileRead = FileRead($hFile)
    FileClose($hFile)
    $iFilesize = BinaryLen($hFileRead)
    If Not BinaryLen($hFileRead) Then Return SetError(2,0,0)
    If $bPopup And Not $iTimeout Then ProgressSet(0,"Warte auf Verbindung mit Client")
    If $bPopup And $iTimeout Then ProgressSet(0,"Warte noch "&$iTimeout&" Sekunden")
    If $iTimeout Then $hTimer = TimerInit()
    Do
    $iConnectedSocket = TCPConnect($sIP,$iPort)
    Sleep(100)
    If $bPopup And $iTimeout Then
    $iCurrenttime = Int(TimerDiff($hTimer)/1000)
    ProgressSet((TimerDiff($hTimer)/1000)/$iTimeout*100,"Warte noch "&$iTimeout-$iCurrenttime&" Sekunden")
    If $iCurrenttime >= $iTimeout Then
    ProgressSet(100,"Zeit abgelaufen")
    Sleep(3000)
    Return SetError(3,0,ProgressOff())
    EndIf
    EndIf
    Until $iConnectedSocket > -1
    $sFile = StringTrimLeft($sFile,StringInStr($sFile,"\",-1,-1))
    Do
    $TCPSend = TCPSend($iConnectedSocket,$sFile&Chr(3)&$iFilesize)
    Sleep(100)
    Until $TCPSend > 0
    If $bPopup Then
    $hTimer = TimerInit()
    $iFilesizeMB = Round($iFilesize/1024^2,2)
    ProgressSet(0,"Sende 0.0 von "&$iFilesizeMB&" MB @ 0.0 kb/s","Datei senden...")
    EndIf
    Do
    $TCPSend = TCPSend($iConnectedSocket,BinaryMid($hFileRead,1,$iPartsize*1024))
    $hFileRead = BinaryMid($hFileRead,1+$TCPSend)
    If $bPopup Then
    $iNewTime = TimerDiff($hTimer)
    $iTime = $iNewTime - $iOldTime
    $iRate = ($TCPSend/$iTime)/1.024
    $iSent = ($iFilesize-BinaryLen($hFileRead))/1024^2
    ProgressSet($iSent/$iFilesizeMB*100,"Sende "&Round($iSent,2)&" von "&$iFilesizeMB&" @ "&Round($iRate,2)&" kb/s")
    $iOldTime = $iNewTime
    EndIf
    Sleep($iSleep)
    Until BinaryLen($hFileRead) <= 0
    TCPCloseSocket($iConnectedSocket)
    If $bShowMessageOnSuccess Then MsgBox(64+262144,"Senden des Scan's","Scan erfolgreich gesendet")
    ProgressOff()
    Return 1
    EndFunc

    [/autoit]
    Client
    [autoit]

    Opt("MustDeclareVars",1)
    #compiler_icon=nwscan.ico
    #compiler_outfile=RemoteIVScan_Client.exe
    FileInstall("nwscan.ico",@TempDir & "\nwscan.ico",1)
    TraySetIcon(@TempDir & "\nwscan.ico")

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

    Dim $socketId, $IVprogramm, $server, $ServerPort, $ClientPort, $timeout, $zieldatei

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

    ; ggf. Konfiguration aus der INI-Datei lesen
    $server = IniRead("RemoteIVScan.ini","Server","NameIP","Micha1")
    $ServerPort = IniRead("RemoteIVScan.ini","Server","Port",39200)
    $ClientPort = IniRead("RemoteIVScan.ini","Client","Port",39200)
    $timeout = IniRead("RemoteIVScan.ini","Client","Timeout",60)

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

    ; möglichst IrfanView finden, ansonsten erfolgt keine Anzeige
    If FileExists(@ScriptDir & "\i_view32.exe") Then
    $IVprogramm = @ScriptDir & "\i_view32.exe"
    Else
    If FileExists(@ProgramFilesDir & "\IrfanView\i_view32.exe") Then $IVprogramm = @ProgramFilesDir & "\IrfanView\i_view32.exe"
    EndIf

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

    TCPStartup()
    ; Server kontaktieren und Scan anfordern
    $socketId = TCPConnect(TCPNameToIP($server),$ServerPort)
    If $socketId = -1 Then
    MsgBox(48,"Fehler"," Eine Verbindung mit dem entfernten RemoteIVScan Server" _
    & @CRLF & @CRLF & " Name/IP " & @TAB & ":" & @TAB & $server _
    & @CRLF & @CRLF & " Portnummer" & @TAB & ":" & @TAB & $ServerPort _
    & @CRLF & @CRLF & " konnte NICHT hergestellt werden !")
    Else
    TCPSend($socketId,"|RemoteIVScan|Start|")
    TCPCloseSocket($socketId)
    ; jetzt wird bis zum Timeout auf die gesendete Datei gewartet
    If _TCPRecvFile(@TempDir & "\RemoteIVScan_IN.jpg",@IPAddress1,$ClientPort,$timeout,1,0) = 1 Then
    If $IVProgramm <> "" Then
    Run("C:\Programme\IrfanView\i_view32.exe " & @TempDir & "\RemoteIVScan_IN.jpg")
    Sleep(1000)
    FileDelete(@TempDir & "\RemoteIVScan_IN.jpg")
    Else
    $zieldatei = FileSaveDialog( "Wählen Sie einen Ziel-Dateinamen","","JPG-Grafiken (*.jpg)",2)
    If $zieldatei <> "" Then
    FileMove(@TempDir & "\RemoteIVScan_IN.jpg",$zieldatei,1)
    EndIf
    EndIf
    EndIf
    EndIf
    TCPShutDown()
    If FileExists(@TempDir & "\nwscan.ico") Then FileDelete(@TempDir & "\nwscan.ico")

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

    ;=============================================== _TCPRecvFile ==============================================
    ;
    ; Author: DJ Baselord
    ; Version: 1.0
    ; Requirements: Autoit v. 3.2.4.0
    ; Parameters: $sFile: String to save file to if "", orignial filename will be used
    ; $sIP: IP to wait for connection
    ; $iPort: TCP - Port to open up listening port
    ; $iTimeout: Time to wait for a connection
    ; $bPopup: 1 to popup Progress, 0 to hide
    ; $bShowMessageOnSuccess: 1 to show Msg on success, 0 to hide
    ; $iSleep: Time to sleep beetween each TCPRecv, very important for the
    ; relation beetween CPU - ussage and transmition rate
    ; $iPartsize: Size in KB needed by TCPRecv also important for the
    ; relation beetween CPU - ussage and transmition rate
    ;
    ; Returnvalue: 1 on succes
    ; 0 on failure and @error is set as below:
    ; 1: if timer is expired
    ;
    ;===========================================================================================================
    Func _TCPRecvFile($sFile,$sIP,$iPort,$iTimeout=0,$bPopup=1,$bShowMessageOnSuccess=1,$iSleep=10,$iPartsize=128)
    Local $ListeningSocket, $hTimer, $iConnectedSocket, $iCurrenttime, $Recv, $iFilesize, $SFilename
    Local $sBuffer, $iFilesizeMB, $iNewTime, $iOldTime, $iRate, $iSent, $iTime, $hFile
    If $bPopup Then ProgressOn("Empfang des Scan's","Warte auf Sendung des Scans","Warten",-1,-1,16)
    $ListeningSocket = TCPListen($sIP,$iPort)
    If $bPopup And Not $iTimeout Then ProgressSet(0,"Warte auf Verbindung")
    If $bPopup And $iTimeout Then ProgressSet(0,"Warte noch "&$iTimeout&" Sekunden")
    If $iTimeout Then $hTimer = TimerInit()
    Do
    $iConnectedSocket = TCPAccept($ListeningSocket)
    Sleep(100)
    If $bPopup And $iTimeout Then
    $iCurrenttime = Int(TimerDiff($hTimer)/1000)
    ProgressSet((TimerDiff($hTimer)/1000)/$iTimeout*100,"Warte noch "&$iTimeout-$iCurrenttime&" Sekunden")
    If $iCurrenttime >= $iTimeout Then
    ProgressSet(100,"Timeout abgelaufen. Es wurde kein Scan gesendet !")
    Sleep(5000)
    SetError(1)
    ProgressOff()
    Return 0
    EndIf
    EndIf
    Until $iConnectedSocket > -1
    Do
    $Recv = TCPRecv($iConnectedSocket,2048)
    Sleep(100)
    Until $Recv <> ""
    $Recv = StringSplit($Recv,Chr(3))
    $iFilesize = $Recv[2]
    $SFilename = $Recv[1]
    $sBuffer = Binary("")
    If $bPopup Then
    $hTimer = TimerInit()
    $iFilesizeMB = Round($iFilesize/1024^2,2)
    ProgressSet(0,"Sende 0.0 von "&$iFilesizeMB&" MB @ 0.0 kb/s","Datei senden...")
    EndIf
    Do
    $Recv = Binary(TCPRecv($iConnectedSocket,$iPartsize*1024))
    $sBuffer &= $Recv
    Sleep($iSleep)
    If $bPopup Then
    $iNewTime = TimerDiff($hTimer)
    $iTime = $iNewTime - $iOldTime
    $iRate = (BinaryLen($Recv)/$iTime)/1.024
    $iSent = (BinaryLen($sBuffer))/1024^2
    ProgressSet($iSent/$iFilesizeMB*100,"Empfange "&Round($iSent,2)&" von "&$iFilesizeMB&" @ "&Round($iRate,2)&" kb/s")
    $iOldTime = $iNewTime
    EndIf
    Until BinaryLen($sBuffer) >= $iFilesize
    If $sFile = "" Then $sFile = $SFilename
    $hFile = FileOpen($sFile,18)
    FileWrite($hFile,$sBuffer)
    FileClose($hFile)
    $sBuffer = ""
    TCPCloseSocket($ListeningSocket)
    TCPCloseSocket($iConnectedSocket)
    If $bShowMessageOnSuccess Then MsgBox(64+262144,"Empfang des Scan's","Scan erfolgreich empfangen")
    ProgressOff()
    Return 1
    EndFunc

    [/autoit]
  • IP-Changer

    • Micha_he
    • 4. Januar 2009 um 00:02

    Dann muss Du zu Beginn des Scripts die Authentifizierung automatisieren. Wird auch gehen, ist aber halt bei mir zur Zeit nicht notwendig.

    Google hilft....

  • IP-Changer

    • Micha_he
    • 3. Januar 2009 um 17:25

    Ich habe nichts gegen das nutzen von fremden Tools aus Auoit heraus, wenn es anders nicht oder nur aufwändig realisierbar ist. Aber zum Senden von Daten per TCP ein externes Tool ? Wo Autoit so etwas ja bestens kann !

    Außerdem ist 'NetCat' immer wieder ein Problem bei den Virenkillern...

  • IP-Changer

    • Micha_he
    • 3. Januar 2009 um 17:15

    Habe mich man daran probiert,..... es geht.
    Herausgekommen ist folgendes Reconnect-Tool mit VoIP-Prüfung, welches ohne andere CMD-Tools auskommt.

    FritzReCon.au3
    [autoit]

    ; FritzReCon.au3
    ; 03.01.2009
    ; FritzBox-Reconnect mit VoIP-Prüfung

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

    #include <INet.au3>
    #include <GUIConstants.au3>
    Opt("GUIOnEventMode", 1)

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

    Dim $outtext = ""
    Dim $timeout = 30
    Dim $counter = 10
    Dim $socketId, $alteIP, $neueIP
    Dim $router = 'Fritz.box'
    Dim $port = '49000'
    Dim $command = ''
    $command &= 'POST /upnp/control/WANIPConn1 HTTP/1.1' & @CRLF
    $command &= 'SOAPACTION: "urn:schemas-upnp-org:service:WANIPConnection:1#ForceTermination"' & @CRLF
    $command &= 'CONTENT-TYPE: text/xml ; charset="utf-8"' & @CRLF
    $command &= 'Content-Length: 293' & @CRLF & @CRLF
    $command &= '<?xml version="1.0" encoding="utf-8"?>' & @CRLF
    $command &= '<s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">' & @CRLF
    $command &= ' <s:Body>' & @CRLF
    $command &= ' <u:ForceTermination xmlns:u="urn:schemas-upnp-org:service:WANIPConnection:1" />' & @CRLF
    $command &= ' </s:Body>' & @CRLF
    $command &= '</s:Envelope>' & @CRLF

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

    $Form = GUICreate("FritzReCon",350,250)
    $Label = GUICtrlCreateLabel("",40,10,270,230)
    GUISetOnEvent($GUI_EVENT_CLOSE, "GUIClose")
    GUISetState(@SW_SHOW)

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

    $source = _INetGetSource ("http://" & $router & "/cgi-bin/webcm?getpage=../html/de/menus/menu2.html&var:lang=de&var:menu=home&var:pagename=home")
    $alteIP = StringLeft(StringMid($source,StringInStr($source,"IpAdrDisplay('")+14),StringInStr(StringMid($source,StringInStr($source,"IpAdrDisplay('")+14),");")-2)
    $outtext &= @CRLF & "alte IP-Adresse : " & $alteIP
    GUICtrlSetData($Label,$outtext)

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

    While StringRegExp($source,'"sip:status/sip\d/connect" value="3"') > 0
    $outtext &= @CRLF & "VoIP ist verbunden ! Wartezeit " & $timeout & "s. Noch " & $counter -1 & " Versuche."
    GUICtrlSetData($Label,$outtext)
    $counter -= 1
    If $counter = 0 Then
    $outtext &= @CRLF & "Reconnect abgebrochen !"
    GUICtrlSetData($Label,$outtext)
    Sleep(5000)
    Exit
    EndIf
    Sleep($timeout * 1000)
    $source = _INetGetSource ("http://" & $router & "/cgi-bin/webcm?getpage=../html/de/menus/menu2.html&var:lang=de&var:menu=home&var:pagename=home")
    Wend

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

    $outtext &= @CRLF & "VoIP ist nicht verbunden !"
    $outtext &= @CRLF & "DSL-Verbindung wird erneuert."
    GUICtrlSetData($Label,$outtext)

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

    TCPStartup()
    $socketId = TCPConnect(TCPNameToIP($router),$port)
    If $socketId = -1 Then
    $outtext &= @CRLF & "Fehler ! Es konnte keine Verbindung zu '" & $router & "' hergestellt werden !")
    TCPShutDown()
    Sleep(5000)
    Exit
    Else
    TCPSend($socketId,$command)
    TCPCloseSocket($socketId)
    TCPShutDown()
    EndIf
    Sleep(2000)

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

    $counter = 10
    do
    $source = _INetGetSource ("http://" & $router & "/cgi-bin/webcm?getpage=../html/de/menus/menu2.html&var:lang=de&var:menu=home&var:pagename=home")
    $neueIP = StringLeft(StringMid($source,StringInStr($source,"IpAdrDisplay('")+14),StringInStr(StringMid($source,StringInStr($source,"IpAdrDisplay('")+14),");")-2)
    $counter -= 1
    Sleep(500)
    Until StringLen($neueIP) >= 7 Or $counter <= 0

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

    If $neueIP = $alteIP Then
    $outtext &= @CRLF & "Fehler ! Es wurde keine neue IP-Adresse erhalten."
    GUICtrlSetData($Label,$outtext)
    Else
    $outtext &= @CRLF & "neue IP-Adresse : " & $neueIP
    GUICtrlSetData($Label,$outtext)
    EndIf
    Sleep(3000)

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

    Func GUIClose()
    Exit
    EndFunc

    [/autoit]
  • IP-Changer

    • Micha_he
    • 3. Januar 2009 um 15:33
    Zitat von Pinguin

    Hallo, für die Fritzbox habe ich mal was vor ewigkeiten umgeschrieben, da das Skript was ich gefunden habe nur direkt fritz.box anspricht, was bei meheren nicht so prima ist.

    Benötige Dateien:
    nc.exe (Wird öfter als "Böse" Datei von diversen Virenscannern erkannt, dem ist aber nicht so!
    Config.ini habe ich mal mitgepostet.

    Ist ja nicht schlecht, nur dann brauche ich nc.exe statt curl.exe ! Vom Regen in die Traufe...

  • IP-Changer

    • Micha_he
    • 3. Januar 2009 um 11:53
    Zitat von Der_Doc

    Hi,
    ich hätte da noch was.
    Das ist z.B. der String für eine Fritzbox 7150 Ich glaube aber das das für alle FritzBoxen ist.

    Code
    exec(`/opt/bin/curl "http://fritz.box:49000/upnp/control/WANIPConn1" -H 'Content-Type: text/xml; charset="utf-8"' -H 'SoapAction: urn:schemas-upnp-org:service:WANIPConnection:1#ForceTermination' -d '<?xml version="1.0" encoding="utf-8"?> <s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body> <u:ForceTermination xmlns:u="urn:schemas-upnp-org:service:WANIPConnection:1" /> </s:Body> </s:Envelope>'`);

    Ist aus nen Perlscript was ich angepasst habe.

    Geht das auch OHNE die 'curl.exe', direkt mit TCPSend ?

  • Boss-Key: alles verstecken

    • Micha_he
    • 23. Dezember 2008 um 15:53

    Wobei jetzt die Variable $once komplett überflüssig ist, oder ?

    Aber es läuft so wenigstens...

  • Boss-Key: alles verstecken

    • Micha_he
    • 23. Dezember 2008 um 14:12

    Das Script funktioniert aber in der Art nicht. Jedenfalls nicht bei mir.

    1. Die Zeile 18 'global $once=False' muss wohl außerhalb der Funktion, sonst führt es in Zeile 42 beim ersten Lauf zu einer nicht deklarierten Variable.
    2. Wenn ich es wie unter 1. angegeben anpasse, beendet sich das Script aber in Zeile 42 sofort.

  • NTFS ACLS auslesen

    • Micha_he
    • 18. Dezember 2008 um 14:35

    ich musste zwar nur kopieren nicht lesen, aber vielleicht eine Idee...
    [ offen ] ACL mit-/kopieren

  • Hidden/Silent/versteckte Installation mit Progress

    • Micha_he
    • 8. Dezember 2008 um 19:37
    Zitat von Luxenburg

    das ist prizipiell auch eine Lösung. Es gibt aber trozdem noch das Problem das man das Fenster immer noch für einen kurzen Moment sieht bevor es auserhalb des Screens "gemoved" wird. Hat das jemand eine Lösung für?

    So sieht man ein Fenster nicht:

    [autoit]

    Opt("WinTitleMatchMode", 2)
    run("notepad.exe","",@SW_HIDE)
    sleep(500)
    winmove("Unbenannt","",600,600)
    winsetstate("Unbenannt","",@SW_SHOW)

    [/autoit]
  • Windows-Html-Hilfe-Datei aufrufen

    • Micha_he
    • 8. Dezember 2008 um 19:26

    Das die "kompilierte" HTML-Hilfe auch wieder auf einem Netzlaufwerk liegen darf, kann man reaktivieren. Ist bei irgendeinem Windows-Patch sicherer eingestellt worden. Google mal danach.

    Solltest Du es nicht finden, kann ich morgen im Dienst nochmal nachsehen, da habe ich es dokumentiert.

  • Wie schaltet man die netzwerk-karte ein oder aus?

    • Micha_he
    • 7. Dezember 2008 um 22:21

    Ich schalte meine WLAN/LAN Verbindung mit folgendem Script hin und her. Die Idee habe ich aber auch von jemandem übernommen. Hier nochmals meinen Dank dafür....

    Spoiler anzeigen
    [autoit]

    $nameLanConnection = "LAN-Verbindung"; Name des Adapters
    $oLanConnection = ""

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

    if @OSType<>"WIN32_NT" then
    Msgbox(0,"","Dieses Script benötigt Windows 2000 oder höher")
    exit
    endif

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

    Select
    Case StringInStr("0409,0809,0c09,1009,1409,1809,1c09,2009,2409,2809,2c09,3009,3409", @OSLang) ; English (United States)
    $strEnableVerb = "En&able"
    $strDisableVerb = "Disa&ble"
    if @OSVersion="WIN_2000" then
    $strFolderName = "Network and Dial-up Connections"
    else
    $strFolderName = "Network Connections" ; Windows XP
    endif

    Case StringInStr("0407", @OSLang); Deutsch
    $strEnableVerb = "&Aktivieren"
    $strDisableVerb = "&Deaktivieren"
    if @OSVersion="WIN_2000" then
    $strFolderName = "Netzwerk- und DFÜ-Verbindungen"
    else
    $strFolderName = "Netzwerkverbindungen" ; Windows XP
    endif

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

    EndSelect

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

    ;Virtueller Ordner (Wert 3) enthält die Systemsteuerung
    Const $ssfCONTROLS = 3

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

    $ShellApp = ObjCreate("Shell.Application")
    $oControlPanel = $shellApp.Namespace($ssfCONTROLS)

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

    ; Finde 'Netzververbindungen' unter den Systemsteuerungen
    $oNetConnections=""
    For $FolderItem in $oControlPanel.Items
    If $FolderItem.Name = $strFolderName then
    $oNetConnections = $FolderItem.GetFolder
    Exitloop
    Endif
    Next
    If not IsObj($oNetConnections) Then
    Msgbox(0,"Fehler","Die Steuerung " & $strFolderName & " kann nicht gefunden werden."
    Exit
    EndIf

    ; Finde die gesuchte LAN-Verbindung
    For $FolderItem In $oNetConnections.Items
    If StringLower($FolderItem.Name) = StringLower($nameLanConnection) Then
    $oLanConnection = $FolderItem
    Exitloop
    EndIf
    Next
    If not IsObj($oLanConnection) Then
    Msgbox(0,"Fehler","Die Verbindung " & $nameLanConnection & " kann nicht gefunden werden.")
    Exit
    EndIf

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

    $bEnable = true
    $oEnableVerb = ""
    $oDisableVerb = ""

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

    For $Verb In $oLanConnection.Verbs
    If $Verb.Name = $strEnableVerb Then
    $oEnableVerb = $Verb
    $bEnable = false
    EndIf
    If $Verb.Name = $strDisableVerb Then
    $oDisableVerb = $Verb
    EndIf
    Next

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

    If $bEnable then
    ; deaktivieren
    $oDisableVerb.DoIt
    else
    ; aktivieren
    $oEnableVerb.DoIt
    TrayTip("",$nameLanConnection & " wurde aktiviert !",3)
    Sleep(3000)
    Endif

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

    $nameLanConnection = "Drahtlose Netzwerkverbindung"; Name des Adapters
    $oLanConnection = ""

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

    ; Finde die gesuchte LAN-Verbindung
    For $FolderItem In $oNetConnections.Items
    If StringLower($FolderItem.Name) = StringLower($nameLanConnection) Then
    $oLanConnection = $FolderItem
    Exitloop
    EndIf
    Next
    If not IsObj($oLanConnection) Then
    Msgbox(0,"Fehler","Die Verbindung " & $nameLanConnection & " kann nicht gefunden werden.")
    Exit
    EndIf

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

    $bEnable = true
    $oEnableVerb = ""
    $oDisableVerb = ""

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

    For $Verb In $oLanConnection.Verbs
    If $Verb.Name = $strEnableVerb Then
    $oEnableVerb = $Verb
    $bEnable = false
    EndIf
    If $Verb.Name = $strDisableVerb Then
    $oDisableVerb = $Verb
    EndIf
    Next

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

    If $bEnable then
    ; deaktivieren
    $oDisableVerb.DoIt
    else
    ; aktivieren
    $oEnableVerb.DoIt
    TrayTip("",$nameLanConnection & " wurde aktiviert !",3)
    Endif

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

    Sleep(3000)

    [/autoit]
  • While mit Timeerstart usw. benutzen.

    • Micha_he
    • 2. Dezember 2008 um 12:24

    Die (NICHT-)Sparvariante:

    Spoiler anzeigen
    [autoit]

    $begin = TimerInit()
    While 1
    If TimerDiff($begin) > 5000 Then
    MsgBox(0, "", "")
    $begin = TimerInit()
    EndIf
    Sleep(100)
    WEnd

    [/autoit]

    Edit: Überschrift angepasst :wacko:

  • Hab da mal eine Frage zur GUI.

    • Micha_he
    • 27. November 2008 um 20:11

    hier auch noch ein Beispiel:

    Ebay Widget

  • Text in einer grossen Datei ersetzen - wie am schnellsten?

    • Micha_he
    • 27. November 2008 um 20:06

    Ich habe vor einigen Monaten, ein ähnliche Problem gehabt. Nur waren die Dateien dort nicht ganz so groß und ich musste nicht ersetzen sondern nur suchen.

    Die schnellste Variante war bei mir, Fileopen+Fileread (in möglichst großen Stücken, bei mir so weit ich mich erinnern kann, 5MB) in eine Variable und dann in deinem Fall ein StringReplace. (Anschließndes FileClose natürlich).
    Nur must Du darauf achten, das beim lesen der (5MB)-Blöcke, nicht die Zeile getrennt wird. Dann ist die 'komplette' Zeile weder in dem ersten, noch im zweiten Teil.

  • weiß jemand zufällig wie filewritefromarray an ein StringRegExp skript...

    • Micha_he
    • 27. November 2008 um 12:35
    Zitat von Günter

    Moin, Moin!

    Weiß jemand wie _FileWriteFromArray an dieses StringRegExp-Skript angehängt und formuliert werden kann, so dass ich das gefilterte Array-Ergebnis in die alte oder neue Datei schreiben lassen kann, ich komme gerade irgendwie nicht weiter... :(

    [autoit]

    #include <Array.au3>
    ;Edit:
    #include <file.au3>

    $test = FileRead (".txt")
    $ret = StringRegExp($test, "(\,,,,,,,,,,,,,,,,,,)",3)
    _ArrayDisplay($ret, "Inhalt")

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

    ;Edit:
    _FileWriteFromArray("out.txt",$ret)
    ; wenn in dem 1. ArrayFeld die Anzahl steht, dann so
    ; _FileWriteFromArray("out.txt",$ret,1)

    [/autoit]

    Wäre toll, wenn mir jemand helfen könnte!

    Vielen Dank!

    Alles anzeigen

    [Joke Ein]
    War schwierig diese zwei Zeilen, aber nach stundenlangem Überlegen kam ich drauf !
    [/Joke Aus]

    Nur gibt 'StringRegExp' (verwendest Du im Beispiel) gar kein Array zurück, Oder ?

  • User im localen Netzwerk anzeigen lassen...

    • Micha_he
    • 26. November 2008 um 18:45
    Zitat von .::Mignon::.

    hi,

    ich hatte letzt erst eine kleine Funk dafür geschrieben.

    Verstehe ich jetzt etwas falsch. War die Frage nicht nach dem Auflisten der "User" im Netzwerk ?
    Dein Script zeigt doch die Rechner und nicht die User, oder ?

  • consolewrite and read

    • Micha_he
    • 26. November 2008 um 12:23
    Zitat von Xenobiologist

    Hi,

    du kannst auch außerhalb von Scite den StdOut Steam lesen!

    Mega

    Deswegen schrieb ich auch 'fast' ! Ich wollte ihm nur erklären, warum er bei einer Ausführung außerhalb des Editors, nicht zu sehen bekommt. Ich hatte mich Anfangs auch gewundert.

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™