Was brauchen wir?:
1 Modul:
Modul-Code:
Call des Modules:
1 Modul:
Modul-Code:
VB.NET-Quellcode
- Imports System.Runtime.InteropServices
- Public Class MSNStatusMessage
- Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" ( _
- ByVal hWnd1 As Integer, _
- ByVal hWnd2 As Integer, _
- ByVal lpsz1 As String, _
- ByVal lpsz2 As String) _
- 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 Const WM_COPYDATA As Short = 74
- Private Structure COPYDATASTRUCT
- Public dwData As Integer
- Public cbData As Integer
- Public lpData As Integer
- End Structure
- Public Enum EnumCategory As Integer
- Music = 0
- Games = 1
- Office = 2
- End Enum
- Public Shared Sub SendStatusMessage(ByVal Enable As Boolean, ByVal Category As EnumCategory, Optional ByVal Message As String = "")
- Dim Data As COPYDATASTRUCT
- Dim Buffer As String = "\0" & Category.ToString + "\0" & IIf(Enable, "1", "0") & "\0{0}\0" & Message & "\0\0\0\0" & Chr(0) & ""
- Dim Handle As Integer = 0
- Data.dwData = 1351
- Data.lpData = VarPtr(Buffer)
- Data.cbData = Buffer.Length * 2
- Handle = FindWindowEx(0, Handle, "MsnMsgrUIManager", Nothing)
- If Handle > 0 Then
- SendMessage(Handle, WM_COPYDATA, 0, VarPtr(Data))
- End If
- End Sub
- Private Shared Function VarPtr(ByVal e As Object) As Integer
- Dim GC As GCHandle = GCHandle.Alloc(e, GCHandleType.Pinned)
- Dim GC2 As Integer = GC.AddrOfPinnedObject.ToInt32
- GC.Free()
- Return GC2
- End Function
Call des Modules: