Seite 1 von 3 123 Letzte
  1. #1
    Avatar von uncopyable
    Registriert seit
    19.11.2011
    Beiträge
    282
    Thanked 235 Times in 120 Posts

    Standard [VB.NET] Knuddels Fenster manipulieren

    Hallo

    Hier mal die Source wie man das Fenster von Knuddels manipulieren kann bzw. was in den Chat Senden ohne Focus.

    Klasse Win32API
    PHP-Code:
    'API Deklarationen / Structuresc usw..'
    Public Class Win32API
        
    'FindWindow'
        
    <DllImport("user32.dll"SetLastError:=TrueCharSet:=CharSet.Auto)> _
        
    Public Shared Function FindWindow_
         ByVal lpClassName 
    As String_
         ByVal lpWindowTitle 
    As String) As IntPtr
        End 
    Function

        Public Declare 
    Auto Function GetWindowText Lib "user32.dll" (ByVal hwnd As IntPtrByVal lpString As StringByVal cch As Integer) As Integer
        
    Public Declare Function GetClassName Lib "user32.dll" Alias "GetClassNameA" (ByVal hwnd As IntPtrByVal lpClassName As StringByVal nMaxCount As Integer) As Integer

        
    'FindWindowEx'
        
    <DllImport("user32.dll"SetLastError:=TrueCharSet:=CharSet.Auto)> _
        
    Public Shared Function FindWindowEx(ByVal parentHandle As IntPtr_
                          ByVal childAfter 
    As IntPtr_
                          ByVal lpClassName 
    As String_
                          ByVal lpWindowTitle 
    As String) As IntPtr
        End 
    Function


        Public Declare Function 
    PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As IntegerByVal wMsg As IntegerByVal wParam As IntegerByVal lParam As Integer) As Integer


        
    'Fenster suchen'
        
    Public Function enumWindowsProc(ByVal hWnd As IntPtrByVal lpParam As IntPtr) As String
            Dim len 
    As Integer
            
    ' get Title
            Dim title As String = Space(255)
            len = GetWindowText(hWnd, title, 255)
            title = title.Substring(0, len)
            ' 
    get className
            Dim className 
    As String Space(255)
            
    len GetClassName(hWndclassName255)
            
    className className.Substring(0len)
            
    ' format output
            Dim formattedOutput As String = String.Format("{0,-10} {1,-50} {2} ", hWnd, className, title)

            If title.StartsWith("Channel") Then
                Return className & "" & title
            Else
                Return Nothing
            End If
        End Function

        '
    SendMessageByInt (um die Textlänge auszulesen)'
        Public Declare Function SendMessageByInt Lib "user32.dll" Alias "SendMessageA" _
          (ByVal hWnd As IntPtr, _
          ByVal uMsg As Integer, _
          ByVal wParam As Integer, _
          ByVal lParam As Integer) As Integer

        '
    SendMessageByString'
        Public Declare Function SendMessageByString Lib "user32.dll" Alias "SendMessageA" _
             (ByVal hWnd As IntPtr, _
             ByVal uMsg As Integer, _
             ByVal wParam As Integer, _
             ByVal lParam As StringBuilder) As Integer


        '
    SendMessage'
        Public Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" _
          (ByVal handle As IntPtr, ByVal uMsg As Integer, _
           ByVal wParam As IntPtr, ByVal lParam As String) As IntPtr

       

    End Class 
    Klasse Form1

    Was wir brauchen:
    Button = Button1
    Button = Button2
    Textbox = Textbox1

    PHP-Code:
    'Konstante'
        
    Const WM_SETTEXT As Integer = &HC
        
    Const WM_GETTEXT As Integer = &HD
        
    Const WM_GETTEXTLENGTH As Integer = &HE
        
    Public Const EM_GETSEL = &HB0
        
    Public Const WM_CHAR = &H102
        
    Public Const WM_KEYDOWN As Integer = &H100
        
    Public Const WM_KEYUP As Integer = &H101

        Dim Hauptfenster 
    As IntPtr Win32API.FindWindow("SunAwtFrame"titel())
        
    Dim Control1 As IntPtr Win32API.FindWindowEx(HauptfensterIntPtr.Zero"SunAwtCanvas"Nothing)
        
    Dim Control2 As IntPtr Win32API.FindWindowEx(Control1IntPtr.Zero"SunAwtCanvas"Nothing)
        
    Dim Control3 As IntPtr Win32API.FindWindowEx(Control2IntPtr.Zero"SunAwtCanvas"Nothing)
        
    Dim Textbox1 As IntPtr Win32API.FindWindowEx(Control3IntPtr.Zero"Edit"Nothing)
        Private Const 
    BM_CLICK As Long = &HF5&

        
    'Auslesen-Funktion:'
        
    Public Function GetText(ByVal hwnd As IntPtr) As String
            
    If (Not hwnd.Equals(IntPtr.Zero)) Then
                Dim length 
    As Integer Win32API.SendMessageByInt(hwndWM_GETTEXTLENGTH00)

                If 
    length 0 Then
                    Dim SB 
    As New StringBuilder(length)
                    
    Dim Result As Int32 Win32API.SendMessageByString(hwndWM_GETTEXTlength 1SB)

                    If 
    Result <> 0 Then
                        
    Return SB.ToString()
                    Else
                        Return 
    String.Empty
                    
    End If
                Else
                    Return 
    "Kein Text"
                
    End If
            Else
                Return 
    "Handle nicht gefunden"
            
    End If
        
    End Function

        Private Function 
    titel() As String
            Dim pl 
    As Process() = Process.GetProcesses
            
    For Each p As Process In pl
                
    If p.MainWindowTitle.StartsWith("Channel"Then
                    
    Return p.MainWindowTitle
                
    Else
                    Return 
    Nothing
                End 
    If
            
    Next
        End 
    Function


        Private 
    Sub Button1_Click(sender As System.ObjectAs System.EventArgsHandles Button1.Click
            
    'Text aus Knuddels Editbox auslesen und in unserer Textbox anzeigen...'
            
    TextBox1.Text GetText(Textbox1'Falls kein Knuddels Fenster vorhanden ist erscheint in der TextBox der Text "Handle nicht gefunden"'
        
    End Sub

    Private Sub Button2_Click(sender As System.ObjectAs System.EventArgsHandles Button2.Click
            
    'Text in Knuddels Editbox schreiben..'
            
    Win32API.SendMessage(Textbox1WM_SETTEXT0TextBox1.Text)
            
    'Fokus auf die Knuddels Editbox setzen'
            
    Win32API.SendMessage(Textbox1, &H70TextBox1.Text)
            
    'Threader kurz warten lassen...'
            
    Threading.Thread.Sleep(10)
            
    'Taste simmuliern...'
            
    Win32API.PostMessage(Textbox1WM_KEYDOWN, &HD, &H1C0001)
            
    'Angegeben dass es sich um ein Enter druck handelt..'
            
    Win32API.PostMessage(Textbox1WM_CHAR, &HD, &H1C0001)
            
    'Threader kurz warten lassen...'
            
    Threading.Thread.Sleep(10)
            
    'Enter Taste losgelassen...'
            
    Win32API.PostMessage(Textbox1WM_KEYUP, &HD, &HC01C0001)
            
    'Fokus aufheben..'
            
    Win32API.SendMessage(Textbox1, &H80TextBox1.Text)
        
    End Sub 
    Viel Spaß
    Geändert von uncopyable (29.02.2012 um 23:04 Uhr)


    while( behappy() ) { code(); }

  2. The Following 3 Users Say Thank You to uncopyable For This Useful Post:

    getsha (07.09.2018), x failstar (24.05.2012), xPaT (12.12.2011)

  3. #2

    Registriert seit
    19.11.2011
    Beiträge
    2.128
    Thanked 1.936 Times in 1.180 Posts

    Standard AW: [VB.NET] Knuddels Fenster manipulieren

    Das funktioniert leider nichtmehr. Der Text wird zwar an die TextBox gesendet aber das Enter drücken funktioniert nicht mehr. Kann das mal vllt. jemand aktualisieren?

  4. The Following User Says Thank You to !lkay For This Useful Post:

    Jack DanieLs (04.08.2013)

  5. #3
    Avatar von uncopyable
    Registriert seit
    19.11.2011
    Beiträge
    282
    Thanked 235 Times in 120 Posts

    Standard AW: [VB.NET] Knuddels Fenster manipulieren

    Zitat Zitat von NightMareG Beitrag anzeigen
    Das funktioniert leider nichtmehr. Der Text wird zwar an die TextBox gesendet aber das Enter drücken funktioniert nicht mehr. Kann das mal vllt. jemand aktualisieren?
    Hab es gerade getestet bei mir funktioniert es perfekt. Also müsste der Fehler wohl bei dir liegen.


    while( behappy() ) { code(); }

  6. #4

    Registriert seit
    19.11.2011
    Beiträge
    2.128
    Thanked 1.936 Times in 1.180 Posts

    Standard AW: [VB.NET] Knuddels Fenster manipulieren

    Zitat Zitat von uncopyable Beitrag anzeigen
    Hab es gerade getestet bei mir funktioniert es perfekt. Also müsste der Fehler wohl bei dir liegen.


    Bei mir kommen da ziemlich viele Fehler TextBox8, wundert mich sowieso wofür man beim Focus setzen noch einen String parameter beim SendMessage braucht.
    Hab die versucht zu beheben und es wird nur der Text an die TextBox gesendet mehr nicht.

    Kannst Du mal deinen Code vllt. zeigen?
    Geändert von !lkay (26.02.2012 um 14:37 Uhr)

  7. #5
    Avatar von uncopyable
    Registriert seit
    19.11.2011
    Beiträge
    282
    Thanked 235 Times in 120 Posts

    Standard AW: [VB.NET] Knuddels Fenster manipulieren

    Poste mal deine Code die du bis jetzt hast. Eigentlich kannst du es 1 zu 1 von oben kopieren und verwenden.


    while( behappy() ) { code(); }

  8. #6

    Registriert seit
    19.11.2011
    Beiträge
    2.128
    Thanked 1.936 Times in 1.180 Posts

    Standard AW: [VB.NET] Knuddels Fenster manipulieren

    Code:
    Win32API.SendMessage(Textbox1, &H7, 0, TextBox8.Text)
    Die Zeile macht Probleme.

    Die ist ja eigentlich zum fokussieren des Fensters aber was soll der Parameter TextBox8.Text darstellen?

  9. #7
    Avatar von uncopyable
    Registriert seit
    19.11.2011
    Beiträge
    282
    Thanked 235 Times in 120 Posts

    Standard AW: [VB.NET] Knuddels Fenster manipulieren

    Zitat Zitat von NightMareG Beitrag anzeigen
    Code:
    Win32API.SendMessage(Textbox1, &H7, 0, TextBox8.Text)
    Die Zeile macht Probleme.

    Die ist ja eigentlich zum fokussieren des Fensters aber was soll der Parameter TextBox8.Text darstellen?
    Oh das war ein Schreibfehler es soll Textbox1 heißen.
    Also
    Code:
    Win32API.SendMessage(Textbox1, &H7, 0, TextBox1.Text)
    Geändert von uncopyable (29.02.2012 um 23:10 Uhr)


    while( behappy() ) { code(); }

  10. #8

    Registriert seit
    19.11.2011
    Beiträge
    2.128
    Thanked 1.936 Times in 1.180 Posts

    Standard AW: [VB.NET] Knuddels Fenster manipulieren

    Tut sich gar nichts.

    Der Code ist ehrlichgesagt das reinste Wirrwarr.

  11. #9
    Avatar von iToxic
    Registriert seit
    18.11.2011
    Beiträge
    918
    Thanked 1.773 Times in 913 Posts

    Standard AW: [VB.NET] Knuddels Fenster manipulieren

    Zitat Zitat von NightMareG Beitrag anzeigen
    Tut sich gar nichts.

    Der Code ist ehrlichgesagt das reinste Wirrwarr.
    Ohne deinen Code zu wissen, können wir dir nicht helfen, wurde aber schon mehrmals gesagt.

    Der Code ist strukturiert und Kommentiert, weiß ehrlich gesagt nicht, was daran ein Wirrwarr sein soll.

    btw. Eben getestet und funktioniert ohne Probleme und macht genau das, was er soll .


  12. The Following User Says Thank You to iToxic For This Useful Post:

    uncopyable (04.03.2012)

  13. #10

    Registriert seit
    19.11.2011
    Beiträge
    2.128
    Thanked 1.936 Times in 1.180 Posts

    Standard AW: [VB.NET] Knuddels Fenster manipulieren

    Dann lad mal die Projektmappe hoch.

    Bei mir kommen da andauernd Fehler und wenn man die korrigiert funktioniert es auch nicht.

Seite 1 von 3 123 Letzte

Ähnliche Themen

  1. Knuddels schließt sich immer bei neuen Fenster
    Von Cracker im Forum Fragen & Probleme
    Antworten: 4
    Letzter Beitrag: 14.01.2013, 21:51
  2. [CSS] Windows-Style Fenster
    Von Comu im Forum CSS
    Antworten: 0
    Letzter Beitrag: 28.07.2012, 21:38
  3. USA manipulieren Al Kaida Website!
    Von Waterpolo im Forum RealLife News
    Antworten: 4
    Letzter Beitrag: 24.05.2012, 14:05
  4. Knuddels Applet bearbeiten / manipulieren
    Von Salvos im Forum Knuddels Programmierung
    Antworten: 14
    Letzter Beitrag: 17.12.2011, 20:21
  5. /code Fenster neu
    Von helfen im Forum Knuddels-News
    Antworten: 10
    Letzter Beitrag: 26.11.2011, 14:36
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.