Что нового

Как разместить окно GUI - на форме экселя

Grell

Новичок
Сообщения
127
Репутация
0
Здравствуйте.
Посоветуйте, пожалуйста - как разместить окно GUI - на форме экселя ?
 

InnI

AutoIT Гуру
Сообщения
4,950
Репутация
1,444
Что такое "форма экселя"?

Здесь посмотрите
 
Автор
G

Grell

Новичок
Сообщения
127
Репутация
0
Я наверное неправильно выразился.
Нужно просто как-то разместить GUI - поверх экселя с определенным названием title окна.
Чтобы если эксель закрывался - закрывалась бы и GUI, если окно экселя скрывалось - скрывалась бы и форма.
Если бы это окно экселя - закрывалось другим окном - закрывалась бы и форма.
 

InnI

AutoIT Гуру
Сообщения
4,950
Репутация
1,444
Я вам указал ссылку на тему. Замените окно блокнота своим GUI.
 
Автор
G

Grell

Новичок
Сообщения
127
Репутация
0
Ну вот такой скрипт я использую.
Но он - не закрывает процесс этого скрипта (он продолжает висеть в трее) - после закрытия окна класса "Class:XLMAIN"

Код:
#include <WinAPI.au3>
#include <GUIConstants.au3>

GUICreate("My GUI")  ; will create a dialog box that when displayed is centered
GUISetState (@SW_SHOW)       ; will display an empty dialog box
; Run the GUI until the dialog is closed


$hExcel = WinGetHandle("[Class:XLMAIN]")
If Not $hExcel Then Exit MsgBox(0x40000, "Error", "Не найдено окно Excel")

;$sFile = @ScriptDir & "\Документ.txt"
;Run("notepad.exe " & $sFile)
$hNotepad = WinWaitActive("My GUI")
If Not $hNotepad Then Exit MsgBox(0x40000, "Error", "Не найдено окно блокнота")

; Вариант 1
; Окно блокнота просто поверх окна Excel
; При закрытии Excel блокнот не закрывается
_WinAPI_SetWindowLong($hNotepad, $GWL_HWNDPARENT, $hExcel)
WinMove($hNotepad, "", 100, 100) ; относительно экрана

; Вариант 2
; Окно блокнота встраивается в окно Excel
; При закрытии Excel блокнот закрывается без запроса на сохранение изменений!
_WinAPI_SetParent($hNotepad, $hExcel)
;~ WinMove($hNotepad, "", 100, 100) ; относительно окна Excel

While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then ExitLoop

Wend

Как поменять скрипт, чтобы при закрытии окна с данным классом - и скрипт автоита тоже бы закрывался ?
 

InnI

AutoIT Гуру
Сообщения
4,950
Репутация
1,444
Код:
#include <WinAPI.au3>
#include <GUIConstants.au3>

$hExcel = WinGetHandle("[Class:XLMAIN]")
If Not $hExcel Then Exit MsgBox(0x40000, "Error", "Не найдено окно Excel")

$hAutoit = WinGetHandle(AutoItWinGetTitle())
$hGUI = GUICreate("My GUI")
GUISetState(@SW_SHOW)

_WinAPI_SetParent($hAutoit, $hExcel)
_WinAPI_SetWindowLong($hGUI, $GWL_HWNDPARENT, $hExcel)
;~ WinMove($hGUI, "", 100, 100) ; относительно экрана

Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
 
Верх