|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Aug 2009
Messaggi: 168
|
[VB.NET] Invio WOL
Ciao a tutti,
premetto che ho iniziato da poco a programmare con vb.net.. Ho girato dappertutto e non ho trovato una spiegazione esauriente per quanto riguarda l'invio del pacchetto Wake On Lan in ambiente VB.net, chi sarebbe così gentile da darmi una dritta? Grazie in anticipo
__________________
D@x |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Aug 2009
Messaggi: 168
|
Ho capito (forse) solo una cosa... devo usare asocket.dll.
L ho trovata in rete ma non so come gestirla...
__________________
D@x |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
|
Googlando ".net wake on lan", il primo risultato ha un codice perfettamente funzionante che usa solo codice managed*.
*nel senso che tu non devi importare dll non managed. Puoi usare questo tool per tradurre da C# a VB.NET: http://www.developerfusion.com/tools.../csharp-to-vb/ |
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Aug 2009
Messaggi: 168
|
Gentilissimo, grazie, provo all istante!!
__________________
D@x |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Aug 2009
Messaggi: 168
|
non riesco ad integrarlo correttamente nel mio codice...
__________________
D@x Ultima modifica di daxdaxdax : 26-10-2009 alle 22:01. |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
|
eh?
|
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Aug 2009
Messaggi: 168
|
hihihihii..
mi da sempre errore la stringa "Namespace WakeOnLan", di conseguenza non funziona. Non mi è chiaro poi come integrare l evento button1click -> wakeOnLan form2.textbox1.text googlerò ancora un pochino.. grazie ancora
__________________
D@x |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
L'esempio citato da Kralizek è buono.
Certo l'autore non si è sbattuto più di tanto per renderlo facilmente riutilizzabile. Il MAC Address necessario all'operazione solitamente arriva nel formato xx-xx-xx-xx-xx-xx ( Prompt / ipconfig/all ), in altri casi nel formato xx:xx:xx:xx:xx:xx, e così via, perciò non è proprio "alla mano" un Mac in formato array di Byte... Personalmente tradurrei / risolverei così, ipotizzando una semplice WinForm in VB.NET con una textbox ( "txt_mac" ) in cui inserire il Mac Address della Macchina da "svegliare", e un pulsante per avviare il tutto : 1. La Sub : Codice:
Private Sub WakeUp(ByVal mac As Byte())
' WOL packet is sent over UDP 255.255.255.0:40000.
Dim client As New Net.Sockets.UdpClient()
client.Connect(Net.IPAddress.Broadcast, 40000)
' WOL packet contains a 6-bytes trailer and 16 times a 6-bytes sequence containing the MAC address.
Dim packet As Byte() = New Byte(17 * 6 - 1) {}
' Trailer of 6 times 0xFF.
For i As Integer = 0 To 5
packet(i) = &HFF
Next
' Body of magic packet contains 16 times the MAC address.
For i As Integer = 1 To 16
For j As Integer = 0 To 5
packet(i * 6 + j) = mac(j)
Next
Next
' Submit WOL packet.
client.Send(packet, packet.Length)
End Sub
Codice:
If txt_mac.Text = "" Then Exit Sub
Dim arrayChrsSplit As Char() = {" ", ":", "-", "_", "/", "\"}
Dim arrayMac As String() = txt_mac.Text.Split(arrayChrsSplit)
Dim mac(arrayMac.Length - 1) As Byte
For i As Integer = 0 To mac.Length - 1
mac(i) = Convert.ToByte(Long.Parse(arrayMac(i), Globalization.NumberStyles.HexNumber))
Next
WakeUp(mac)
|
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Aug 2009
Messaggi: 168
|
Ok marco ti ringrazio molto, provo e posto risultato.
__________________
D@x |
|
|
|
|
|
#10 |
|
Member
Iscritto dal: Aug 2009
Messaggi: 168
|
Caro Marco,
il tutto funziona perfettamente, non so come ringraziarti!! Spero di diventare bravo come te\voi
__________________
D@x |
|
|
|
|
|
#11 |
|
Member
Iscritto dal: Aug 2009
Messaggi: 168
|
Dato che siamo in tema,
qualcuno di voi saprebbe dirmi come posso fare per vedere del testo contenuto in un file txt all interno di una textbox, essendo il file in questione aperto da un altro processo? Ho provato diverse soluzioni ma ognuna risponde con errore di file aperto da un altro processo... (in pratica "intercettare" un file di LOG generato da un applicazione in esecuzione) Non volendo approfittare di voi, mi basta anche solo una dritta.
__________________
D@x Ultima modifica di daxdaxdax : 27-10-2009 alle 18:07. |
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Puoi provare a inserire le istruzioni critiche di accesso a quel file in un blocco Try Catch, magari all'interno di un metodo che viene eseguito periodicamente... |
|
|
|
|
|
|
#13 |
|
Member
Iscritto dal: Aug 2009
Messaggi: 168
|
Io non ci riesco....ufff cosa sbaglio?
Codice:
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If RadioButton1PLAY.Checked = True Then
'Leggo file da percorso in label5
Try
TextBox1.Text = IO.File.ReadAllText(Form1.Label5.Text)
Catch ex As Exception
End Try
TextBox1.Focus()
TextBox1.ScrollToCaret()
Else
End If
End Sub
__________________
D@x |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Perchè "Form1.Label5.Text" ?
Se il codice Timer sta su Form1, è inutile. Se invece vi fai riferimento da altra Form, non va. Form1 è la classe, non l'oggetto... |
|
|
|
|
|
#15 |
|
Member
Iscritto dal: Aug 2009
Messaggi: 168
|
perchè il percorso del file da leggere è contenuto nella label5 nel form1.... non va bene? la lettura la fa quando il file in questione non viene aperto dal suo processo "di nascita"...
__________________
D@x |
|
|
|
|
|
#16 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Che VB.NET poi chiuda un occhio e lo faccia funzionare lo stesso è un altro discorso. Il senso della mia critica era : 1. Se Timer1 si trova su Form1, è inutile specificare Form1.Label5... 2. Se Timer1 non è su Form1, è incorretto riferirsi alla classe Form1. ( se VB.NET "alla VB6" lo tollera, non è comunque accettabile in .NET ). Detto questo, il tuo codice funziona, non ho chiaro cosa possa andare storto, se non ricevi messaggi di errore e non leggi niente dal log, evidentemente ciò che hai messo nel Try Catch non va a buon fine, perciò intercetta il msg d'errore e vedi cos'è. |
|
|
|
|
|
|
#17 |
|
Member
Iscritto dal: Aug 2009
Messaggi: 168
|
ok grazie!!
come posso fa andare in textbox2 automaticamente le righe che iniziano con "new player"?
__________________
D@x Ultima modifica di daxdaxdax : 31-10-2009 alle 13:21. |
|
|
|
|
|
#18 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Alla TextBox1 mandi tutte le linee lette, mentre alla TextBox2 ( controllandole con una substring... ) solo quelle che iniziano con la substring desiderata. Ad esempio vedi qui : http://www.hwupgrade.it/forum/showthread.php?t=2076458 [ mio post #7 ] tralasciando la gestione della ProgressBar... |
|
|
|
|
|
|
#19 |
|
Member
Iscritto dal: Aug 2009
Messaggi: 168
|
sempre disponibile!
guardo subito, grazie
__________________
D@x |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:02.




















