zoukankan      html  css  js  c++  java
  • delphi向另一程序窗口某处发送鼠标事件所用的工具

    unit Unit2;

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ExtCtrls;

    type
      TForm2 = class(TForm)
        Timer1: TTimer;
        Label1: TLabel;
        Label2: TLabel;
        Label3: TLabel;
        Label4: TLabel;
        Label5: TLabel;
        Label6: TLabel;
        Label7: TLabel;
        Label8: TLabel;
        Label9: TLabel;
        Label10: TLabel;
        Label11: TLabel;
        Label12: TLabel;
        procedure Timer1Timer(Sender: TObject);

      private
        { Private declarations }
      public
        { Public declarations }
        selectr:trect;          //注意这里定义为保存选定窗体的左上角
      end;

    var
      Form2: TForm2;

    implementation

    {$R *.dfm}


    procedure TForm2.Timer1Timer(Sender: TObject);

    var
      p: TPoint;
      h: HWND;
      r:trect;
    begin
      GetCursorPos(p);
      label6.Caption:=format('x: %d, y: %d',[p.x,p.y]);  //鼠标在屏幕绝对位置
      h := WindowFromPoint(p);
      GetWindowRect(h,r);//得到窗口的左上角坐标

       if GetAsyncKeyState(VK_LButton)<>0 then  //按下鼠标左键,记下所选的窗体左上角
       begin
        selectr:=r;
        label11.Caption:=format('x: %d, y: %d',[r.left,r.top]);
       end;

      label4.Caption:=format('x: %d, y: %d',[r.left,r.top]); //当前鼠标位置窗体的左上角
      label8.Caption:=format('x: %d, y: %d',[p.x-selectr.left,p.y-selectr.top]);
      //label8内为发送鼠标事件所用数据
      Windows.ScreenToClient(h, p);
      label1.Caption:=format('x: %d, y: %d',[p.X,p.y]);//鼠标在窗口里的相对位置坐标

    end;

    end.

    http://cy03wqh.blog.163.com/blog/static/3678030220108592514544/

  • 相关阅读:
    ActiveForm
    phpstudy配置虚拟主机
    PHP 二分查找
    mysql group by 用法解析(详细)
    Linux(CentOS)下的apache服务器配置与管理
    ubuntu server sudo出现sudo:must be setuid root 完美解决办法
    VB连接MYSQL数据的方法
    mysql 远程登录及常用命令
    在eclipse上搭建Roku开发环境
    linux ps查进程 kill关闭进程
  • 原文地址:https://www.cnblogs.com/sunsoft/p/1967563.html
Copyright © 2011-2022 走看看