getsha (07.09.2018), x failstar (24.05.2012), xPaT (12.12.2011)
-
11.12.2011, 17:25 #1
[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:=True, CharSet:=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 IntPtr, ByVal lpString As String, ByVal cch As Integer) As Integer
Public Declare Function GetClassName Lib "user32.dll" Alias "GetClassNameA" (ByVal hwnd As IntPtr, ByVal lpClassName As String, ByVal nMaxCount As Integer) As Integer
'FindWindowEx'
<DllImport("user32.dll", SetLastError:=True, CharSet:=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 Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
'Fenster suchen'
Public Function enumWindowsProc(ByVal hWnd As IntPtr, ByVal 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(hWnd, className, 255)
className = className.Substring(0, len)
' 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
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(Hauptfenster, IntPtr.Zero, "SunAwtCanvas", Nothing)
Dim Control2 As IntPtr = Win32API.FindWindowEx(Control1, IntPtr.Zero, "SunAwtCanvas", Nothing)
Dim Control3 As IntPtr = Win32API.FindWindowEx(Control2, IntPtr.Zero, "SunAwtCanvas", Nothing)
Dim Textbox1 As IntPtr = Win32API.FindWindowEx(Control3, IntPtr.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(hwnd, WM_GETTEXTLENGTH, 0, 0)
If length > 0 Then
Dim SB As New StringBuilder(length)
Dim Result As Int32 = Win32API.SendMessageByString(hwnd, WM_GETTEXT, length + 1, SB)
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.Object, e As System.EventArgs) Handles 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.Object, e As System.EventArgs) Handles Button2.Click
'Text in Knuddels Editbox schreiben..'
Win32API.SendMessage(Textbox1, WM_SETTEXT, 0, TextBox1.Text)
'Fokus auf die Knuddels Editbox setzen'
Win32API.SendMessage(Textbox1, &H7, 0, TextBox1.Text)
'Threader kurz warten lassen...'
Threading.Thread.Sleep(10)
'Taste simmuliern...'
Win32API.PostMessage(Textbox1, WM_KEYDOWN, &HD, &H1C0001)
'Angegeben dass es sich um ein Enter druck handelt..'
Win32API.PostMessage(Textbox1, WM_CHAR, &HD, &H1C0001)
'Threader kurz warten lassen...'
Threading.Thread.Sleep(10)
'Enter Taste losgelassen...'
Win32API.PostMessage(Textbox1, WM_KEYUP, &HD, &HC01C0001)
'Fokus aufheben..'
Win32API.SendMessage(Textbox1, &H8, 0, TextBox1.Text)
End Sub
Geändert von uncopyable (29.02.2012 um 23:04 Uhr)
while( behappy() ) { code(); }
-
The Following 3 Users Say Thank You to uncopyable For This Useful Post:
-
26.02.2012, 13:46 #2
- Registriert seit
- 19.11.2011
- Beiträge
- 2.128
Thanked 1.936 Times in 1.180 PostsAW: [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?
-
The Following User Says Thank You to !lkay For This Useful Post:
Jack DanieLs (04.08.2013)
-
26.02.2012, 13:59 #3
-
26.02.2012, 14:06 #4
- Registriert seit
- 19.11.2011
- Beiträge
- 2.128
Thanked 1.936 Times in 1.180 PostsAW: [VB.NET] Knuddels Fenster manipulieren
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)
-
29.02.2012, 00:46 #5
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(); }
-
29.02.2012, 16:25 #6
- Registriert seit
- 19.11.2011
- Beiträge
- 2.128
Thanked 1.936 Times in 1.180 PostsAW: [VB.NET] Knuddels Fenster manipulieren
Code:Win32API.SendMessage(Textbox1, &H7, 0, TextBox8.Text)
Die ist ja eigentlich zum fokussieren des Fensters aber was soll der Parameter TextBox8.Text darstellen?
-
29.02.2012, 23:05 #7
-
04.03.2012, 13:28 #8
- Registriert seit
- 19.11.2011
- Beiträge
- 2.128
Thanked 1.936 Times in 1.180 PostsAW: [VB.NET] Knuddels Fenster manipulieren
Tut sich gar nichts.
Der Code ist ehrlichgesagt das reinste Wirrwarr.
-
04.03.2012, 14:10 #9
AW: [VB.NET] Knuddels Fenster manipulieren
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 .
-
The Following User Says Thank You to iToxic For This Useful Post:
uncopyable (04.03.2012)
-
04.03.2012, 14:46 #10
- Registriert seit
- 19.11.2011
- Beiträge
- 2.128
Thanked 1.936 Times in 1.180 PostsAW: [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.
Ähnliche Themen
-
Knuddels schließt sich immer bei neuen Fenster
Von Cracker im Forum Fragen & ProblemeAntworten: 4Letzter Beitrag: 14.01.2013, 21:51 -
[CSS] Windows-Style Fenster
Von Comu im Forum CSSAntworten: 0Letzter Beitrag: 28.07.2012, 21:38 -
USA manipulieren Al Kaida Website!
Von Waterpolo im Forum RealLife NewsAntworten: 4Letzter Beitrag: 24.05.2012, 14:05 -
Knuddels Applet bearbeiten / manipulieren
Von Salvos im Forum Knuddels ProgrammierungAntworten: 14Letzter Beitrag: 17.12.2011, 20:21 -
/code Fenster neu
Von helfen im Forum Knuddels-NewsAntworten: 10Letzter Beitrag: 26.11.2011, 14:36
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.