我要解决的实际问题是,我想自动找出窗口周围的边距大小。如果您能找到更好的方法,请务必回答该问题。
为此,我决定对测试窗口进行截图并测量边距。这很简单,因为我希望没有任何边距会变成鲜艳的粉红色,但是我承认这是一个hack。我使用GetWindowRect(py)获取边界框,并使用PIL截取屏幕截图并裁剪到边界框。问题在于,尽管作物运行正常,但边界框不准确。Windows
7“狙击工具”获得正确的尺寸。我该怎么做?
我的第一个想法在下面列出,但是,如您所述,如果您确定GetWindowRect
返回的值不正确,请参阅下面的“ 解决方案” 。
“GetSystemMetrics(SM_CXBORDER)
和GetSystemMetrics(SM_CYBORDER)
怎么了?
您正在使用的方法似乎是一种非常round回的方法,如果可以调用GetWindowRect()
,我可以肯定也可以调用GetSystemMetrics()
。
另一种可能性是用于GetWindowRect
获取窗口的整个边界矩形并GetClientRect
获得客户(非边界)区域的边界矩形。
这 应该
给你喜欢的东西(100,200),(1000,900)
,并(112,227),(988,888)
分别就可以制定出顶部边框的227-200
,作为底部900-888
,左为112-100
,右为900-888
(27,12,12,12)。
解析度:
一些调查发现了这一点。这是2006年的一个话题,指出您可能无法从获得正确的值GetWindowsRect
。指向我指出的主题是:
未与WINVER = 6链接的Vista下的应用程序将在此处接收到一组误导性的值,这些值未考虑Vista
Aero应用于窗口的“玻璃”像素的额外填充。即使在Aero
Basic(无玻璃)中,为了保持尺寸一致性,这种情况似乎也会发生。解决方法(如果不想设置WINVER =
6)似乎是动态绑定到dwmapi.dll并使用GetProcAddress()获得DwmGetWindowAttribute()函数,并使用DWMWA_EXTENDED_FRAME_BOUNDS参数调用它以请求真正的窗口框架尺寸。
因此,基本上,使用类似的东西(您可能必须使用ctypes从Python进行此操作):
RECT r;
HRESULT stat = DwmGetWindowAttribute (
hwnd,
DWMWA_EXTENDED_FRAME_BOUNDS,
&r,
sizeof(r));
那应该给你正确的边界矩形。
操作系统-Windows 7 Docker版本:Docker版本18.03.0-CE,版本0520E24302 springboot版本:1.5.3.发布 我从https://github.com/techprimers/docker-mysql--boot-example中获取了代码库(这是macOS中的工作示例代码) 我的应用程序.属性如下所示 Dockerfile如下所示 > 使用Docke
我在C:\glassfish3目录中安装了GlassFish服务器。 当我在C:\glassfish3\bin目录中键入“dir”时,文件就会被列出。 但是当我输入asadmin时,我得到“系统找不到指定的路径”。 可能出了什么问题? 如何启动GlassFish服务器? --编辑-- 此外,在安装后,我得到: 创建域 执行命令:C:\glassfish3\glassfish\bin\asadmin
尝试运行sh start-master.sh thru git bash:,尽管它打印出master--ip sam-toshiba--port 7077--webui-port 8080-所以我不知道这意味着什么。但是当我尝试-我得到错误:WARN abstractLifecycle:FAILED selectchannelconnector@0.0.0.0:4040:java.net.bind
我对docker是个新手,开始学习它,但我有点困惑。 我需要在windows环境下运行应用程序。 我有Windows7-Native Docker只适用于Windows10,所以我需要下载Windows7的Docker工具箱。 谢谢
本篇教程将详细介绍使用微PE安装微软原版Windows7系统的具体方法流程、注意事项、异常问题解决等。 其实原生安装Windows7的方法和安装Windows8.1或10的方法步骤完全一样,但由于Win7这个系统比较老,在一些新机器上安装会出问题,这里单独说一注意事项。 原生安装Windows7的特别提示 1.如果需要原生安装Windows7,必须进入Win8PE。 2.原版的Windows7比较