//在接收消息的程序中添加代码:
CMyDlg::OnInitDialog()
{
SetProp(m_hWnd,"killvirus",(HANDLE)179718098);
.......
}
添加WM_COPYDATA消息响应函数:
BOOL CMyDlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)
{
char *szStr = (char *)malloc(MAX_PATH);
strcpy(szStr,(char *)(pCopyDataStruct->lpData));
...........
free(szStr);
return CDialog::OnCopyData(pWnd, pCopyDataStruct);
}
在发送消息的程序中添加代码:
BOOL CALLBACK EnumWndProc(HWND hwnd,LPARAM lParam) //枚举窗口
{
if(GetProp(hwnd,TEXT("killvirus"))==(HANDLE)179718098)
{
*(HWND*)lParam = hwnd;
return false;
}
return true;
}
CMyDlg::SendStr(char *szStr)
{
HWND oldHWnd = NULL;
EnumWindows(EnumWndProcMediaPlayer,(LPARAM)&oldHWnd); //枚举所有运行的窗口
if(oldHWnd != NULL)
{
COPYDATASTRUCT cds = { 1, 2*(wcslen( szStr ) + 1), szStr };
::SendMessage(oldHWnd,WM_COPYDATA,0,(LPARAM)&cds); //发送消息
}
}