WM_COPYDATA传送两个32位数据!急啊~~~~

evealice 2008-06-20 03:44:36
我想用WM_COPYDATA在进程之间传2个32位数据WPARAM wParam和LPARAM lParam。
怎么发送和接收呢?谢谢啦
...全文
99 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
CounterHack 2008-06-21
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 cnzdgs 的回复:]
C/C++ codetypedef struct {
DWORD Data1;
DWORD Data2;
} YOURDATA;

YOURDATA yd = {0, 0};
COPYDATASTRUCT cds = {0, sizeof(yd), &yd};
::SendMessage(hwnd, WM_COPYDATA, 0, &cds);
[/Quote]
9527他大爷 2008-06-20
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 cnzdgs 的回复:]
C/C++ codetypedefstruct{
DWORD Data1;
DWORD Data2;
} YOURDATA;

YOURDATA yd={0,0};
COPYDATASTRUCT cds={0,sizeof(yd),&yd};
::SendMessage(hwnd, WM_COPYDATA,0,&cds);
[/Quote]
cnzdgs 2008-06-20
  • 打赏
  • 举报
回复
typedef struct {
DWORD Data1;
DWORD Data2;
} YOURDATA;

YOURDATA yd = {0, 0};
COPYDATASTRUCT cds = {0, sizeof(yd), &yd};
::SendMessage(hwnd, WM_COPYDATA, 0, &cds);
na_he 2008-06-20
  • 打赏
  • 举报
回复
看看思路了,呵呵!
发送的部分:
HWND hWndNetGroup = NULL;
hWndNetGroup = FindWindow(NETGROUP_MAIN_CLASSNAME, NULL);
if (hWndNetGroup != NULL)
{
if (lstFiles.size() <= 0)
{
return FALSE;
}

STRLIST::iterator index;
unsigned nFilesBufLen = 0;
// Get all file names length.
for (index = lstFiles.begin(); index != lstFiles.end(); index++)
{
nFilesBufLen += (*index).length();
nFilesBufLen ++;
}
nFilesBufLen++;

char* pszBuf = new char[nFilesBufLen];
memset(pszBuf, 0, nFilesBufLen);
// Init file names.
char* pBuf = pszBuf;
for (index = lstFiles.begin(); index != lstFiles.end(); index++)
{
strcpy(pBuf, (*index).c_str());
pBuf += (*index).length();
pBuf++;
}
//
COPYDATASTRUCT data;
data.cbData = sizeof(data) + nFilesBufLen;
data.dwData = nFilesBufLen;
data.lpData = pszBuf;
SendMessage(hWndNetGroup, WM_COPYDATA, NULL, (LPARAM)&data);

delete[] pszBuf;

return FALSE;
}
// 处理的部分
BOOL CMainFrame::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)
{
STRLIST lstFiles;
char* pBuf = (char*)pCopyDataStruct->lpData;
while (*pBuf != NULL)
{
lstFiles.push_back(pBuf);
pBuf += strlen(pBuf);
pBuf++;
}
SendMessage(WM_SEND_FILES, 0, (LPARAM)&lstFiles);

return CFrameWnd::OnCopyData(pWnd, pCopyDataStruct);
}
yxz_lp 2008-06-20
  • 打赏
  • 举报
回复
lpData为PVOID,传入结构指针即可


#define MYDISPLAY 1
typedef struct tagMYREC
{
char s1[80];
char s2[80];
DWORD n;
} MYREC;
COPYDATASTRUCT MyCDS;
MYREC MyRec;
HRESULT hResult;
BOOL CALLBACK InfoDlgProc( HWND, UINT, WPARAM, LPARAM );
// ************ Code fragment ****************
// Get data from user. InfoDlgProc stores the information in MyRec.
//
DialogBox( ghInstance, "InfoDlg", hWnd, (DLGPROC) InfoDlgProc );
//
// Copy data into structure to be passed via WM_COPYDATA.
// Also, we assume that truncation of the data is acceptable.
//
hResult = StringCbCopy( MyRec.s1, sizeof(MyRec.s1), szFirstName );
if (hResult != S_OK)
return False;
hResult = StringCbCopy( MyRec.s2, sizeof(MyRec.s2), szLastName );
if (hResult != S_OK)
return False;
MyRec.n = nAge;
//
// Fill the COPYDATA structure
//
MyCDS.dwData = MYPRINT; // function identifier
MyCDS.cbData = sizeof( MyRec ); // size of data
MyCDS.lpData = &MyRec; // data structure
//
// Call function, passing data in &MyCDS
//
hwDispatch = FindWindow( "Disp32Class", "Hidden Window" );
if( hwDispatch != NULL )
SendMessage( hwDispatch,
WM_COPYDATA,
(WPARAM)(HWND) hWnd,
(LPARAM) (LPVOID) &MyCDS );
else
MessageBox( hWnd, "Can't send WM_COPYDATA", "MyApp", MB_OK );

blh 2008-06-20
  • 打赏
  • 举报
回复
[Quote=引用楼主 evealice 的帖子:]
我想用WM_COPYDATA在进程之间传2个32位数据WPARAM wParam和LPARAM lParam。
怎么发送和接收呢?谢谢啦
[/Quote]
一次传不完就传两次
evealice 2008-06-20
  • 打赏
  • 举报
回复
lpData里怎么放入两个数据呢?
KeSummer 2008-06-20
  • 打赏
  • 举报
回复
The COPYDATASTRUCT structure contains data to be passed to another application by the WM_COPYDATA message.

Syntax

typedef struct tagCOPYDATASTRUCT {
ULONG_PTR dwData;
DWORD cbData;
PVOID lpData;
} COPYDATASTRUCT, *PCOPYDATASTRUCT;


放到 lpData里面。
evealice 2008-06-20
  • 打赏
  • 举报
回复
用WM_COPYDATA不能传2个数据吗?
yjgx007 2008-06-20
  • 打赏
  • 举报
回复
用管道.........
evealice 2008-06-20
  • 打赏
  • 举报
回复
我只会传递一个数据,不会传递两个T-T

15,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧