2013-02-23 149 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" 

以上調用桌面上的「刷新」,這可能會或可能不會更新您的應用程序窗口爲好。