Доброго времени суток.
Есть скрипт, который часть окон сторонних программ - встраивает в интерфейс при открытии. А часть - встраивает тогда, когда нужное окно появляется - будучи кем-то открытым.
(нажмите для показа/скрытия)
Этот скрипт - работает с блокнотом, калькулятором.
Но вот когда я вместо '2.txt' - прописываю 'Документ1.doc' - то это окно - вроде бы поначалу открывается на GUI, как и должно быть.
Но если свернуть GUI, а затем развернуть - то встроенное окно ворда - делается однотонным и белым (окна блокнота и калькулятора - остаются нормальными).
Не видно ничего - какое в нем содержимое.
Подскажите - как это исправить ?
Что изменить в скрипте, чтобы при развертывании-свертывании GUI - окно ворда не становилось бы однотонным белым, а оставалось бы обычным ?
выглядит так:
Проблемное окно Word на GUI - выглядит так:
Есть скрипт, который часть окон сторонних программ - встраивает в интерфейс при открытии. А часть - встраивает тогда, когда нужное окно появляется - будучи кем-то открытым.
(нажмите для показа/скрытия)
Этот скрипт - работает с блокнотом, калькулятором.
Но вот когда я вместо '2.txt' - прописываю 'Документ1.doc' - то это окно - вроде бы поначалу открывается на GUI, как и должно быть.
Но если свернуть GUI, а затем развернуть - то встроенное окно ворда - делается однотонным и белым (окна блокнота и калькулятора - остаются нормальными).
Не видно ничего - какое в нем содержимое.
Подскажите - как это исправить ?
Что изменить в скрипте, чтобы при развертывании-свертывании GUI - окно ворда не становилось бы однотонным белым, а оставалось бы обычным ?
выглядит так:
Код:
;#include <WinAPISysWin.au3>
#include <WinAPI.au3>
Opt('WinTitleMatchMode', -2)
$hGUI = GUICreate("MultiProg", 1200, 1000, -1, -1, 0x00CF0000) ; $WS_OVERLAPPEDWINDOW
GUISetState()
Run("notepad.exe " & @ScriptDir & "\1.txt")
$hWnd1 = WinWaitActive("[class:Notepad]")
_WinAPI_SetParent($hWnd1, $hGUI)
WinMove($hWnd1, "", 0, 0, 400, 300)
$OldPos1 = WinGetPos($hWnd1)
Run("calc.exe")
$hWnd3 = WinWaitActive('Калькулятор')
_WinAPI_SetParent($hWnd3, $hGUI)
WinMove($hWnd3, "", 400, 0)
$OldPos3 = WinGetPos($hWnd3)
$OldActive = 0
AdlibRegister("Refresh")
Do
sleep(200)
If WinExists('Документ1.doc') Then Refresh_2()
Until GUIGetMsg() = -3
Func Refresh_2()
$hWnd2 = WinActive("Документ1.doc")
_WinAPI_SetParent($hWnd2, $hGUI)
WinMove($hWnd2, "", 0, 300, 700, 500)
$OldPos2 = WinGetPos($hWnd2)
$NewPos2 = WinGetPos($hWnd2)
For $i = 0 To 3
If $NewPos2[$i] <> $OldPos2[$i] Then
_WinAPI_InvalidateRect($hGUI)
$OldPos2 = $NewPos2
Return
EndIf
Next
EndFunc
Func Refresh()
$NewActive = WinGetHandle("")
If $NewActive <> $OldActive Then
_WinAPI_InvalidateRect($hGUI)
$OldActive = $NewActive
Return
EndIf
$NewPos1 = WinGetPos($hWnd1)
For $i = 0 To 3
If $NewPos1[$i] <> $OldPos1[$i] Then
_WinAPI_InvalidateRect($hGUI)
$OldPos1 = $NewPos1
Return
EndIf
Next
$NewPos3 = WinGetPos($hWnd3)
For $i = 0 To 3
If $NewPos3[$i] <> $OldPos3[$i] Then
_WinAPI_InvalidateRect($hGUI)
$OldPos3 = $NewPos3
Return
EndIf
Next
EndFunc
Проблемное окно Word на GUI - выглядит так: