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/

  • 相关阅读:
    运维自动化-Ansible
    YARN 的深入简出
    HDFS 总结
    IDEA 创建HDFS项目 JAVA api
    解决 HDFS 开发 java.lang.IllegalArgumentException: java.net.UnknownHostException: hadoop000
    hadoop深入简出(二)
    大数据hadoop的伪分布式搭建
    anaconda的安装tensorflow
    switch只跟在这些之后
    jsp页面之初体验
  • 原文地址:https://www.cnblogs.com/sunsoft/p/1967563.html
Copyright © 2011-2022 走看看