Seite 1 von 1
wak on lan
Verfasst: 21.03.2010 22:33
von frankmannb
Hallo an alle Forumsmitglieder,
ich plane mir eine kleines Programm zu schreiben welches nach Aufruf meinen Home-Server aufweckt. Ich weiss, es gibt im Netz schon Diverse wake on lan tools die aber alle ein Konsolenfenster anfordern und in Windows sichtbar machen. Mein Ziel ist es ohne cmd den Befehl abzusetzen weiss aber nicht wo ich da ansetzen kann. Über die Suchfunktion habe ich leider nichts brauchbares gefunden. Hat jemand von euch eine Idee?
Besten Dank und Grüße frankmannb
Re: wak on lan
Verfasst: 21.03.2010 22:40
von Josh
schon mal die suche mit
wake on lan probiert? zumindest im englischen forum hab ich auf die schnelle was gefunden. wie brauchbar das ist, ist ne andere frage.
am besten verwendest du immer die
bessere forensuche
Re: wak on lan
Verfasst: 21.03.2010 22:50
von NicTheQuick
Du kannst auch von PB aus einfach die cmd-Befehle aufrufen und die Ausgabe des Programms ins Nichts umleiten. Dann sieht man auch nichts.
Re: wak on lan
Verfasst: 21.03.2010 23:30
von frankmannb
@Josh
vielen Dank, tatsächlich findet die erweiterte Suche mehr als die einfache. Habe dank dir ein kleines Script gefunden welches ich entsprechend für mich umprogrammiert habe. Hier für alle die villeicht mal auf das gleiche Problem stossen.
Code: Alles auswählen
InitNetwork()
; Hier Mac-Adresse und IP-Broadcastadresse angeben
MacAdress$ = "00-15-17-31-BC-B9"
BroadCast$ = "192.168.178.255"
Structure mac
mac1.b[6] ; MAC Adress is 6 Bytes long
EndStructure
Structure magic
magic1.b[102] ; Magic Packet 6x$FF 16xMAC = 102 Bytes
EndStructure
Procedure.s WOL_Storemac(macadress$,*mac_adress.mac)
Protected pointer1.b=0
Protected pointer2.b=0
Protected value.b=0
Protected tmac.l=0
Protected wert.l=0
Protected a$=""
For i=1 To Len(macadress$)
a$=Mid(macadress$,i,1)
value=0
If a$>="0" And a$=<"9"
wert=Asc(a$)-48
value=1
EndIf
If a$>="a" And a$=<"f"
wert=Asc(a$)-87
value=1
EndIf
If a$>="A" And a$=<"F"
wert=Asc(a$)-55
value=1
EndIf
If value = 1
If pointer1=0
tmac=tmac+wert*16
Else
tmac=tmac+wert
EndIf
pointer1+1
If pointer1>1
*mac_adress\mac1[pointer2]=tmac
pointer1=0
pointer2+1
tmac=0
EndIf
EndIf
Next
EndProcedure
Procedure.l WOL_SendMagicPacket(macadress$,client_ip.s="255.255.255.255")
Protected mac_adress.mac
Protected Success.l=0
Protected client_bip.l
Protected client_port.l
Protected client_bport.w
Protected client_socket.l
Protected socket_keepalive.b
Protected server_mode.l
Protected magic_packet.magic
WOL_Storemac(macadress$,@mac_adress)
For j=0 To 16
debugmac$=""
For i=0 To 5
If j=0
magic_packet.magic\magic1[i+j*6] = 255
Else
magic_packet.magic\magic1[i+j*6] = mac_adress.mac\mac1[i]
EndIf
debugmac$+RSet(Hex(magic_packet.magic\magic1[i+j*6]),3,"00 ")
Next
Debug RSet(Hex(j*6),2,"0")+":"+debugmac$
Next
client_bip = inet_addr_(client_ip)
client_port = 0
client_bport = htons_(client_port) ; convert to long
client_socket = SOCKET_(#AF_INET, #SOCK_DGRAM, #IPPROTO_UDP) ; create the socket
If client_socket
socket_keepalive = 1
If setsockopt_(client_socket, #SOL_SOCKET, #SO_BROADCAST, @socket_keepalive, 1) = 0
client_sockaddr.SOCKADDR_IN
client_sockaddr\sin_family = #AF_INET
client_sockaddr\sin_port = client_bport
client_sockaddr\sin_addr = client_bip
server_mode = 0
If ioctlsocket_(client_socket,#FIONBIO,@server_mode) = 0
send.l = sendto_(client_socket, @magic_packet, SizeOf(magic_packet), 0, @client_sockaddr, 16)
If send=SizeOf(magic_packet) And WSAGetLastError_()=0
Debug "Magic packet send"
Success=1
EndIf
EndIf
EndIf
closesocket_(client_socket)
EndIf
ProcedureReturn Success
EndProcedure
WOL_SendMagicPacket(MacAdress$,BroadCast$)
Codetags ergänzt (Code-Button oben)
-Andesdaf
Re: wak on lan
Verfasst: 21.03.2010 23:35
von a14xerus
testen kann ich das grad leider nicht, aber mal so allgemein:
Bitte die
benutzen
//edit für josh: die einrückungen sind nur sichtbar wenn man die code.tags beuntzt... ohen tags werdne leerezeichen einfach ignoriert (is so eine html-sache

)
Re: wak on lan
Verfasst: 21.03.2010 23:38
von Josh
a14xerus hat geschrieben:testen kann ich das grad leider nicht, aber mal so allgemein:
Bitte die
benutzen

und

einrückungen