by MML » 2006年10月10日(火) 08:38
最近COPYDATAを使って、データの投げ合いをしようと、思い以下のようなものを作ってみました。
プログラムA
コード: 全て選択
'送信側(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 "終了しました。受信側を見てください。"
プログラムB(受信側)
コード: 全て選択
'-----------------------------------------------------------------------------
' ウィンドウメッセージを処理するためのコールバック関数
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
あと、プログラムBは「プロジェクト」を使ってください
ウィンドウに「text」を2つ張ってください
これがうまくいきません。
どこか間違いがあればお教えください。
最近COPYDATAを使って、データの投げ合いをしようと、思い以下のようなものを作ってみました。
プログラムA
[code]'送信側(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 "終了しました。受信側を見てください。"[/code]
プログラムB(受信側)
[code]'-----------------------------------------------------------------------------
' ウィンドウメッセージを処理するためのコールバック関数
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[/code]
あと、プログラムBは「プロジェクト」を使ってください
ウィンドウに「text」を2つ張ってください
これがうまくいきません。
どこか間違いがあればお教えください。