초보라 정말 어렵네요.. 도와 주세요
올라오 있는 예제처럼 이대로 Test를 해 보았습니다..
메시지를 던지면 네스케이프가 뜨는 거여요.. 미치겠습니다.
던지는 넘 프로그램은 서비 프로그램(sub 라함)
받는넘 프로그램은 서비 프로그램(main 라함)
----------------------------------------------------------------------------------
// 던지는 넘(sub)
----------------------------------------------------------------------------------
unit usndr;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
tData = Record
s: String[250];
end;
var
Form1: TForm1;
lWMsgHandle : longint;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
lWMsgHandle := RegisterWindowMessage('나으문자열');
end;
procedure TForm1.Button1Click(Sender: TObject);
var
DataStruct: TCopyDataStruct;
Data: TData;
begin
Data.s := '나는 구창민이다, 나는 18살이다..읔..돌날아온다..';
DataStruct.dwData := lWMsgHandle;
DataStruct.cbData := SizeOf(TData);
DataStruct.lpData := @Data;
SendMessage(hwnd_BroadCast, WM_CopyData, wParam(Application.Handle), lParam(@DataStruct));
end;
end.
----------------------------------------------------------------------------------
// 받는넘(Main):
----------------------------------------------------------------------------------
unit urcv;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs,
StdCtrls;
type
TFReceiver = class(TForm)
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
private
f_my_Messagehandle: longint;
procedure WndProc(var wpMessage: TMessage); override;
public
end;
type
tData = Record
s: String[250];
end;
var
FReceiver: TFReceiver;
implementation
{$R *.DFM}
procedure TFReceiver.FormCreate(Sender: TObject);
begin
f_my_Messagehandle := RegisterWindowMessage('나으문자열');
end;
procedure TFReceiver.WndProc(var wpMessage: TMessage);
var
Data: TData;
begin
If (wpMessage.Msg = WM_CopyData) And
(PCopyDataStruct(wpMessage.lParam)^.dwData = f_my_Messagehandle) Then
begin
CopyMemory(@data, PCopyDataStruct(wpMessage.lParam)^.lpData, SizeOf(TData));
wpMessage.Result := 1;
Memo1.lines.add(Data.s); //메모박스에 받은 문자열을 나타낸다.
end
else
inherited WndProc(wpMessage);
end;
end.
동작은 잘됩니다만 원하시는 대답 될런지 모르겠습니다.
{송신측}
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
type
tData = Record
s: String[250];
end;
procedure TForm1.Button1Click(Sender: TObject);
var
wnn:HWND;
DataStruct: TCopyDataStruct;
Data: TData;
begin
wnn:=FindWindow('TFReceiver','FReceiver');
Data.s := '나는 구창민이다, 나는 18살이다..읔..돌날아온다..';
DataStruct.dwData := wnn;
DataStruct.cbData := SizeOf(TData);
DataStruct.lpData := @Data;
SendMessage(wnn, WM_COPYDATA,
wParam(Application.Handle), lParam(@DataStruct));
end;
{수신측}
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TFReceiver = class(TForm)
Memo1: TMemo;
private
{ Private declarations }
procedure WMCopyData(var Message: TWMCopyData); message WM_COPYDATA;
public
{ Public declarations }
end;
var
FReceiver: TFReceiver;
implementation
{$R *.DFM}
type
tData = Record
s: String[250];
end;
procedure TFReceiver.WMCopyData(var Message: TWMCopyData);
var
Data: TData;
begin
CopyMemory(@data,Message.CopyDataStruct^.lpData, SizeOf(TData));
Message.Result := 1;
Memo1.lines.add(Data.s);
end;
end.