Computer über Skype "steuern" (Using Skype4Com.dll)

    • VB.NET

    Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von nafets3646.

      Computer über Skype "steuern" (Using Skype4Com.dll)

      Hallo liebes Vb-Paradise.

      Ich habe einen alten Code von mir ausgegraben, mit dem man den PC über internet (Skype) steuern kann.
      Das ist zum Beispiel nützlich wenn:
      • Man einen Server hat, man AFK ist und der Co-Admin muss den Server neu starten. (Der Server läuft auf dem PC von Admin)
      Ich zeige euch also in diesem Tutorial wie ihr eure eigene Skype-Steuerung programmieren könnt.



      Schritt 1: Ein Neues Projekt erstellen
      Als aller erstes müsst ihr ein neues Projekt erstellen. Nehmt eine Windows-Forms anwendung,
      Obwohl es eigentlich egal ist, da ich in diesem Tutorial KEINE Benutzer-Oberfläche erstelle.

      Schritt 2: Hinzufügen der Dll und Imports
      Zuerst müssen wir einen Verweis auf die dll legen. Dazu geht ihr auf:
      Projekt--> Verweis hinzufügen --> Durchsuchen --> Skype4Com.dll

      Nun müssen wir noch einen Import setzen:

      VB.NET-Quellcode

      1. Imports SKYPE4COMLib



      Schritt 3: Functions und Subs
      Damit das ganze funktioniert müssen wir nun eine Sub und eine Funktion erstellen.
      Die Sub:

      VB.NET-Quellcode

      1. Public Sub skype_MessageStatus(ByVal msg As ChatMessage, ByVal status As TChatMessageStatus)
      2. Dim Message As String
      3. Dim Trigger As String = "!"
      4. Dim BotName As String = "Server"
      5. Try
      6. If status = TChatMessageStatus.cmsReceived Then
      7. Message = msg.Body
      8. If Message.StartsWith(Trigger) Then
      9. Message = Message.Remove(0, 1)
      10. msg.Chat.SendMessage(BotName & ": " & ParseMessage(Message))
      11. End If
      12. End If
      13. Catch ex As Exception
      14. End Try
      15. End Sub


      Erklärung der Sub

      VB.NET-Quellcode

      1. Public Sub skype_MessageStatus(ByVal msg As ChatMessage, ByVal status As TChatMessageStatus)
      2. Dim Message As String 'Nachricht die empfangen wird
      3. Dim Trigger As String = "!" 'Zeichen auf dass der "Bot" reagiert.
      4. Dim BotName As String = "Server" 'Optional: Der Name des Bots
      5. Try
      6. If status = TChatMessageStatus.cmsReceived Then 'Wenn eine Nachricht emfangen wird dann...
      7. Message = msg.Body
      8. If Message.StartsWith(Trigger) Then 'Wenn diese NAchricht mit ! (dem Trigger) beginnt dann...
      9. Message = Message.Remove(0, 1) 'Das ! wird entfernt
      10. msg.Chat.SendMessage(BotName & ": " & ParseMessage(Message)) 'Eine Nachricht wird zurück gegeben mit dem Text: Botname (Server) & : & ParseMessage(um diese Funktion kümmern wir uns gleich)
      11. End If
      12. End If
      13. Catch ex As Exception
      14. End Try
      15. End Sub


      Die Funktion:
      In dieser Funktion werden die Befehle angegeben auf die die Skype-Steuerung reagieren soll.

      VB.NET-Quellcode

      1. Function ParseMessage(ByVal message As String) As String
      2. Dim msg As String = "Kein gültiger Befehl!"
      3. Select Case message
      4. Case "ip"
      5. msg = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName).AddressList.GetValue(4).ToString()
      6. End Select
      7. Return msg
      8. End Function


      Erklärung der Funktion

      VB.NET-Quellcode

      1. Function ParseMessage(ByVal message As String) As String
      2. Dim msg As String = "Kein gültiger Befehl!" 'Diese Nachricht wird zurück gegeben
      3. Select Case message 'Wenn der Befehl...
      4. Case "ip" 'Ip ist dann...
      5. msg = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName).AddressList.GetValue(4).ToString() 'wird die Nachricht mit der Ip zurück gegeben.
      6. End Select
      7. Return msg 'msg wird zurück gegeben
      8. End Function



      Schritt 4: Sonstiger Code
      Damit alles funktioniert müssen wir noch das Form1_Load Event behandeln:

      VB.NET-Quellcode

      1. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      2. Dim Skype = New SKYPE4COMLib.Skype
      3. Dim Skype_ As New Skype
      4. Skype.Attach(7, False)
      5. AddHandler Skype.MessageStatus, AddressOf skype_MessageStatus
      6. End Sub


      Nun ist das Programm eigentlich fertig.
      Schritt 5: Schlussworte
      Um Mehrere Befehle hinzuzufügen ändert einfach den Code der Funktion:
      Spoiler anzeigen

      VB.NET-Quellcode

      1. Function ParseMessage(ByVal message As String) As String
      2. Dim msg As String = "Kein gültiger Befehl!"
      3. Select Case message
      4. Case "ip"
      5. msg = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName).AddressList.GetValue(4).ToString()
      6. Case "local Ip"
      7. msg = "Lokale Ip"
      8. Case "Test"
      9. msg = "Skype-Steuerungstest erfolgreich!"
      10. End Select
      11. Return msg
      12. End Function


      Mit der Skype4Com.dll kann man natürlich noch viel mehr machen, mehr dazu HIER!

      Ich hoffe euch konnte euch mit diesem Tutorial helfen.

      Edit:// Dll wurde hinzugefügt! Siehe Anhang.
      Dateien
      • Dlls.zip

        (525,83 kB, 885 mal heruntergeladen, zuletzt: )
      Mfg: Gather
      Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Gather“ ()

      Nice

      Aber irgendwas Will bei mir Gehen :O

      Knast du da da mal hineingucken?

      VB.NET-Quellcode

      1. Imports SKYPE4COMLib
      2. Public Class Form1
      3. Dim IsRunning As Boolean = False
      4. Dim MeStatus As TBuddyStatus
      5. Dim Message As String 'Nachricht die empfangen wird
      6. Dim SenderName_Display As String
      7. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      8. Dim Skype = New SKYPE4COMLib.Skype
      9. Dim Skype_ As New Skype
      10. Skype.Attach(7, False)
      11. AddHandler Skype.MessageStatus, AddressOf skype_MessageStatus
      12. End Sub
      13. Public Sub skype_MessageStatus(ByVal msg As ChatMessage, ByVal status As TChatMessageStatus)
      14. Try
      15. 'If status = TChatMessageStatus.cmsReceived Then 'Wenn eine Nachricht emfangen wird dann...
      16. Message = msg.Body
      17. If IsRunning = True Then 'Wenn das Programm Gestartet ist...
      18. SenderName_Display = msg.Sender.DisplayName
      19. msg.Chat.SendMessage(ParseMessage(Message)) 'Eine Nachricht wird zurück gegeben...
      20. 'End If
      21. End If
      22. Catch ex As Exception
      23. End Try
      24. End Sub
      25. Function ParseMessage(ByVal message As String) As String
      26. Dim msg As String 'Diese Nachricht wird zurück gegeben
      27. Select Case message 'Wenn der Befehl...
      28. Case "Hallo", "Hi", "Hey", "hallo", "hi", "hey"
      29. msg = "Hallo, " & SenderName_Display
      30. Case Else
      31. msg = "xD Hier steht nur Müll!"
      32. End Select
      33. Return msg 'msg wird zurück gegeben
      34. End Function
      35. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      36. If Button1.Text = "Start" Then
      37. IsRunning = True
      38. Button1.Text = "Stop"
      39. Button2.Enabled = False
      40. Else
      41. IsRunning = False
      42. Button1.Text = "Start"
      43. Button2.Enabled = True
      44. End If
      45. End Sub
      46. End Class
      Als ich das ganze getestet habe funktionierte es nicht.Entweder wurde mitlerweile etwas an Skype geändert oder es hat noch nie funktioniert.Ich fände es gut wenn jemand ein funktionierendes Tutorial hierzu machen würde.Ich glaube du hast zudem users.skynet.be/fa258239/bestanden/skype4com/skype4com.pdf als Quelle genutzt.Ich habe auch die Infos daraus ausprobiert und es klappt noch nicht,also werde ich mal weiter googeln.
      Was?
      Nein ich habe mir nicht die Anleitung als Quelle hergenommen? Wieso auch? Dieser Code ist verdammt simpel.
      Ja vielleicht werde ich es mir in den kommenden Tagen mal ansehen. Dennoch hat dieser Code funktioniert. Anscheinend hat Skype etwas an ihrer .dll verändert.
      Mfg: Gather
      Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


      Funktioniert! (Wenn man die Skype API kennt; Gather hat eine Sache vergessen)

      Gathers Anleitung funktioniert perfekt, nur blockiert Skype in den neueren Versionen jeden Zugriff über einen VsHost (ohne überhaupt zu fragen).
      Visual Studio verwendet VsHost, sowohl beim Debuggen als auch beim Runnen der Release. Die einzige Möglichkeit, damit Skype überhaupt nach der Zulassung eures Programms fragt, ist die Deaktivierung des VsHosts in den Projekteinstellungen.
      Dadurch sind zwar einige Debugmöglichkeiten deaktiviert, aber anders geht es nicht ;)

      Hier die Anleitung dazu.

      Wenn es dannach immernoch nicht bei euch funktioniert, dann liegt es an eurem Programm und nicht an Skype!
      Das stimmt nicht ganz - es werden nur einige Funktionen herausgenommen, die Skype API bzw. Skype4ComLib funktioniert immer noch :)

      Microsoft lässt es aber auch nur aus einem Grund: Würden sie die Skype4ComLib wirklich rausnehmen, dann würden ihre eigenen "Skype"-Headsets nicht mehr funktionieren, deren Funktionalität sie aber gewährleisten müssen (laut Gesetz; bzw. es gäbe sonst eine Möglichkeit auf Klage & Rückerstattung).
      Hallo,
      kenne mich jetzt schon etwas besser mit der Skype API aus, habe dein Tutorial befolgt (und noch einen Startknop eingefügt) trotzdem passiert wenn mir jemand schreibt nichts.

      VB.NET-Quellcode

      1. Public Sub skype_MessageStatus(ByVal msg As ChatMessage, ByVal status As TChatMessageStatus)
      2. Dim Message As String
      3. Dim Trigger As String = "!"
      4. Dim BotName As String = "Server"
      5. Try
      6. If status = TChatMessageStatus.cmsReceived Then
      7. Message = msg.Body
      8. If Message.StartsWith(Trigger) Then
      9. Message = Message.Remove(0, 1)
      10. msg.Chat.SendMessage(BotName & ": " & ParseMessage(Message))
      11. End If
      12. End If
      13. Catch ex As Exception
      14. End Try
      15. End Sub
      16. Function ParseMessage(ByVal message As String) As String
      17. Dim msg As String = "Kein gültiger Befehl!"
      18. Select Case message
      19. Case "ip"
      20. msg = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName).AddressList.GetValue(4).ToString()
      21. Case "local Ip"
      22. msg = "Lokale Ip"
      23. Case "Test"
      24. msg = "Skype-Steuerungstest erfolgreich!"
      25. End Select
      26. Return msg
      27. End Function
      28. Private Sub MetroButton14_Click(sender As Object, e As EventArgs) Handles MetroButton14.Click
      29. If MetroButton14.Text = "Start" Then
      30. IsRunning = True
      31. MetroButton14.Text = "Stop"
      32. Else
      33. IsRunning = False
      34. MetroButton14.Text = "Start"
      35. End If
      36. End Sub


      Es kommt keine Fehlermeldung beim Debuggen, es kommt gar nix

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „jntv“ ()