Paltalk 9.x Handles Class Vb.net

You can talk about VB programming here

Paltalk 9.x Handles Class Vb.net

Postby TWiZA » Thu Sep 23, 2010 4:58 pm


Hey

It's just my old method http://www.imfiles.com/instant-messenger/twiza-rooms-controls-handles-9-2-9-4-9-5-source-t31453.html put in a class

It's not really conventional lol but it still works.


Code: Select all
Public Class PtkRoom

    Private Delegate Function EnumWin(ByVal HwD As Integer, ByRef lparam As Integer) As Int32

    Private Declare Function EnumWindows Lib "user32.dll" Alias "EnumWindows" (ByVal FuncCall As EnumWin, ByRef lParam As Integer) As Boolean
    Private Declare Function EnumChildWindows Lib "user32" (ByVal hWndParent As Integer, ByVal FuncCall As EnumWin, ByRef lParam As Integer) As Boolean
    Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal HwnD As Integer, ByVal lpClassName As String, ByVal nMaxCount As Integer) As Integer

    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal HwnD As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
    Private Declare Function SendMessageByString Lib "user32" Alias "SendMessageA" (ByVal HwnD As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As String) As Integer

    Private Const WM_GETTEXT = &HD
    Private Const WM_GETTEXTLENGTH = &HE





    Private _RoomName As String
    Private _RoomHwd As Integer
    Private _listHWD As Integer
    Private _roomCTL As Integer
    Private _sendCTL As Integer
    Private Shared _Rooms As New List(Of Integer)

    Sub New(ByVal RoomHwd As Integer)

        _RoomHwd = RoomHwd
        _RoomName = GetText(RoomHwd)
        EnumChildWindows(RoomHwd, New EnumWin(AddressOf FindHwndCTL), 0)

    End Sub


    Public Shared Function hGetRooms() As Integer()

        EnumWindows(New EnumWin(AddressOf FindRooms), 0)
        Return _Rooms.ToArray

    End Function

    Public ReadOnly Property hRoomWindow As Integer
        Get
            Return _RoomHwd
        End Get
    End Property

    Public ReadOnly Property hUsersListCTL As Integer
        Get
            Return _listHWD
        End Get
    End Property

    Public ReadOnly Property hRoomTextCTL As Integer
        Get
            Return _roomCTL
        End Get
    End Property

    Public ReadOnly Property hSendTextCTL As Integer
        Get
            Return _sendCTL
        End Get
    End Property
    Public ReadOnly Property RoomName As String
        Get
            Return _RoomName
        End Get
    End Property


    Private Shared Function FindRooms(ByVal HwD As Integer, ByRef lparam As Integer) As Int32

        Dim sClass As String = Space(255)
        Dim nC As Integer = GetClassName(HwD, sClass, 255)
        Dim WinTxt As String

        sClass = sClass.Substring(0, nC)

        If sClass = "DlgGroupChat Window Class" Then
            WinTxt = GetText(HwD)
            If WinTxt.Contains(" Voice Room") Then
                _Rooms.Add(HwD)
            End If
        End If

        Return 1
    End Function


    Private Function FindHwndCTL(ByVal HwD As Integer, ByRef lparam As Integer) As Int32

        Dim sClass As String = Space(255)
        Dim nC As Integer = GetClassName(HwD, sClass, 255)
        Static i As UShort

        sClass = sClass.Substring(0, nC)

        If sClass = "SysListView32" Then _listHWD = HwD
        If sClass = "RichEdit20A" Then
            i += 1
            If i = 3 Then _sendCTL = HwD
            If i = 4 Then _roomCTL = HwD : i = 0 : Return 0 : Exit Function
        End If

        Return 1
    End Function

    Private Shared Function GetText(ByVal Hwnd As Integer) As String

        Dim MyStr As String = Space(SendMessage(Hwnd, WM_GETTEXTLENGTH, 0, 0) + 1)
        SendMessageByString(Hwnd, WM_GETTEXT, Len(MyStr), MyStr)
        Return MyStr.Replace(Chr(0), "")

    End Function

End Class



Example of use in form named "form1" with a TextBox named "TextBox1"


Code: Select all
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load


        For Each i As Integer In PtkRoom.hGetRooms
            Dim Room As New PtkRoom(i)
            With Room
                TextBox1.Text &= .RoomName & vbCrLf & "Window Handle: " & .hRoomWindow.ToString & vbCrLf & _
                       "Users List (SysListView32) Handle: " & .hUsersListCTL.ToString & vbCrLf & _
                       "Room Text (RichEdit20A) Handle: " & .hRoomTextCTL.ToString & vbCrLf & _
                       "Send Text (RichEdit20A) Handle: " & .hSendTextCTL.ToString & vbCrLf & vbCrLf
            End With
        Next
    End Sub





I'm sorry I got this bad habit of sources with no comments :oops:

--------------------------------------
Message for people who don't understand what's going on this class
You should use Winspector Spy or Spy++ and some Google, That's the way I did :wink:
TWiZA
imFiles Newbie
imFiles Newbie
 
Posts: 39
Joined: Wed Jul 16, 2008 11:15 am

Re: Paltalk 9.x Handles Class Vb.net

Postby String » Thu Sep 23, 2010 7:47 pm

Works. Good example of creating a class also.
-= Please ask your questions in the forum, not in pm.
String
imFiles Senior
imFiles Senior
 
Posts: 313
Joined: Mon Mar 10, 2008 7:06 am
Location: IDE


Return to Visual Basic Programming

 


  • Related topics
    Replies
    Views
    Last post

Who is online

Users browsing this forum: No registered users and 0 guests