1,486
社区成员
发帖
与我相关
我的任务
分享
Option Explicit
Private Const WM_COPYDATA = &H4A
Private Type COPYDATASTRUCT
dwData As Long
cbData As Long
lpData As Long
End Type
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Sub Command1_Click()
Dim hwndRecv As Long
hwndRecv = FindWindow("RECVSTRING", "RecvString")
If hwndRecv = 0 Then
MsgBox "你还没启动VC方程序接收字符串", vbInformation, "vb:发送字符串"
Exit Sub
End If
Dim sText As String
Dim cds As COPYDATASTRUCT
sText = Text1.Text
cds.cbData = LenB(sText)
cds.lpData = StrPtr(sText)
Call SendMessage(hwndRecv, WM_COPYDATA, 0, cds)
MsgBox "字符串已经发送出去"
End Sub
case WM_COPYDATA:
{
PCOPYDATASTRUCT pcd = (PCOPYDATASTRUCT)lParam;
int cch = (pcd->cbData / sizeof(WCHAR));
PWSTR pszRecv = new WCHAR[cch + 1];
memcpy(pszRecv, pcd->lpData, pcd->cbData);
pszRecv[cch] = L'\0';
MessageBoxW(hWnd, pszRecv, L"vc:接收字符串", MB_OK);
delete [] pszRecv;
return TRUE;
}