'送信側(N88BASICでもかまわない、、、と思う)
#N88BASIC
'「SendMessageA」関数はw,lParamをDWord以外で宣言してもよい、、、と
'どこかに書いてありました。
'それは、VBの資料だったんですが。。。
Declare Function SendMessageStr Lib "user32" Alias "SendMessageA" _
(hWnd As HWND, _
wMsg As DWord, _
wParam As DWord, _
lParam As BytePtr) As Long
'表示
Print "全部にw「0」l「Hello! I am ActiveBasicProgram!」送信します。"
'送信&結果表示
SendMessageStr(HWND_BROADCAST,WM_COPYDATA,0,"Hello! I am ActiveBasicProgram!")
Print "終了しました。受信側を見てください。"
'-----------------------------------------------------------------------------
' ウィンドウメッセージを処理するためのコールバック関数
Function MainWndProc(hWnd As HWND, dwMsg As DWord, wParam As WPARAM, lParam As LPARAM) As LRESULT
' TODO: この位置にウィンドウメッセージを処理するためのコードを記述します。
'使う変数宣言
Dim htext As HWND
Dim Send As String
'コピーデータの処理
if dwMsg=WM_COPYDATA Then
Msgbox hMainWnd,"届きました。データを表示します。"
htext = GetDlgItem(hMainWnd,Static1)
Send = Str$(wParam)
SetWindowText(htext,Send)
htext = GetDlgItem(hMainWnd,Static2)
Send = Str$(lParam)
SetWindowText(htext,Send)
End If
' イベントプロシージャの呼び出しを行います。
MainWndProc=EventCall_MainWnd(hWnd,dwMsg,wParam,lParam)
End Function
Dim cds As COPYDATASTRUCT
With cds
.lpData = "Hello! I am ActiveBasicProgram!"
.cbData = lstrlen(.lpData) + 1
End With
SendMessage(HWND_BROADCAST, WM_COPYDATA, 0, VarPtr(cds) As LPARAM)
'コピーデータの処理
If dwMsg = WM_COPYDATA Then
Dim pcbs As *COPYDATASTRUCT
Dim receiveText As *Byte
Msgbox hMainWnd,"届きました。データを表示します。"
pcbs = lParam As *COPYDATASTRUCT
receiveText = pcbs->lpData
SetDlgItemText(hMainWnd, Static1, receiveText)
SetDlgItemText(hMainWnd, Static2, receiveText)
MainWndProc = TRUE
Else
' イベントプロシージャの呼び出しを行います。
MainWndProc=EventCall_MainWnd(hWnd, dwMsg, wParam, lParam)
End If