Q&A

  • SendMessage가 가끔 동작을 안하는 이유는?
---------------------------------------------------------------------------------

보내는쪽:

---------------------------------------------------------------------------------

var

pcds : TCopyDataStruct;

h_Wnd, Handle : HWND;

Data : string;

begin

pcds.cbData := Length(Data) + 1;

pcds.lpData := PChar(Data);



h_Wnd := FindWindow(nil, 'Server');

Handle := FindWindow(nil, 'APP');



if h_Wnd <> 0 then SendMessage(h_Wnd, WM_COPYDATA, Handle, LongInt(@pcds));

end;

---------------------------------------------------------------------------------



---------------------------------------------------------------------------------

받는쪽:

---------------------------------------------------------------------------------

procedure WMCOPYDATA(var Msg : TWMCOPYDATA); message WM_COPYDATA;

procedure TServer.WMCOPYDATA;

var

Data : string;

begin

Data := StrPas(Pchar(Msg.CopyDataStruct^.lpData));

SendMessageToSystem(Data);

end;

---------------------------------------------------------------------------------



위의 Source는 원래 Source에서 SendMessage관련 부분만을 정리한건데요.

두개의 서로다른 Execution간에 Message를 주고 받게 되어있습니다.



거의(?) 완벽하게 두 윈도우간 Message를 잘 주고 받습니다. 완벽하게..



근데 정말 가끔 분명히 'Server'나 'APP'라는 두 프로그램이 모두 활성화 되어있는데

Message가 전달이 안될때가 발생합니다. 이 때는 Message를 받는 'Server'프로그램을

죽인후 다시 실행해야만 하더군요...쩝



왜 그런걸까요...쩝 아시는 분 답변 부탁드립니다.

0  COMMENTS