VB6で,WM_COPYDATA.txt をもとに,Hamlogのデータ入力ウィンドウとのやり取りを行なおうとしています.
アプリケーションからの送信の場合には,コールサインの入力や保存もできているのですが,
データの読み取りがうまくできていません.
Type COPYDATASTRUCT
dwData As Long
cbData As Long
lpData As String ' void * のつもり
End Type
Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
lParam As Any) As Long
Function GetFromHAMLOG(Command As Long) As String
Dim cmmd As Long
Dim Hwnd1, Hwnd2, myhwnd As Long
Dim cds As COPYDATASTRUCT
Dim cbuff As String * 512
Dim X As Long
Hwnd1 = FindWindow("TThwin", vbNullString)
If Hwnd1 < 1 Then ' ハムログが起動していない
Exit Function
End If
Call AppActivate("Turbo HAMLOG", 0)
cds.dwData = Command
cds.cbData = 0
cds.lpData = vbNullString
myhwnd = FormTempLog.hwnd '作成中のプログラムのハンドル
X = SendMessage(Hwnd1, WM_COPYDATA, myhwnd, cds)
GetFromHAMLOG = cds.lpData
End Function
これを msg = GetFromHAMLOG(112) で実行すると,本来なら,QTHのデータが帰ってくるはずですが,うまくいきません.
SendMessageの戻り値は,0以外の数字(たとえば 10749274)が帰ってきて問題ないようです.
戻り値は,
cds.cbData : 0
cds.dwData : 112
cds.lpData : ""
となっていて,dwData は,呼び出す前のままで,0または1になっていません.
dwDataが変わっていないということは,データを受け取っていないとも思いますが,myhwndがおかしいのか,どうすればいいのか,ちょっと困っています.
よろしくご教示願います.