Drew Wutka
DWUTKA at Marlow.com
Mon Jul 16 16:55:54 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 SetWindowLong Lib "user32" Alias
"SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal
dwNewLong As Long) As Long
Private Declare Function RegisterWindowMessage Lib "user32" Alias
"RegisterWindowMessageA" (ByVal lpString As String) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA"
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal
lParam As Long) As Long
Const GWL_WNDPROC = -4
Public PreviousHwnd As Long
Public ISFE2007hWnd As Long
Dim intMessageHookHwnd As Long
Dim intISFEMessageID As Long
Event ISFEMessage(im As ISFEMessage)
Event HandshakeCompleted(intRemoteHwnd As Long)
Private Sub Class_Initialize()
intISFEMessageID = RegisterWindowMessage("ISFEMessage")
intMessageHookHwnd = CreateWindowEx(0, "STATIC", "", 0, 0, 0, 0, 0, 0,
0, App.hInstance, ByVal 0&)
PreviousHwnd = SetWindowLong(intMessageHookHwnd, GWL_WNDPROC, AddressOf
WindowProc)
End Sub
Public Function IncomingWindowMessage(intMessage As Long, intWParameter
As Long, intLParameter As Long)
Select Case intMessage
Case intISFEMessageID
Dim im As ISFEMessage
Set im = New ISFEMessage
im.FirstParameter = intWParameter
im.SecondParameter = intLParameter
im.ProcessIncomingData
If Not ProcessMessage(im) Then RaiseEvent ISFEMessage(im)
Set im = Nothing
End Select
End Function
Private Sub Class_Terminate()
Dim dwReturn As Long
dwReturn = SetWindowLong(intMessageHookHwnd, GWL_WNDPROC, PreviousHwnd)
DestroyWindow intMessageHookHwnd
End Sub
Public Function SendISFEMessage(ByVal inthWnd As Long, ByVal
intParameter1 As Long, ByVal intParameter2 As Long)
SendMessage inthWnd, intISFEMessageID, intParameter1, intParameter2
End Function
Public Function Handshake()
Dim im As ISFEMessage
Set im = New ISFEMessage
im.MessageType = "Handshake"
im.SecondParameter = intMessageHookHwnd
im.BroadcastData
Set im = Nothing
End Function
Private Function ProcessMessage(im As ISFEMessage) As Boolean
ProcessMessage = True
Select Case im.MessageType
Case "Handshake"
If im.SecondParameter <> intMessageHookHwnd Then
If Me.ISFE2007hWnd = 0 Then
Me.ISFE2007hWnd = im.SecondParameter
im.SecondParameter = intMessageHookHwnd
im.SendData
RaiseEvent HandshakeCompleted(Me.ISFE2007hWnd)
End If
End If
Case Else
ProcessMessage = False
End Select
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.