请问如何在一个进程中修改另一个进程中的变量 如果两个进程没有约定的话,那么Win32不允许去直接更改其他进程的变量。如果两个程序可以事先约定的话,就比较容易了发送消息是主要的方法当然具体还牵涉其它一些通信技术,可来信探讨别太当真,我也是菜鸟 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我朋友的一段代碼我在发送方强行在接收方分配内存,然后写入数据,再把指针大小用消息发过去oid CReadBmpDlg::OnButton1() { // TODO: Add your control notification handler code here HWND hw = ::FindWindow(NULL,_T("Accept")); if(::IsWindow(hw)) { DWORD dwPid; ::GetWindowThreadProcessId(hw,&dwPid); HANDLE hP = ::OpenProcess(PROCESS_VM_WRITE|PROCESS_VM_OPERATION,false,dwPid); if(hP) { PVOID pvMem = ::VirtualAllocEx(hP,NULL,100,MEM_RESERVE|MEM_COMMIT , PAGE_READWRITE); if(pvMem) { if(!::WriteProcessMemory (hP,pvMem,"hello hml",10,NULL)) { ASSERT(0); } ::CloseHandle(hP); ::PostMessage (hw,MS,(WPARAM)pvMem,100); } } }}接收方只要释放内存就可以了LRESULT CAcceptMessageDlg::OnMESSAGE_DATA(WPARAM wParam, LPARAM lParam){ PVOID hg = (PVOID)wParam; char * p =(char *)hg; m_s = p; BOOL b; VERIFY(b = ::VirtualFreeEx (::GetCurrentProcess(),hg,0,MEM_RELEASE)); UpdateData(false); return NULL;} re: xielm是个好方法,我原来也为这个问题发过愁,后来改了用map file的方式.这个方式更简单。可惜我不就给你加分。 请问nitrogen,可否详细说说如何用共享内存的方法来做? [求助]请帮忙分析下Ocx打包过程中的Inf代码。。。。 帮忙看看这段ado操作代码哪儿错了? CXTCaption不能单独改变颜色 请问在VC 6下能否使用GDI +? 如何使用? 询问价格 我的VC下面的控件,在笔记本XP(HOME)不能用,在台式XP(PROFESSIONAL)能用怎么回事啊!急急急! dll将要被释放时,怎样进行一行内存释放的操作,是在他的析构函数里面吗? 如何实现pDC在ondraw外的调用 我如何才能获得IpConfig的输出信息? 如何半透明填充矩形框? 怎样用同一个指针指向不同类型的数据? 有没有办法改变多文档视图程序的显示
我在发送方强行在接收方分配内存,然后写入数据,再把指针大小用消息发过去
oid CReadBmpDlg::OnButton1()
{
// TODO: Add your control notification handler code here
HWND hw = ::FindWindow(NULL,_T("Accept"));
if(::IsWindow(hw))
{
DWORD dwPid;
::GetWindowThreadProcessId(hw,&dwPid);
HANDLE hP = ::OpenProcess(PROCESS_VM_WRITE|PROCESS_VM_OPERATION,false,dwPid);
if(hP)
{ PVOID pvMem = ::VirtualAllocEx(hP,NULL,100,MEM_RESERVE|MEM_COMMIT , PAGE_READWRITE);
if(pvMem)
{
if(!::WriteProcessMemory (hP,pvMem,"hello hml",10,NULL))
{
ASSERT(0);
}
::CloseHandle(hP);
::PostMessage (hw,MS,(WPARAM)pvMem,100);
}
}
}
}
接收方只要释放内存就可以了
LRESULT CAcceptMessageDlg::OnMESSAGE_DATA(WPARAM wParam, LPARAM lParam)
{
PVOID hg = (PVOID)wParam;
char * p =(char *)hg;
m_s = p;
BOOL b;
VERIFY(b = ::VirtualFreeEx (::GetCurrentProcess(),hg,0,MEM_RELEASE));
UpdateData(false);
return NULL;
}