type
TForm1 = class(TForm)
private
{ Private declarations }
procedure WMMOVE(var Msg: TWMMOVE); message WM_MOVE;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.WMMOVE(var Msg: TWMMOVE);
begin
Caption := Format('%d,%d', [Msg.XPos, Msg.YPos]);
end;
TForm1 = class(TForm)
private
{ Private declarations }
procedure WMMOVE(var Msg: TWMMOVE); message WM_MOVE;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.WMMOVE(var Msg: TWMMOVE);
begin
Caption := Format('%d,%d', [Msg.XPos, Msg.YPos]);
end;
解决方案 »
- 弹出对话框或是窗体
- 请教高手,能将这个代码写成DLL文件吗?我需要用ASP调用这个函数.
- 高兴,110分全给了.
- 谁有用ADO连数据库的例子阿,给100分!
- 各位朋友,来讨论MS的SQL病毒?怎样彻底删除此病毒????
- 请提供一个FAST REPORT中文帮助的下载网址
- Delphi 中如何TQuery进行数据库表的插入操作?
- 应用程序如何不出现在任务栏上?
- 有没人有知道有这样的一个函数?
- delphi制作的报表出问题了,只能打印第一页,后面几页的变成黑屏!!
- 关于adocommand中写restore database first,遇到错误信息'the RAID set for database 'first' is missing member number 1
- 千山兄,请进!!!
unit Unit2;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm2 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
FHandle: THandle;
FX: Integer;
FY: Integer;
public
{ Public declarations }
end;var
Form2: TForm2;implementation{$R *.dfm}const
MY_MESSAGE = WM_USER + 10;procedure TForm2.FormCreate(Sender: TObject);
begin
FHandle := FindWindow('TForm1', 'Form1');
if FHandle = 0 then ShowMessage('没有运行监听程序');
end;procedure TForm2.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
vWMMOVE: TWMMOVE;
begin
if Tag = 0 then Exit;
if FX > 0 then begin
Left := Left + (X - FX);
Top := Top + (Y - FY);
end;
if FHandle = 0 then Exit;
vWMMOVE.Msg := MY_MESSAGE;
vWMMOVE.Unused := Handle;
vWMMOVE.XPos := Left;
vWMMOVE.YPos := Top;
SendMessage(FHandle, MY_MESSAGE, TMessage(vWMMOVE).WParam, TMessage(vWMMOVE).LParam);
end;procedure TForm2.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
FX := X;
FY := Y;
Tag := 1;
end;procedure TForm2.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Tag := 0;
end;end.unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;const
MY_MESSAGE = WM_USER + 10;type
TForm1 = class(TForm)
private
{ Private declarations }
procedure MYMESSAGE(var Msg: TMessage); message MY_MESSAGE;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}{ TForm1 }procedure TForm1.MYMESSAGE(var Msg: TMessage);
var
vWMMOVE: TWMMOVE;
vRect: TRect;
begin
TMessage(vWMMOVE) := Msg;
GetWindowRect(vWMMOVE.Unused, vRect);
Caption := Format('Time:%.6f,U:%d,X:%d,Y:%d', [Now, vWMMOVE.Unused,
vWMMOVE.XPos, vWMMOVE.YPos]);
Width := vRect.Right - vRect.Left;
Height := vRect.Bottom - vRect.Top;
Left := vRect.Left + (vRect.Right - vRect.Left);
Top := vRect.Top;
end;end.