【问题标题】:Force screen redraw强制屏幕重绘
【发布时间】: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

标签: vbscript wsh


【解决方案1】:

不确定这是否可行,但您可以尝试一下:

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

上面调用了桌面的“刷新”,它可能会也可能不会更新您的应用程序窗口。

【讨论】:

    猜你喜欢
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-18
    • 2014-03-03
    • 1970-01-01
    相关资源
    最近更新 更多