• 关于delphi点击webbrowser中任意一点的问题


    有时候我们需要delphi载入webbrowser1打开网页的时候 需要点击某一个点的位置 可能是坐标 可能是按钮 可能是其他的控件
    应该如何来实现呢? 这里来简单说明一下点击坐标的过程
    点击过程很明显我们移动鼠标来点击或者发送消息来点击
    移动鼠标点击的比较常见 这里详细说明一下发送消息来点击的办法
    发送消息来点击的思路是sendmessage()发送消息来实现的
    导入句柄 点击的就可以了。但是这里的句柄(webbrowser的句柄)其实是不好找的。如果找到了合适的正确的句柄点击起来还是非常容易的
    这里有一个过程可以清楚的说明sendmessage的点击过程
    procedure sendclick(var x,y:integer) ;
    begin
    SendMessage(GetWindow(GetWindow(form1.WebBrowser1.Handle, GW_CHILD), GW_CHILD),WM_LBUTTONDOWN,
    ////MK_LBUTTON, MAKELONG(strtoint(edit2.Text),strtoint(edit3.Text)));
    MK_LBUTTON, MAKELONG(x,y));
    sleep(500);
    SendMessage(GetWindow(GetWindow(form1.WebBrowser1.Handle, GW_CHILD), GW_CHILD),WM_LBUTTONUP,
    ////MK_LBUTTON, MAKELONG(strtoint(edit2.Text),strtoint(edit3.Text)));
    MK_LBUTTON, MAKELONG(x,y)) ;
    PostMessage(GetWindow(GetWindow(form1.WebBrowser1.Handle, GW_CHILD), GW_CHILD),WM_LBUTTONDOWN,
    ////MK_LBUTTON, MAKELONG(strtoint(edit2.Text),strtoint(edit3.Text)));
    MK_LBUTTON, MAKELONG(x,y));
    sleep(500);
    PostMessage(GetWindow(GetWindow(form1.WebBrowser1.Handle, GW_CHILD), GW_CHILD),WM_LBUTTONUP,
    ////MK_LBUTTON, MAKELONG(strtoint(edit2.Text),strtoint(edit3.Text)));
    MK_LBUTTON, MAKELONG(x,y)) ;
    end;
    这里定义了一个过程
    GetWindow(GetWindow(form1.WebBrowser1.Handle, GW_CHILD), GW_CHILD) 这是webbrowser的句柄
    整个过程发送了 sendmessage和postmessage2个包 这里是防止一次没点中 所以再补点一次
    关于点击的坐标是过程中导入的参数 x,y。
    这里的X Y坐标是相对于窗体的坐标 就是相对于webbrowser的坐标 所以必须要用spy++来查找点击的坐标
     

  • 相关阅读:
    javascript 实现 TreeView全选(实现子节点全选,中父节点自动全选)
    关于健康档案的基本架构与数据标准
    SQLite内建语法表
    狼群中的男人(A Man Among Wolves)
    教你瞬间赢得别人信任的 “冷读术”
    SymbianOS精要
    为幼龄儿童设计 iPad 软件介面的四条心得
    OpenGL ES
    如何变得更加优秀
    创业的八大能力
  • 原文地址:https://www.cnblogs.com/jxgxy/p/2664660.html
Copyright © 2020-2023  润新知