Para contestar a tu duda sobre WM_COPYDATA en "C" te muestro este ejemplo de una aplicación sin ventana visible que se manda a sí misma un mensaje WM_COPYDATA y lo responde. Está escrita en C
Código PHP:
#include <windows.h>
#pragma hdrstop
//---------------------------------------------------------------------------
LRESULT __stdcall WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
if(uMsg == WM_COPYDATA){
PCOPYDATASTRUCT Data = (PCOPYDATASTRUCT)lParam;
MessageBox(hWnd, (PCHAR)Data->lpData, "Mensaje recibido", 0);
}
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
char Name[] = "Hide";
#pragma argsused
WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
HWND Handle;
MSG message;
WNDCLASS WinClass = {0,(WNDPROC)WindowProc,0,0,0,0,0,0,"", Name};
COPYDATASTRUCT Data = {0};
char *MSG = "Hola";
Data.lpData = MSG;
Data.cbData = strlen(MSG) + 1;
RegisterClass(&WinClass);
Handle = CreateWindow(Name, "", 0,0,0,0,0, HWND_DESKTOP, (HMENU)0, 0, NULL);
SendMessage(Handle, WM_COPYDATA, 0, (LPARAM)&Data);
while(GetMessage(&message, NULL, 0, 0)){
TranslateMessage(&message);
DispatchMessage(&message);
}
return 0;
}
Saludos.