Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Использование User32.dll вместо MouseClick

Ответить
Настройки темы
[решено] Использование User32.dll вместо MouseClick

Пользователь


Сообщения: 143
Благодарности: 24

Профиль | Отправить PM | Цитировать


Интересует такая штучка: к примеру имею вот такой код:
Код: Выделить весь код
#include <IE.au3>
$oIE = _IECreate ("www.autoitscript.com")
;1способ
;_IEImgClick ($oIE, "Download AutoIt", "alt")
;2-й способ
$oImgs = _IEImgGetCollection ($oIE)
For $oImg In $oImgs
   if  $oImg.alt == "Download AutoIt" Then
		$iScreenX = _IEPropertyGet($oImg, "screenx")
		$iScreenY = _IEPropertyGet($oImg, "screeny")
		MouseClick('LEFT', $iScreenX + $oImg.width,$iScreenY + $oImg.height)
   EndIf
Next
2-мя способами нажимаем на картинку, а возможно ли выполнить второй способ, без использования 1-го способа, с применением USER32.dll не используя мышь? (Откуда такой вопрос возник, есть такая программа, AUTOPILOT, там клики происходят без использования мыши, минус единственный приложение куда должно происходить нажатие должно быть на экране не скрыто.)
Наткнулся как делают: на примере кнопки START
Код: Выделить весь код
const Int32 WM_LBUTTONDOWN = 0x0201;
[DllImport("User32.dll")]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("User32.dll")]
private static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
[DllImport("user32.dll")]
private static extern bool SendMessage(IntPtr hWnd, Int32 msg, Int32 wParam, Int32 lParam);

IntPtr hTaskBar = FindWindow("Shell_TrayWnd", null); // ищем таскбар
if(hTaskBar != IntPtr.Zero)
{
    // находим кнопку Start
    IntPtr hStartBtn = FindWindowEx(hTaskBar,IntPtr.Zero,"Button", null);
    // кликаем ее
    if(hStartBtn != IntPtr.Zero) SendMessage(hStartBtn, WM_LBUTTONDOWN, 0, 0);
}
Потом по поиску "WM_LBUTTONDOWN" наткнулся на сообщение от Creat0R тут вот: ссылка но как это все под свою задачу оформить......
Одним словом, что спрашивается как клацнуть по картинке, как во втором способе но не используя мышку?

Спасибо.

Отправлено: 20:12, 28-03-2010

 

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата HORRIBLE:
почему то не туда кликает »
Я если честно не пойму, почему нужно использовать именно «screenx» а не «browserx»?

Цитата HORRIBLE:
Мышь передвигается куда надо (просто чтоб посмотреть, где точка находится), а ControlClick кликает не туда »
Замени
Код: Выделить весь код
WinGetHandle("[CLASS:IEFrame]")
на
Код: Выделить весь код
ControlGetHandle("[CLASS:IEFrame]", "", "Internet Explorer_Server1")
только не нужно потом говорить что мышка не туда кликает - у неё и элемента окна разные координаты, и разные методы распознавания (второе у мышки можно настроить).

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 09:21, 30-03-2010 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 143
Благодарности: 24

Профиль | Отправить PM | Цитировать


Цитата Creat0R:
только не нужно потом говорить что мышка не туда кликает - у неё и элемента окна разные координаты, и разные методы распознавания (второе у мышки можно настроить). »
Это я понял, настроил наводится куда нужно и кликает куда нужно. Спасибо.

Цитата Creat0R:
Я если честно не пойму, почему нужно использовать именно «screenx» а не «browserx»? »
Потому что на одном сайте, при использовании этой команды _IEPropertyGet($oImg, "browserx") возвращается 0. А остальные координаты: «screenx» «screeny» «browsery» ширина, высота возвращаются как нужно. Вот поэтому и пошли такие "изголения".

Отправлено: 12:02, 30-03-2010 | #12



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Использование User32.dll вместо MouseClick

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Ошибка - [решено] Ошибка: системная библиотека user32.dll перемещена в памяти... ruddystepa Microsoft Windows 2000/XP 127 05-08-2017 21:58
Разное - Использование AppLocker с dll файлами vasili111 Microsoft Windows 7 3 13-09-2009 11:40
Разное - Использование команд из user.exe(dll) n9271217 Microsoft Windows 2000/XP 0 13-01-2009 14:58
Загрузка - после восстановления User32.dll появляется черный экран ymuhin Microsoft Windows 2000/XP 14 14-12-2008 19:56
Загрузка - user32.dll - Точка входа в процедуру Close Clip... kolchoz Microsoft Windows 2000/XP 7 10-08-2007 19:24




 
Переход