Что нового

[Ошибки] Не работают WinClose и WinKill

Manonegro

Новичок
Сообщения
24
Репутация
0
Здравствуйте. Проблемка такая: есть такая замечательная программа TeamViewer. И всё бы ничего, но после сеанса соединения вылазит онтоп-окно "Спонсируемый сеанс". При попытке закрыть его через WinClose или WinKill ничего не происходит, т.е. функция говорит, что всё ОК, а окно не исчезает.

Код:
$err = WinClose('Спонсируемый сеанс')
MsgBox(4096, "Error", $err)

Выдаёт 1, т.е. ошибки нет. Версия программы 3.3.6.1.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
У окна есть кнопки Ок и Отмена?
 
Автор
M

Manonegro

Новичок
Сообщения
24
Репутация
0
Да. Есть 2 кнопки: ОК и "Купить лицензию". Также при нажатии правой кнопкой мыши на шапке окна выпадает меню из двух пунктов: "переместить" и "закрыть (Alt+F4)".
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Если это ошибка, нужен код воспроизведения, постить баг репорт без возможности воспроизвести баг нету смысла.
 
Автор
M

Manonegro

Новичок
Сообщения
24
Репутация
0
Это понятно, что можно сэмулировать Alt+F4 или нажать на Ok, но почему нужно всё делать через пятую точку? А как воспроизвести пока не знаю, но подумаю.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Manonegro
AuInfoLog по этому окну, не могли бы вы выложить?!
 
Автор
M

Manonegro

Новичок
Сообщения
24
Репутация
0
>>>> Window <<<<
Title: Спонсируемый сеанс
Class: #32770
Position: 715, 435
Size: 491, 171
Style: 0x94C800CE
ExStyle: 0x00010109
Handle: 0x0000000000470556

>>>> Control <<<<
Class:
Instance:
ClassnameNN:
Name:
Advanced (Class):
ID:
Text:
Position:
Size:
ControlClick Coords:
Style:
ExStyle:
Handle:

>>>> Mouse <<<<
Position: 940, 445
Cursor ID: 0
Color: 0xEDF5F5

>>>> StatusBar <<<<

>>>> ToolsBar <<<<

>>>> Visible Text <<<<
OK
Купить лицензию
Завершён бесплатный сеанс, спонсируемый www.teamviewer.com

Помните, что бесплатные сеансы допускаются
ТОЛЬКО ДЛЯ НЕКОММЕРЧЕСКОГО ИСПОЛЬЗОВАНИЯ.

Благодарим вас за честность!


>>>> Hidden Text <<<<
4
3
Больше не показывать данный диалог
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Manonegro
Manonegro сказал(а):
Спонсируемый сеанс
Попробуйте так:
Код:
Opt("WinTitleMatchMode",4)
While 1
    If WinActive("[CLASS:#32770]", "Купить лицензию") Then
        MsgBox(262176,"Спонсируемый сеанс","Закрыть окно!")
        WinClose("[CLASS:#32770]", "Купить лицензию")
        ExitLoop
    EndIf
WEnd
Exit
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Manonegro сказал(а):
...но почему нужно всё делать через пятую точку?

Manonegro сказал(а):
Есть 2 кнопки: ОК и "Купить лицензию".

И где здесь баг или ошибка? Просто разработчики хотят, чтобы пользователь дал им $ чуть-чуть. И намеренно "отключили" WM_CLOSE в обработчике. Попробуй закрыть с помощью WinClose() или WinKill() следующее окно.

:wall_brake:

Код:
#Include <WindowsConstants.au3>

GUICreate('MyGUI', 400, 400)
GUIRegisterMsg($WM_CLOSE, 'WM_CLOSE')
GUISetState()

Do
Until  GUIGetMsg() = -3

Func WM_CLOSE($hWnd, $iMsg, $wParam, $lParam)
	Return 0
EndFunc   ;==>WM_CLOSE




Добавлено:
Сообщение автоматически объединено:

Попробуй так:

Код:
#Include <WindowsConstants.au3>
#Include <WinAPI.au3>

Global Const $SC_CLOSE = 0xF060

_SendMessage(WinGetHandle('MyGUI'), $WM_SYSCOMMAND, $SC_CLOSE, -1)
 
Автор
M

Manonegro

Новичок
Сообщения
24
Репутация
0
намеренно "отключили" WM_CLOSE в обработчике

Существует ли способ обратно "включить"?

Код:
#Include <WindowsConstants.au3>
#Include <WinAPI.au3>

Global Const $SC_CLOSE = 0xF060
_SendMessage(WinGetHandle('Спонсируемый сеанс'), $WM_SYSCOMMAND, $SC_CLOSE, -1)

Так не получилось.

Получилось так:

Код:
$Title = 'Спонсируемый сеанс'
$Control = '[Instance:1; ClassNN:Button1]'
ControlFocus($Title, "", $Control)
ControlClick($Title, "", $Control)
 
Верх