Доброго времени суток всем!
Кто-нибудь сталкивался с такой проблемой?
В Autoit-скрипте не отрабатывают функции, связанные с мышью,
если скрипт выполняется не под ХР.
Скрипт очень простой:
- запускается одно приложение,
- ожидается открытие его главного окна,
- определяются координаты этого окна,
- относительно этих координат вычисляется точка,
где надо кликнуть мышью (на кнопку),
- MouseClick("left").
Последний пункт НЕ отрабатывает, если скрипт выполняется
на следующих ОСях:
- Windows-7 Prof;
- MS Server-2008;
- виртуальный MS Server-2008 (RDP-session).
Хотя хэндл окна и координаты не нулевые.
Все системы лицензионные и обновлены по максимуму.
На XP SP3 всё нормально отрабатывает! Специально сделал
одну ХР-шку на виртуалке - и там работает! И в сеансе
RDP на XP-шке всё прекрасно работает! Причём разрешение
экрана во всех случаях разное, но скрипт без каких-либо
изменений работает! Ниже выкладываю таблицу разрешений
экрана для всех испробованных случаев.
Что пробовал:
- полную форму MouseClick, когда указаны координаты точки
и сколько кликов (по 1 и по 2 клика пробовал);
- перед MouseClick делал MouseMove к заданной точке -мышь
не движется (если ось не ХР);
- менял скорость движения мыши (если меньше 100, то можно
добиться, что и на ХР двигаться не будет);
- ControlClick для той кнопки на главном окне (аналогично:
на ХР работает, на других осях - нет!);
- поскольку сервера все 64-битные пробовал переустанавливать
AutoIt как х64 и как х86, компилировал ехе-шники в формате х64
и х86 (перебрал все варианты на всех этих системах);
- задавал вопрос на англоязычном форуме на сайте разработчиков,
они ответили ерунду:
что эти функции (с мышью которые работают) сильно зависят
от разрешения экрана! Ниже привожу таблицу, в которой видно,
что на ХР-шке работает и при 800х600х32, и при 1024х768х16,
и при 1440х900х32.
Тем не менее скачал хорошую прогу dc.exe (Display Changer) и
пытался изменить разрешение экрана на моих виртуальных
серверах (их у меня два) - не меняет, говорит драйвер графического
устройства failed для указанного режима.
А техподдержка сказала, что для сеанса RDP эти параметры значения
не имеют.
- запускал скрипт на виртуальных серверах через назначенные задания,
чтобы он отработал без сеанса RDP - НЕ отрабатывает!
- перед входом по RDP задавал разные значения разрешений экрана,
не влияют они (т.е. на ХР-шке как работало, так и работает, а
на других - НЕ работает).
Что ещё попробовать не знаю, все мозги уже сломал! Может, какая-то
служба должна быть включена? Или наоборот, отключена?
Вот текст скрипта:
--------------------
----------------------------------------------------
Вот таблица разрешений экрана для разных случаев:
------------------------------------------------------------------------------------------------------------
При анализе таблицы видно, что:
- на ХР-шке работает при разных разрешениях;
- на других осях НЕ работает (тоже при разных разрешениях).
Обращаюсь к корифеям этого форума: подскажите, в какую сторону копать?
Спасибо.
:stars:
Кто-нибудь сталкивался с такой проблемой?
В Autoit-скрипте не отрабатывают функции, связанные с мышью,
если скрипт выполняется не под ХР.
Скрипт очень простой:
- запускается одно приложение,
- ожидается открытие его главного окна,
- определяются координаты этого окна,
- относительно этих координат вычисляется точка,
где надо кликнуть мышью (на кнопку),
- MouseClick("left").
Последний пункт НЕ отрабатывает, если скрипт выполняется
на следующих ОСях:
- Windows-7 Prof;
- MS Server-2008;
- виртуальный MS Server-2008 (RDP-session).
Хотя хэндл окна и координаты не нулевые.
Все системы лицензионные и обновлены по максимуму.
На XP SP3 всё нормально отрабатывает! Специально сделал
одну ХР-шку на виртуалке - и там работает! И в сеансе
RDP на XP-шке всё прекрасно работает! Причём разрешение
экрана во всех случаях разное, но скрипт без каких-либо
изменений работает! Ниже выкладываю таблицу разрешений
экрана для всех испробованных случаев.
Что пробовал:
- полную форму MouseClick, когда указаны координаты точки
и сколько кликов (по 1 и по 2 клика пробовал);
- перед MouseClick делал MouseMove к заданной точке -мышь
не движется (если ось не ХР);
- менял скорость движения мыши (если меньше 100, то можно
добиться, что и на ХР двигаться не будет);
- ControlClick для той кнопки на главном окне (аналогично:
на ХР работает, на других осях - нет!);
- поскольку сервера все 64-битные пробовал переустанавливать
AutoIt как х64 и как х86, компилировал ехе-шники в формате х64
и х86 (перебрал все варианты на всех этих системах);
- задавал вопрос на англоязычном форуме на сайте разработчиков,
они ответили ерунду:
что эти функции (с мышью которые работают) сильно зависят
от разрешения экрана! Ниже привожу таблицу, в которой видно,
что на ХР-шке работает и при 800х600х32, и при 1024х768х16,
и при 1440х900х32.
Тем не менее скачал хорошую прогу dc.exe (Display Changer) и
пытался изменить разрешение экрана на моих виртуальных
серверах (их у меня два) - не меняет, говорит драйвер графического
устройства failed для указанного режима.
А техподдержка сказала, что для сеанса RDP эти параметры значения
не имеют.
- запускал скрипт на виртуальных серверах через назначенные задания,
чтобы он отработал без сеанса RDP - НЕ отрабатывает!
- перед входом по RDP задавал разные значения разрешений экрана,
не влияют они (т.е. на ХР-шке как работало, так и работает, а
на других - НЕ работает).
Что ещё попробовать не знаю, все мозги уже сломал! Может, какая-то
служба должна быть включена? Или наоборот, отключена?
Вот текст скрипта:
--------------------
Код:
Global $size
Global $hWnd
;Opt("GUIOnEventMode", 1)
Opt("WindowTitleMatchMode",3)
Run("C:\AA_v3.exe") ; start Ammyy-application
Sleep (5000)
$hWnd = WinWaitActive("Ammyy Admin v3.0 - Free", "", 10)
$size = WinGetPos($hWnd)
; MsgBox(0, "Active window stats (x,y,width,height):", $size[0] & " " & $size[1] & " " & $size[2] & " " & $size[3], 5)
; MsgBox (0, "hWnd=", $hWnd, 5)
MouseMove ( $size[0]+300, $size[1]+240, 100 ) ; button "connect"
MouseClick ( "left" )
; ControlClick ("Ammyy Admin v3.0 - Free", "", 1507 ) ; 1507 - ID of button "Connect"
Sleep (5000)
----------------------------------------------------
Вот таблица разрешений экрана для разных случаев:
1. Мой комп № 1 (XP SP3) 1440x900x32bit - работают (оба варианта: MouseClick и ControlClick)
2. Мой комп № 1 (XP SP3) (RDP-session):1024x768x16bit - работают оба варианта
3. Мой комп № 2 (Windows-7): 1024x768x16bit - не работают оба варианта
4. 1280x1024x32bit - не работают оба варианта
5. Комп моего друга № 1 (XP SP3): 1280x1024x32bit - работают оба варианта
6. Комп моего друга № 2 (Windows-7): 1024x768x32bit - не работают оба варианта
7. виртуальный Server-2008 № 1 (RDP-session): 1440x900х16 - не работают оба варианта
(но при 1-м запуске неделю назад мышь двигалась и скрипт работал!)
8. виртуальный Server-2008 № 2 (RDP-session): 1440x900x16bit - не работают оба варианта
9. гостевая XP SP3 (на хостовой Win7): 800x600x32bit - работают оба варианта
10. гостевая XP SP3 (RDP-session): 800x600x32bit - работают оба варианта
Уговорил другого своего друга (сисадмин) проверить мой скрипт у него на работе на реальном серваке:
11. реальный Server-2008: 1024x768x32bit - не работают оба варианта
12. реальный Server2008 (RDP-session): 1024x768x32bit - не работают оба варианта
2. Мой комп № 1 (XP SP3) (RDP-session):1024x768x16bit - работают оба варианта
3. Мой комп № 2 (Windows-7): 1024x768x16bit - не работают оба варианта
4. 1280x1024x32bit - не работают оба варианта
5. Комп моего друга № 1 (XP SP3): 1280x1024x32bit - работают оба варианта
6. Комп моего друга № 2 (Windows-7): 1024x768x32bit - не работают оба варианта
7. виртуальный Server-2008 № 1 (RDP-session): 1440x900х16 - не работают оба варианта
(но при 1-м запуске неделю назад мышь двигалась и скрипт работал!)
8. виртуальный Server-2008 № 2 (RDP-session): 1440x900x16bit - не работают оба варианта
9. гостевая XP SP3 (на хостовой Win7): 800x600x32bit - работают оба варианта
10. гостевая XP SP3 (RDP-session): 800x600x32bit - работают оба варианта
Уговорил другого своего друга (сисадмин) проверить мой скрипт у него на работе на реальном серваке:
11. реальный Server-2008: 1024x768x32bit - не работают оба варианта
12. реальный Server2008 (RDP-session): 1024x768x32bit - не работают оба варианта
При анализе таблицы видно, что:
- на ХР-шке работает при разных разрешениях;
- на других осях НЕ работает (тоже при разных разрешениях).
Обращаюсь к корифеям этого форума: подскажите, в какую сторону копать?
Спасибо.
:stars: