怎么样VB向VC发送数据,我用SENGMESSAGE 发数据与VC成功,可是sendmessage数据类型是长整形,VC怎么接受一个文件名呀
有没有这方面的例程??
 我看zhmjz(我可是个大-天-才) 这个问题与我差不多   能不能教我这么做呀??能发送,可vc怎么接受那文件名呀??
  急求!!!!!
Dim hvcfile As Long
Dim CD As COPYDATASTRUCT
Dim sfile As String
    hvcfile = FindWindow(vbNullString, "Control the CAM350")  '发送到"control the cam350"这个VC运行程序
sfile = "e:\ouyang\GERBER\GBX\MA009S0707001.GBX"
    CD.dwData = Len(sfile)
    CD.lpData = StrPtr(sfile)
    If hvcfile <> 0 Then
        hvcfile = SendMessage(hvcfile, WM_COPYDATA, 0, VarPtr(CD))
        MsgBox ("sendmessage OK")
    Else
       MsgBox ("error!sendmessage fail!")
    End If
End Sub

解决方案 »

  1.   

    VC  int 对象VB 的 long
      

  2.   

    注意在VC中int是4个字节(相当于VB的Long),而VB的Integer只有2个字节。必须保证VB和VC的参数个数相同,所占字节数也一致。最后一个要注意的问题是VC中绝对不能出现数组越界的情况,否则会导致VB程序崩溃。 
      

  3.   

    VC中接受信息:
    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
      switch message:
        case WM_COPYDATA:
                  ..................................//??这里该怎么写获得上面那程序传过来的文件名,把它赋予一变量
    //COPYDATASTRUCT CD;
    // memcpy(lParam,CD,sizeof(struct tagCOPYDATASTRUCT)); break;
    大虾们,还望指点.很急!! 麻烦了
      

  4.   

    晕,memcpy()的第一个参数和第二个参数反了吧?
      

  5.   

    不知道在哪里上传源代码,不过贴主要代码出来也足够了(注意VB中的字符串是UNICODE)vb:
    Option ExplicitPrivate Const WM_COPYDATA = &H4APrivate Type COPYDATASTRUCT
            dwData As Long
            cbData As Long
            lpData As Long
    End TypePrivate 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 LongPrivate 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 Subvc:
    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;
    }