2013-02-23 154 views
0

我们刚刚获得了一台新的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))修复了这个问题。我仍然想知道是否有更好的方法。

+0

我想要走的路是: 1)获取窗口的窗口句柄(你应该能够通过从windows API获取刚刚创建的进程,然后获得主要句柄窗口) 2)发送WM_PAINT消息到窗口。 我可以问你是否使用英文版的windows? – Emiswelt 2013-02-23 09:53:09

+0

请详细说明如何操作。我正在运行英文版的windows – foosion 2013-02-23 10:01:22

回答

0

不知道这是否会工作,但你可以试试看:

CreateObject("Shell.Application").Namespace(0).Self.InvokeVerb "R&efresh" 

以上调用桌面上的“刷新”,这可能会或可能不会更新您的应用程序窗口为好。