Проверка изменения области экрана, а затем отправка сообщения в групповой разговор Skype

Я ищу помощь в создании кода, который будет смотреть на область моего экрана, а затем через 60 секунд проверять, не изменился ли он.

После того, как он изменился, я пытаюсь отправить сообщение по скайпу группе людей с сообщением, однако проблема, с которой я столкнулся, заключается в том, что я не могу легко изменить чат с помощью ControlCommand, MouseMove, MouseClick, ControlSend... и т. д.

Я даже пробовал MouseClickPlus щелкнуть при сворачивании, но это совсем не сработало.

Рассматриваемые координаты ящика, на который я пытаюсь посмотреть, следующие: 86, 109, 280, 109

Если кто-нибудь знает способы сделать это, я был бы очень признателен за помощь.


person SMNALLY    schedule 09.11.2013    source источник


Ответы (1)


Похоже, вам нужно использовать Skype UDF и PixelChecksum или, может быть, даже ImageSearch с ImageCapture

Я бы сказал, что лучший способ проверить, изменяется ли указанная область, — это использовать PixelChecksum, который можно использовать, как показано ниже.

PixelChecksum Пример кода 1

Local $GetAreaChecksumOne = PixelChecksum(86, 109, 280, 109)
Sleep(60000)
Local $GetAreaChecksumTwo = PixelChecksum(86, 109, 280, 109)
While $GetAreaChecksumOne <> $GetAreaChecksumTwo
    $GetAreaChecksumTwo = PixelChecksum(86, 109, 280, 109)
    Sleep(1000)
    ConsoleWrite("Match not found")
WEnd

Или более нормальный способ сделать это:

PixelChecksum Пример кода 2

Local $GetAreaChecksumOne = PixelChecksum(86, 109, 280, 109)
While $GetAreaChecksumOne = PixelChecksum(86, 109, 280, 109)
    Sleep(100)
WEnd

Ссылка для ссылки: PixelChecksum

Чтобы отправить сообщение по скайпу, вам понадобится Skype UDF если вы хотите отправлять сообщения в любимый чат в Skype.

Skype Пример кода

#include <Skype.au3>
Local $sTopic = "Bookmarked (favourited) chat name here"
Local $aBookMarkedChat = _Skype_ChatGetBookmarked(), $oChattmp = 0
For $i = 0 To UBound($aBookMarkedChat) -1
    $oChattmp = $aBookMarkedChat[$i]
    If _Skype_ChatGetTopic($oChattmp) = $sTopic Then
        _Skype_ChatSendMessage($oChattmp, "Message here")
    EndIf
Next

Если вы хотите пойти по маршруту захвата изображений и поиска изображений, используйте что-то похожее на приведенное ниже, однако вам снова понадобится ImageSearch UDF

Пример кода ScreenCapture и ImageSearch

#include <ImageSearch.au3>
#include <ScreenCapture.au3>
Local $XCoords = 0
Local $YCoords = 0
_ScreenCapture_Capture(@DesktopDir & "Compare.png", 86, 109, 280, 109)
Sleep(60000)
$Compare = _ImageSearch(@DesktopDir & "Compare.png", 1, $XCoords, $YCoords, 5)
While $Compare = 0
    $Compare = _ImageSearch(@DesktopDir & "Compare.png", 1, $XCoords, $YCoords, 5)
Sleep(1000)
WEnd
FileDelete(@DesktopDir & "Compare.png")

Если вы хотите сделать более тщательный поиск изображений, используйте ImageSearchArea (быстрее и для того, что вам нужно, это лучше)

person Dennis Sylvian    schedule 09.11.2013
comment
Нет проблем, я добавил еще одну альтернативную версию проверки области, которую вы упомянули. Надеюсь, одно из решений удовлетворит ваши потребности :) - person Dennis Sylvian; 10.11.2013