Что нового

Два скрипта конфликтуют между собой

Sky Green

Новичок
Сообщения
19
Репутация
0
Добрый день.
Подскажите что не так со скриптом.

Код:
#include "DSEngine.au3"
#include <WindowsConstants.au3>
#include <GuiConstants.au3>
#include <MenuConstants.au3>
#include <WinAPI.au3>
#include <WinAPISys.au3>
#include <MsgBoxConstants.au3>
#include <File.au3>
#include <ScreenCapture.au3>
#include <BmpSearch.au3>



Opt('WinTitleMatchMode', -2)
$aPos1 = WinGetPos('Документ.xlsb')

_GDIPlus_Startup()


$hWnd1 = WinGetHandle("Документ.xlsb")

;$hSource = _ScreenCapture_Capture()
_ScreenCapture_CaptureWnd(@ScriptDir & "\Screen.png", $hWnd1)
$hBmp1 = _GDIPlus_BitmapCreateFromFile(@ScriptDir & "\Screen.png")
$hSource1 = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBmp1)

$hBmp1 = _GDIPlus_BitmapCreateFromFile(@ScriptDir & "\Картинка.bmp")
$hFind1 = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBmp1)

$aCoords = _BmpSearch($hSource1, $hFind1, 1)




Local $aFileList = _FileListToArrayRec("f:\video", "**", $FLTAR_FILES, $FLTAR_RECUR, $FLTAR_NOSORT, $FLTAR_FULLPATH)
If @error Then Exit MsgBox($MB_ICONERROR + $MB_TOPMOST, "Ошибка", "Файлы не найдены")
;ShellExecute($aFileList[Random(1, $aFileList[0], 1)])

sleep(1000)
Global $sFile = $aFileList[Random(1, $aFileList[0], 1)]


Global $fVolume, $fMove, $iValue = -10000
Global $hWnd = GUICreate("DirectShow Engine Example", 100, 66, $aCoords[1][2], $aCoords[1][3], $WS_POPUP, $WS_EX_TOPMOST)
GUIRegisterMsg($WM_MOUSEMOVE, "WM_MOUSE")
GUIRegisterMsg($WM_MOUSELEAVE, "WM_MOUSE")
GUIRegisterMsg($WM_LBUTTONDOWN, "WM_MOUSE")
Engine_Startup(@ScriptDir & "\DSEngine_UDF.dll")
Engine_LoadFile($sFile, $hWnd)
GUISetState()
Engine_StartPlayback()
Engine_Mute()
$End = Engine_GetLength()
Engine_SetPosition(Random(1, $End)) ; Установить случайное время

Do
  If Engine_GetPosition() = $End Then Engine_SetPosition(0)
  Until GUIGetMsg() = -3

Engine_Shutdown()

Func WM_MOUSE($hWnd, $iMsg)
    Switch $iMsg
        Case $WM_LBUTTONDOWN
            $fMove = True
            _SendMessage($hWnd, $WM_SYSCOMMAND, 0xF009, 0, "int", "int", "long")
        Case $WM_MOUSEMOVE
            If Not $fVolume Then
                AdlibUnRegister("_VolumeDown")
                AdlibRegister("_VolumeUp", 10)
                $fVolume = True
                _WinAPI_TrackMouseEvent($hWnd, $TME_LEAVE)
            EndIf
        Case $WM_MOUSELEAVE
            If $fMove Then
                $fMove = False
                _WinAPI_TrackMouseEvent($hWnd, $TME_LEAVE)
            ElseIf $fVolume Then
                AdlibUnRegister("_VolumeUp")
                AdlibRegister("_VolumeDown", 10)
                $fVolume = False
            EndIf
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_MOUSE

Func _VolumeUp()
    If $iValue < 0 Then
        $iValue += 100
        Engine_SetVolume($iValue)
    Else
        AdlibUnRegister("_VolumeUp")
    EndIf
EndFunc   ;==>_VolumeUp

Func _VolumeDown()
    If $iValue > -10000 Then
        $iValue -= 100
        Engine_SetVolume($iValue)
    Else
        AdlibUnRegister("_VolumeDown")
    EndIf
EndFunc   ;==>_VolumeDown

По идее он должен определять координаты определенного изображения на экране и размещать в этих координатах видеоокно.
Но этого не происходит.
Скрипт просто пишет, что прекращена работа программы Autoit Script.

По отдельности - они работают:
bmpsearch определяет координаты. (этот скрипт - можно было запускать и из консоли)
А DSEngine открывает видеоокно. (Этот скрипт работал только по двойному щелчку клика мыши на au3.)
Но вместе они почему-то работать не хотят.

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

Вложения

  • 1.rar
    151.3 КБ · Просмотры: 2
Верх