DLL에서
procedure SendData;
var
Hwnd: THandle;
pData: Pointer;
begin
pData := ....;
Hwnd := FindWindow('TForm1', 'Form1');
if Hwnd <> 0 then
SendMessage(Hwnd, WM_USER_SENDDATA, 0, Integer(pData))
else
ShowMessage('Receiver window not found.');
end;
어플리케이션내에서
type
TForm1 = class(TForm)
...
public
procedure WMUserSendData(var Msg: TMessage); message WM_USER_SENDDATA;
end;
procedure TForm1.WMUserSendData(var Msg: TMessage);
var
MyData: Pointer;
begin
MyData := @Msg.LParam;
...
end;
위의 소스는 용일님 전에 Dll에서 애플리케이션으로 데이타를 넘주는 것이였습니다.
그런데 제가 해보니 WM_USER_SENDDATA이 선언이 되지 않았는다 메세지 띄네요. 그리고
pData := ....;----> 여기서 정확히 어떤값이 들어가야합니까?
Hwnd := FindWindow('TForm1', 'Form1');--->TForm1는 애플리케이션의 클래스를 의미합니까?
애플리케이션에서 msg 변수는 어디서 값을 받나요?
또한 이 소스로 두 Dll간의 데이타를 주고 받을 수 있을까?
const
WM_USER_SENDDATA = WM_USER + $1000;
위와같은식으로 상수로 선언해서 사용하세요...
pData는 건네줄 자료의 주소값입니다.
이것은 원하는 대로 정의해서 쓰세요...
^^ 항상 즐코하세요.
김태영 wrote:
> DLL에서
> procedure SendData;
> var
> Hwnd: THandle;
> pData: Pointer;
> begin
> pData := ....;
> Hwnd := FindWindow('TForm1', 'Form1');
> if Hwnd <> 0 then
> SendMessage(Hwnd, WM_USER_SENDDATA, 0, Integer(pData))
> else
> ShowMessage('Receiver window not found.');
> end;
>
> 어플리케이션내에서
> type
> TForm1 = class(TForm)
> ...
> public
> procedure WMUserSendData(var Msg: TMessage); message WM_USER_SENDDATA;
> end;
>
> procedure TForm1.WMUserSendData(var Msg: TMessage);
> var
> MyData: Pointer;
> begin
> MyData := @Msg.LParam;
> ...
> end;
>
> 위의 소스는 용일님 전에 Dll에서 애플리케이션으로 데이타를 넘주는 것이였습니다.
> 그런데 제가 해보니 WM_USER_SENDDATA이 선언이 되지 않았는다 메세지 띄네요. 그리고
>
> pData := ....;----> 여기서 정확히 어떤값이 들어가야합니까?
> Hwnd := FindWindow('TForm1', 'Form1');--->TForm1는 애플리케이션의 클래스를 의미합니까?
> 애플리케이션에서 msg 변수는 어디서 값을 받나요?
>
> 또한 이 소스로 두 Dll간의 데이타를 주고 받을 수 있을까?