Skype-Nachricht senden

  • VB.NET

Es gibt 39 Antworten in diesem Thema. Der letzte Beitrag () ist von jvbsl.

    Skype-Nachricht senden

    Hi, hab da ein Problem beim Senden einer Nachricht ins Skype-Fenster mit der "SendMessage"-Funktion.
    Mit diesem Code:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Declare Function GetAsyncKeyState Lib "user32.dll" (ByVal nVirtKey As Keys) As Short
    3. Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr
    4. Private Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" (ByVal hWndParent As Integer, ByVal hWndChildAfter As Integer, ByVal lpszClass As String, ByVal lpszWindow As String) As Integer
    5. Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
    6. Private Const WM_CHAR As Integer = &H102
    7. Private hwnd As IntPtr
    8. Private f As IntPtr
    9. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    10. hwnd = FindWindow(vbNullString, "Unbenannt - Editor")
    11. f = FindWindowEx(hwnd, 0, "Edit", vbNullString)
    12. End Sub
    13. Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
    14. SendMessage(f, WM_CHAR, Asc(e.KeyChar), 0)
    15. End Sub
    16. End Class

    kann ich problemlos die Tasteneingaben an den Windows Notepad senden, aber wenn ich "Unbenannt - Editor" durch den Skype-Fensternamen änder, passiert nichts mehr.. Ich glaube es liegt an dem Wort "Edit" in der Zeile: f = FindWindowEx(hwnd, 0, "Edit", vbNullString) aber ich weiß nicht was ich da hinschreiben soll..

    Hoffe mir kann da jemand helfen.
    Hallo,

    ich weiß ja nicht, ob Spy++ auch bei Express dabei ist, aber damit kann man soetwas nachgucken...ich komm dann auch auf den Typ "TChatRichEdit.UnicodeClass"

    Mfg jvbsl
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Hmm..hab mir mal das Programm runtergeladen und habs in verschiedenen Fensterabschnitten probiert..kam sowas wie z.B. "TRichViewEdit", "TChatEntryControl", "TChatContentControl" usw..hab alle versucht in VB einzusetzen, bringt aber nix -.-" Im Notepad kommt "Edit" heraus, da klappt es aber.

    Edit: Auf dieser Seite: freelists.org/post/nvda/list-o…indow-class-assignments,8 sind alle Namen aufgelistet und überall wo ...=Edit stand hab ich probiert aber keines hat funktioniert.

    Quellcode

    1. [WindowClasses]
    2. TTntButton.UnicodeClass=Button
    3. TTntButton=Button
    4. TTntCheckBox.UnicodeClass=CheckBox
    5. TTntCheckBox=CheckBox
    6. TTntComboBox.UnicodeClass=ComboBox
    7. TTntComboBox=ComboBox
    8. TTntDrawGrid.UnicodeClass=ListBox
    9. TTntDrawGrid=ListBox
    10. TGroupChatUserList=ListBox
    11. TTntEdit.UnicodeClass=Edit
    12. TTntEdit=Edit
    13. THintWindow=ToolTip
    14. TTntHintWindow.UnicodeClass=ToolTip
    15. TTntHintWindow=ToolTip
    16. TskHintWindow=ToolTip
    17. TskHintWindow.UnicodeClass=ToolTip
    18. TTntMemo.UnicodeClass=Edit
    19. TTntMemo=Edit
    20. TTntPageControl.UnicodeClass=TabControl
    21. TTntPageControl=TabControl
    22. TTntRadioButton.UnicodeClass=RadioButton
    23. TTntRadioButton=RadioButton
    24. TTntStatusBar.UnicodeClass=StatusBar
    25. TTntStatusBar=StatusBar
    26. TTntStringGrid=ListBox
    27. tTntToolbar.UnicodeClass=ToolBar
    28. tTntToolbar=ToolBar
    29. tkGrid.UnicodeClass=ListBox
    30. tkGrid=ListBox
    31. TTntStringGrid.UnicodeClass=ListBox
    32. TRichViewEdit=MultilineEdit
    33. TRichEditViewer=Edit
    34. tSkBgGrid.UnicodeClass=ListBox
    35. tSkBgGrid=ListBox
    36. tSkAddressBar.UnicodeClass=ComboBox
    37. tSkAddressBar=ComboBox
    38. TskSendContacts.UnicodeClass=Dialog
    39. tSkSearchForm.UnicodeClass=Dialog
    40. TskProfileForm.UnicodeClass=Dialog
    41. TskOptionsForm.UnicodeClass=Dialog
    42. tSkContactList=ListBox
    43. TTntBitBtn.UnicodeClass=Button
    44. TRichView=Edit
    45. TSkypeToolbar=ToolBar
    46. TSkypeRichViewEdit=Edit
    47. tSkGrid.UnicodeClass=ListBox

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

    nein eine TextBox hat nur eine einstellbare Schriftart und arbeitet mit sogenanntem Plain Text...eine RichTextBox arbeitet mit dem RichTextFormat und hat somit auch Einstellungen wie Farbe größe und auch die möglichkeit ein Bild zu speichern...aber ich werds jetzt auch einfach mal probieren...

    Edit:
    also Spy++ hat mir das Wunderbar angezeigt...du musst bei FindWindowEx ja immer das Parent angeben...und die RichTextBox hat als Parent ein "TChatEntryControl"
    also der Code um das Handle zu bekommen lautet dann wie folgt:

    VB.NET-Quellcode

    1. hwnd = FindWindow(vbNullString, "Fenstertitel")
    2. f = FindWindowEx(hwnd, 0, "TChatEntryControl", vbNullString)
    3. f = FindWindowEx(f, 0, "TChatRichEdit.UnicodeClass", vbNullString)


    Mfg jvbsl
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---

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

    Hallo,

    4.1.0.179...jetzt kommt es natürlich drauf an, ob du das Chatfenster von der Userliste getrennt hast oder nicht(ich habs getrennt)
    ich habs zusammen gemacht und dann gehts so:

    VB.NET-Quellcode

    1. hwnd = System.Diagnostics.Process.GetProcessesByName("Skype")(0).MainWindowHandle
    2. f = FindWindowEx(hwnd, 0, "TConversationForm.UnicodeClass", "Nickname")
    3. f = FindWindowEx(f, 0, "TChatEntryControl", vbNullString)
    4. f = FindWindowEx(f, 0, "TChatRichEdit.UnicodeClass", vbNullString)


    Mfg jvbsl
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Hallo,

    dazu verwendest du auch SendMessage:

    VB.NET-Quellcode

    1. Sub SendEnter()
    2. SendMessage(f, WM_KEYDOWN, 13, 1)
    3. SendMessage(f, WM_KEYUP, 13, 1)
    4. End Sub


    Mfg jvbsl
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Perfekt, klappt alles!^^ Kannst du mir aber sagen, für was diese 13 steht? OK, 13 steht für ENTER, aber gibts eine Liste wo alle Tasten aufgelistet sind? Weil Backspace z.B. auch nich funkt..

    Edit: OK Backspace ist Chr(8) aber würde trotzdem gern ne Liste haben^^

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Cr4ckY“ ()

    torsten-horn.de/techdocs/ascii.htm

    außerdem wäre es wahrscheinlich besser statt SendMessage(f,WM_CHAR) WM_SETTEXT zu verwenden, ist auch wesentlich schneller...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---