【发布时间】:2013-02-23 09:32:10
【问题描述】:
我们刚买了一台新的 win 7 64 计算机,一个非常旧的程序在启动时无法正确显示 - 在我更改其窗口大小之前,它不会完全绘制自己。我想编写一个启动旧程序的小脚本程序,然后更改其大小(例如,最小化然后恢复或最大化然后恢复其窗口)或以其他方式强制程序重绘自身。
这样用户可以点击程序图标,它会闪烁片刻并正常显示。
我试过了:
Dim objShell
Set objShell = WScript.CreateObject( "WScript.Shell" )
objShell.Run("""c:\Program Files (x86)\VideoLan\VLC\vlc.exe""")
objShell.SendKeys "% x"
objShell.SendKeys "% r"
Set objShell = Nothing
基于How can I maximize, restore, or minimize a window with a vb script? 这可以启动 vlc(测试程序,而不是问题程序),但没有改变它的大小。
编辑:运行后添加轻微延迟 (wscript.sleep(200)) 解决了问题。我还是想知道有没有更好的办法。
【问题讨论】:
-
我认为要走的路是:1)获取窗口的窗口句柄(你应该可以通过从windows API获取刚刚创建的进程然后获取句柄来做到这一点主窗口) 2) 向窗口发送 WM_PAINT 消息。请问你用的是英文版的windows吗?
-
请详细说明如何执行此操作。我正在运行英文版的 windows