WOL / Kein Übergabe der MAC-Adresse

  • Hallo zusammen,
    ich bitte mal kurz um Hilfe, weil ich mit meinem kleinen Script nicht weiterkomme.

    Problem:
    Ich versuche über die GUI mit einem Buttonklick einen Rechner zu starten. Die entsprechenende wake.exe befindet sich auch in dem passenden Verzeichnis (mit msgbox überprüft). Allerdings wird die entsprechende MAC Adresse, die sich in einer .txt befindet, dabei nicht mit übergeben.
    Um es ein bisschen einfacher auszudrücken:
    Über den run - Befehl starte ich eine .exe, was auch funktioniert. Dabei werden die Daten der .txt nicht mit übernommen. Wenn ich die .exe per Dateiebene direkt im Verzeichnis öffne, wird die MAC - Adresse mit übergeben und es funktioniert.
    Hier der ausschnitt von dem Programm:

    [autoit]


    $START = GUICtrlRead($1)
    If $START = $GUI_CHECKED And $msg=$STARTING Then
    run(@ScriptDir & "\WOL\1\wake.exe")
    Sleep(1000)
    Send("m")

    [/autoit]

    Hat jemand von eine eine Idee warum die Daten aus der .txt, in dem Script nicht mit übernommen werden? Weitere Parameter sind in der wake.exe nicht hinterlegt. :huh:

    Gruß, KriZza

  • Hi,
    öffnet die WAKE.EXE die Textdatei mit der MAC "automatisch" oder musst du die Textdatei als Parameter übergeben?

  • Hallo

    hast du es schon einam so

    [autoit]

    run(@ScriptDir & "\WOL\1\wake.exe",@ScriptDir & "\WOL\1\wake.exe")

    [/autoit]


    versucht?

    Edit: Workingdir angepasst (siehe Beitrag #4 von Andy)
    mfg (Auto)Bert

    Einmal editiert, zuletzt von AutoBert (25. September 2009 um 18:54)

  • autoBert
    diese Idee hatte ich auch schon, aber dann hat mich

    Zitat

    Wenn ich die .exe per Dateiebene direkt im Verzeichnis öffne, wird die MAC - Adresse mit übergeben und es funktioniert.

    gewundert. In deinem Vorschlag würde die WAKE.EXE im @scriptdir ausgeführt, dort würde sie die Textdatei aber bei händischem Aufrufen (im Verzeichnis \WOL\1\ ) nie finden....

  • es muss doch nicht immer gleich eine externe Anwendung angesprochen werden.
    Kann man alles mit AutoIt-Mitteln lösen:
    WOL mit AutoIt:

    Spoiler anzeigen
    [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
    ; ===================================================================================================

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

    ; #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")
    ; ;==================================================================================================

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

    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

    [/autoit]

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)