|
음.. 제가 보기에는 한 1~2곳 의문스러운 부분이 있습니다만.. 풀소스가 아니고 부분,부분 올리셔서 뭐라고 찍어서 말씀드리기가 뭐하네요.. (즉.. 실력이 안된다는 얘기.. ^^;;)
제가 사용하는 소스를 올려봅니다.. 한번 참고해보세요...
메시지를 보내는 쪽..
void __fastcall TFormMain::ThdTimer1Timer(TObject *Sender)
{
HWND hWnd;
COPYDATASTRUCT CopyData;
char *SendBuffer = NULL;
int nLen;
AnsiString msg = "TimerEnd";
nLen = msg.Length();
if( nLen <= 0 ) return;
SendBuffer = new char[nLen];
strncpy(SendBuffer,msg.c_str(),nLen);
hWnd = FindWindow(NULL, "Handler");
if (hWnd)
{
CopyData.dwData = WM_COPYDATA;
CopyData.cbData = nLen + 1;
CopyData.lpData = SendBuffer;
::SendMessage(hWnd, WM_COPYDATA, (WPARAM)Handle, (LPARAM)(&CopyData));
}
if( SendBuffer )
{
delete SendBuffer;
SendBuffer = NULL;
}
}
메시지를 받는 쪽 헤더..
public: // User declarations
void __fastcall OnReceive(TMessage &Message);
BEGIN_MESSAGE_MAP
VCL_MESSAGE_HANDLER(WM_COPYDATA, TMessage, OnReceive)
END_MESSAGE_MAP(TForm)
그리고 소스..
void __fastcall TFormMain::OnReceive(TMessage &Message)
{
AnsiString str;
COPYDATASTRUCT *ReceiveData;
ReceiveData = (COPYDATASTRUCT *) Message.LParam;
str = (char *) ReceiveData->lpData;
str = str.SubString(1,8);
if(str == "TimerEnd")
{
...
}
}
|