Foxtable(狐表)用户栏目专家坐堂 → 求助,能不能获取窗口的位置?并跟随?


  共有3958人关注过本帖树形打印复制链接

主题:求助,能不能获取窗口的位置?并跟随?

帅哥哟,离线,有人找我吗?
zto001
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1489 积分:10602 威望:0 精华:0 注册:2018/10/16 11:42:00
求助,能不能获取窗口的位置?并跟随?  发帖心情 Post By:2019/8/4 9:24:00 [显示全部帖子]

求助,能不能获取窗口的位置?并跟随?

 回到顶部
帅哥哟,离线,有人找我吗?
zto001
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1489 积分:10602 威望:0 精华:0 注册:2018/10/16 11:42:00
  发帖心情 Post By:2019/8/5 18:44:00 [显示全部帖子]

是第三方的窗口,比如qq、微信。获取他的位置,然后我在指定窗口的位置达到跟随的效果

 回到顶部
帅哥哟,离线,有人找我吗?
zto001
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1489 积分:10602 威望:0 精华:0 注册:2018/10/16 11:42:00
  发帖心情 Post By:2019/8/6 12:37:00 [显示全部帖子]

窗口找到了
然后怎么获取位置?
Dim hwnd As IntPtr = FindWindow(Nothing, "钉钉")
If hwnd <> IntPtr.Zero Then
    msgbox("找到窗口")

End If

 回到顶部
帅哥哟,离线,有人找我吗?
zto001
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1489 积分:10602 威望:0 精华:0 注册:2018/10/16 11:42:00
  发帖心情 Post By:2019/8/6 21:17:00 [显示全部帖子]

API函数getWindowRect()的定义

Private Declare Auto Function GetWindowRect Lib "user32" (ByVal hwnd As IntPtr, ByVal lpRect As RECT) As Long

位置信息结构体

    Public Structure RECT
        Public left As Int32
        Public top As Int32
        Public right As Int32
        Public bottom As Int32
    End Structure

调用

GetWindowRect(Me.Handle, p1)

问题描述:

使用GetWindowRect函数来获取窗体的位置信息时,RECT中的left ,top ,right ,bottom 都是0




产生问题的原因:
API传递结构一般不用ByVal

解决方案:
ByVal lpRect As RECT改成ByRef lpRect As RECT



没看懂

 回到顶部
帅哥哟,离线,有人找我吗?
zto001
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1489 积分:10602 威望:0 精华:0 注册:2018/10/16 11:42:00
  发帖心情 Post By:2019/8/6 21:18:00 [显示全部帖子]

全局代码
    Public Structure RECT
        Public left As Int32
        Public top As Int32
        Public right As Int32
        Public bottom As Int32
    End Structure


其他就都没看懂了


 回到顶部
帅哥哟,离线,有人找我吗?
zto001
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1489 积分:10602 威望:0 精华:0 注册:2018/10/16 11:42:00
  发帖心情 Post By:2019/8/7 11:29:00 [显示全部帖子]

Private Declare Auto Function GetWindowRect Lib "user32" (ByVal hwnd As IntPtr, ByVal lpRect As RECT) As Long
  Public Structure RECT
        Public left As Int32
        Public top As Int32
        Public right As Int32
        Public bottom As Int32
    End Structure


我把上面放在全局代码里面,执行
GetWindowRect(Me.Handle, p1)提示错误
未声明GetWindowRect

 回到顶部
帅哥哟,离线,有人找我吗?
zto001
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1489 积分:10602 威望:0 精华:0 注册:2018/10/16 11:42:00
  发帖心情 Post By:2019/8/19 8:54:00 [显示全部帖子]

https://www.cnblogs.com/lefour/p/5464111.html

是这个吗?

 回到顶部
帅哥哟,离线,有人找我吗?
zto001
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1489 积分:10602 威望:0 精华:0 注册:2018/10/16 11:42:00
  发帖心情 Post By:2019/8/19 8:56:00 [显示全部帖子]

窗口跟随吸附http://www.codesc.net/tech/3405.shtml

 回到顶部
帅哥哟,离线,有人找我吗?
zto001
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1489 积分:10602 威望:0 精华:0 注册:2018/10/16 11:42:00
  发帖心情 Post By:2019/8/19 9:05:00 [显示全部帖子]

这个可以获取窗口的坐标吗?
https://zhidao.baidu.com/question/919821440279377859.html 

或者是这个?
https://zhidao.baidu.com/question/573177526.html


 回到顶部
帅哥哟,离线,有人找我吗?
zto001
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1489 积分:10602 威望:0 精华:0 注册:2018/10/16 11:42:00
  发帖心情 Post By:2019/8/19 11:40:00 [显示全部帖子]

'在窗体上画一个Timer控件,设置其Interval属性为100
'把代码复制到Form1的代码窗口中

'获得活动窗口句柄的API
Private Declare Function GetForegroundWindow Lib "user32" () As Long
'获得窗口区域结构的API
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, wndRect As RECT) As Long

Private Type RECT '自定义区域结构类型
x As Long
y As Long
Right As Long
Bottom As Long
End Type

Dim ActiveWindowRECT As RECT '用於保存活动窗口区域的结构
Dim ActiveWindowHwnd As Long '活动窗口的句柄

Private Sub Timer1_Timer()
ActiveWindowHwnd = GetForegroundWindow '获得活动窗口的句柄
GetWindowRect ActiveWindowHwnd, ActiveWindowRECT '获得活动窗口的区域并保存在 ActiveWindowRECT 变量中
'在窗口上输出信息
Me.Cls
Print "活动窗口的坐标是(" & ActiveWindowRECT.x & "," & ActiveWindowRECT.y & ")"
End Sub 


这个不懂,我执行提示关键字作为标识无效

 回到顶部
总数 11 1 2 下一页