【发布时间】:2020-01-26 16:24:30
【问题描述】:
我正在尝试调整可以从 here 下载的程序的窗口大小(或者更好地说,两倍大小),这是经典的 Tamagotchi 手持设备的模拟器数字游戏。
问题是我无法这样做。我可以检索窗口句柄,如果需要,我可以通过其类名来识别窗口,但我尝试使用 MoveWindow 和 SetWindowPos 函数都没有结果。我还尝试使用外部程序,如 AutoSizer 和一些 AutoHotkey 脚本,也没有结果。
这是窗口,类名:ThunderRT6FormDC:
看到上面的图片,GetWindowRect 函数返回给我下一个位置和大小似乎很奇怪:
{X=960, Y=540, 宽度=960, 高度=540}
我不确定这种“特殊”窗口缺少什么才能调整它的大小...
如何在 C# 或 VB.NET 中完成这项任务?
【问题讨论】:
-
程序也可以忽略任何改变位置的请求。我认为您尝试了其他同样无效的方法这一事实表明,没有任何效果。
-
“没有明显的原因” - 你知道的。开发人员可能已经决定没有理由让任何人都需要将主窗口的大小“加倍”,所以他们没有实现代码来做到这一点。
-
好吧,在那种情况下,我会假设这是一种限制,可以通过某种方式确定它是否是这个窗口的真正问题......也许你有任何关于(这并不意味着对可执行文件进行逆向工程)的建议?。
-
你见过这个吗:stackoverflow.com/a/1044807/495455 如果设置了 SWP_SHOWWINDOW 或 SWP_HIDEWINDOW 标志,则不能使用
SetWindowPos()来移动或调整窗口大小 -
不能改变大小的原因是程序使用UpdateLayeredWindow函数来绘制窗口,以使透明度起作用。基本上没有“窗口”可以调整大小。您只需告诉系统,获取该尺寸的图像并将其绘制在该位置。系统完成其余的工作。需要拦截UpdateLayeredWindow函数,改变图片和大小。
标签: c# .net vb.net resize window