Drew Wutka
DWUTKA at Marlow.com
Mon Jul 16 16:55:23 CDT 2007
Option Explicit
Private Declare Function CreateWindowEx Lib "user32" Alias
"CreateWindowExA" (ByVal dwExStyle As Long, ByVal lpClassName As String,
ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal x As Long,
ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal
hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long,
lpParam As Any) As Long
Private Declare Function DestroyWindow Lib "user32" (ByVal hwnd As Long)
As Long
Private Declare Function GetWindowText Lib "user32" Alias
"GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal
cch As Long) As Long
Private Declare Function SetWindowText Lib "user32" Alias
"SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long
Private Const HWND_BROADCAST = &HFFFF&
Dim strType As String
Dim DataCollection As Collection
Dim DataNames As Collection
Public FirstParameter As Long
Public SecondParameter As Long
Property Get DataCount() As Long
DataCount = DataNames.Count
End Property
Property Get DataInfo(strName As String) As String
DataInfo = DataCollection(strName)
End Property
Public Function AddData(ByVal strDataName As String, ByVal strData As
String)
On Error Resume Next
DataCollection.Remove strDataName
DataNames.Remove strDataName
DataCollection.Add strData, strDataName
DataNames.Add strDataName
End Function
Private Function GetStringSegment(ByRef strData As String) As String
Dim intLength As Long
intLength = Asc(Left(strData, 1))
GetStringSegment = Mid(strData, 2, intLength)
strData = Mid(strData, intLength + 2)
End Function
Private Function CreateStringSegment(ByVal strToCreate As String) As
String
If Len(strToCreate) > 255 Then strToCreate = Left(strToCreate, 255)
CreateStringSegment = Chr(Len(strToCreate)) & strToCreate
End Function
Private Function SetDataToWindow() As Long
Dim strDataToSend As String
Dim inthWndOfWindow As Long
Dim i As Long
strDataToSend = CreateStringSegment(Me.MessageType)
strDataToSend = strDataToSend & CreateStringSegment("" &
SecondParameter)
For i = 1 To DataCollection.Count
strDataToSend = strDataToSend & CreateStringSegment(DataNames(i)) &
CreateStringSegment(DataCollection(i))
Next i
FirstParameter = -3
SecondParameter = CreateWindowEx(0, "STATIC", strDataToSend, 0, 0, 0, 0,
0, 0, 0, App.hInstance, ByVal 0&)
imMessaging.SendISFEMessage imMessaging.ISFE2007hWnd, FirstParameter,
SecondParameter
End Function
Private Sub Class_Initialize()
Set DataCollection = New Collection
Set DataNames = New Collection
End Sub
Private Sub Class_Terminate()
Set DataCollection = Nothing
Set DataNames = Nothing
End Sub
Property Get MessageType() As String
MessageType = strType
End Property
Public Function ProcessIncomingData()
Select Case FirstParameter
Case -2
strType = "Handshake"
Case -1
strType = "Pulse"
Case 1
strType = "NewRequest"
'This is for the ISFE
Case -3
Dim strText As String
Dim strName As String
Dim strData As String
Dim intLen As Long
intLen = 256 ^ 2
strText = Space(intLen)
intLen = GetWindowText(SecondParameter, strText, intLen)
If intLen > 0 Then
strText = Left(strText, intLen)
strType = GetStringSegment(strText)
SecondParameter = CLng(GetStringSegment(strText))
Do Until strText = ""
strName = GetStringSegment(strText)
strData = GetStringSegment(strText)
DataCollection.Add strData, strName
DataNames.Add strName
Loop
End If
DestroyWindow SecondParameter
End Select
End Function
Property Let MessageType(strEnter As String)
strType = strEnter
Select Case strType
Case "Handshake"
FirstParameter = -2
Case "Pulse"
FirstParameter = -1
Case "NewRequest"
FirstParameter = 1
End Select
End Property
Public Function SendData()
If DataCollection.Count = 0 Then
imMessaging.SendISFEMessage imMessaging.ISFE2007hWnd,
FirstParameter, SecondParameter
Else
SetDataToWindow
End If
End Function
Public Function BroadcastData()
imMessaging.SendISFEMessage HWND_BROADCAST, FirstParameter,
SecondParameter
End Function
The information contained in this transmission is intended only for the person or entity to which it is addressed and may contain II-VI Proprietary and/or II-VI BusinessSensitve material. If you are not the intended recipient, please contact the sender immediately and destroy the material in its entirety, whether electronic or hard copy. You are notified that any review, retransmission, copying, disclosure, dissemination, or other use of, or taking of any action in reliance upon this information by persons or entities other than the intended recipient is prohibited.