Автор Тема: [Автоматизация] Как определить цвет точки в неактивном окне?  (Прочитано 27342 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн NoMad73rus [?]

  • Продвинутый
  • ***
  • Сообщений: 124
  • Репутация: 80
  • Пол: Мужской
    • Награды
Попробуй поставить в цикле с функцией паузу
Код: AutoIt [Выделить]
Sleep(500)

А вообще это не самая лучшая реализация этого действия...
Я сделал так: http://autoit-script.ru/index.php?topic=4462.0
Вроде сейчас работает на всех машинах.
Давайте добьём не добитых, и растопчем униженных! Давайте вдаваться в крайности - в них соль жизни!

Русское сообщество AutoIt


Оффлайн edward_freedom [?]

  • Осваивающий
  • **
  • Сообщений: 200
  • Репутация: 44
  • Пол: Мужской
    • Награды
NoMad73rus
Ты лучше расскажи, как сделал, чтобы и на Xp и 7 _PixelGetColorEx одни цвета показывал :think:
Никнейм edward_freedom зарегистрирован!


Оффлайн kimv2 [?]

  • Новичок
  • *
  • Сообщений: 3
  • Репутация: 0
    • Награды
да пробовал и 1 секунду ставил. не помогает. и разбивку на 2 функции попробовал, всёравно возвращает нули.

Оффлайн NoMad73rus [?]

  • Продвинутый
  • ***
  • Сообщений: 124
  • Репутация: 80
  • Пол: Мужской
    • Награды
А AutoIt Window Info нормально ловит цвет на этой машине? Обычный PixelGetColor что выдаёт?

Русское сообщество AutoIt


Оффлайн _ToBe_ [?]

  • Осваивающий
  • **
  • Сообщений: 142
  • Репутация: 34
    • Награды
Решил поэкспериментировать, была задача брать пиксель в клиентской области неактивного окна, в итоге поменял несколько значение и получилось :)
Может кому пригодится :)

Код: AutoIt [Выделить]
Func _detekt ($iX, $iY)
        $sColor = _WinAPI_GetPixel($hCDC, $iX, $iY)
        Return $sColor
EndFunc

Func _BitmapWin()
    _WinAPI_DeleteDC($hCDC)
    _WinAPI_DeleteObject($hBMP) ; очищаем битовый массив
    $iWidth = _WinAPI_GetClientWidth($hWnd)     ;Тут поменял
    $iHeight = _WinAPI_GetClientHeight($hWnd)    ;Тут поменял
    $hDDC = _WinAPI_GetDC($hWnd)
    $hCDC = _WinAPI_CreateCompatibleDC($hDDC)
    $hBMP = _WinAPI_CreateCompatibleBitmap($hDDC, $iWidth, $iHeight)
    _WinAPI_SelectObject($hCDC, $hBMP)
    DllCall("User32.dll", "int", "PrintWindow", "hwnd", $hWnd, "hwnd", $hCDC, "int", 1)  ; и тут "0" на "1" изменил :)
    $sColor = _WinAPI_GetPixel($hCDC, $iX, $iY)
    _WinAPI_ReleaseDC($hWnd, $hDDC)
EndFunc


Оффлайн Vick [?]

  • Новичок
  • *
  • Сообщений: 1
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Всем доброго времени суток. Перепробовал разные методы, но в 3D приложениях выдает чёрные скриншоты, есть ли способ обойти это ограничение?
Или всё же способ получить цвет пикселя в неактивном приложении, рассматриваются варианты на Net языках...

Русское сообщество AutoIt

Re: [Автоматизация] Как определить цвет точки в неактивном окне?
« Ответ #35 Отправлен: Декабрь 07, 2018, 20:45:47 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
4 Ответов
13662 Просмотров
Последний ответ Декабрь 15, 2009, 19:03:09
от Sspl
0 Ответов
3031 Просмотров
Последний ответ Июнь 19, 2010, 11:38:19
от Kaster
2 Ответов
2381 Просмотров
Последний ответ Июнь 11, 2011, 15:19:36
от edward_freedom
0 Ответов
2930 Просмотров
Последний ответ Август 26, 2011, 10:24:39
от Генералиссимус
2 Ответов
2805 Просмотров
Последний ответ Декабрь 18, 2011, 05:41:13
от running-frag
0 Ответов
1535 Просмотров
Последний ответ Январь 13, 2013, 13:36:48
от Kaster
1 Ответов
1608 Просмотров
Последний ответ Март 06, 2013, 19:28:41
от InnI
1 Ответов
1418 Просмотров
Последний ответ Март 24, 2015, 22:38:03
от SkinWarS
6 Ответов
887 Просмотров
Последний ответ Июль 30, 2017, 11:29:32
от eralex
3 Ответов
330 Просмотров
Последний ответ Апрель 24, 2018, 20:00:26
от Tempo