이 클래스는 foobar-shared.lib에 있습니다.비 구조체를 복사하기 위해 WM_COPYDATA를 사용할 수 있습니까?
class FooBar {
std::string m_helloWorld;
}
그리고 다음과 같이 SendCopyData를 사용하여 foobar-from.exe를 호출합니다.
extern HWND hMainWnd; // foobar-from.exe
{
FooBar fooBar;
HWND hWnd = FindAppWindow(); // foobar-to.exe
COPYDATASTRUCT cds;
cds.dwData = ('f'|('o'<<8)|('o'<<16));
cds.cbData = sizeof(FooBar);
cds.lpData = (LPVOID)fooBar;
SendCopyData(hWnd, (WPARAM)hMainWnd, (LPARAM)&cds);
}
foobar-to에서 .exe, OnCopyData 처리 :
구조체 때 FooBar 괜찮 았지만 이제는이 오류가 클래스 :First-chance exception at 0x0064ef81 in foobar-to.exe: 0xC0000005:
Access violation reading location 0x0231dd7c.
원래 내 fooBar
인스턴스가 스택에 있으므로 힙으로 이동하려고 시도했지만 약간 다른 오류가 발생했습니다 (필요한 경우 여기에 결과를 게시 할 수 있음).
MSDN에 따르면 "전달되는 데이터에는 데이터를 수신하는 응용 프로그램이 액세스 할 수없는 개체에 대한 포인터 또는 다른 참조가 없어야합니다." 그래서 이것은 struct 데이터에서만 가능하다고 생각합니다. 제가 맞습니까?