Что нового

Встраивание окна Excel - в окно autoit-интерфейса

Ragn

Чайник
Сообщения
31
Репутация
0
Версия AutoIt: 3.3.14.2

Описание:
Добрый день.
Помогите решить вопрос.

Как при помощи скрипта autoit - встроить в окно (окно создано GUI) - программу Excel ?
Вопрос в том, что окно Excel программы - должно вписываться внутрь окна GUI.
Окно эксель открыто и его Title, включает слово "Книга1 -"


Нашел на форуме - вот такой код:
Код:
;#include <WinAPISysWin.au3>
#include <WinAPI.au3>

$hGUI = GUICreate("MultiProg", 800, 600, -1, -1, 0x00CF0000) ; $WS_OVERLAPPEDWINDOW
GUISetState()


$hWnd3 = WinWaitActive("Книга1 -")
_WinAPI_SetParent($hWnd3, $hGUI)
WinMove($hWnd3, "", 400, 0)
$OldPos3 = WinGetPos($hWnd3)

$OldActive = 0
AdlibRegister("Refresh")

$Flag=True

Do
    sleep(200)
    If WinExists("2.txt — Блокнот") And $Flag Then Refresh_2()
Until GUIGetMsg() = -3

Func Refresh_2()
$Flag=False
$hWnd2 = WinActive("2.txt — Блокнот")
_WinAPI_SetParent($hWnd2, $hGUI)
WinMove($hWnd2, "", 0, 300, 400, 300)
$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
Примечания:

Но он почему-то не хочет работать, при выделении окна Excel - самопроизвольно закрывается.
 
Верх