Добрый вечер, знатоки Autoit.
Помогите с непростым вопросом.
Мой скрипт выводит картинку - в определенных координатах в отношении уже открытого окна программы Paint.
Я пытаюсь заставить эту картинку - перемещаться вместе с окном Paint, то есть как бы привязать картинку к окну Paint.
Подобное перемещение картинки вроде бы - может делать код:
Но что-то не получается.
Подскажите - как заставить выводимую в относительных координатах картинку - привязаться к окну программы Пайнт ?
(то есть - если я передвину окно Пайнт, то и картинка - тут же передвинется за ним)
Помогите с непростым вопросом.
Мой скрипт выводит картинку - в определенных координатах в отношении уже открытого окна программы Paint.
Я пытаюсь заставить эту картинку - перемещаться вместе с окном Paint, то есть как бы привязать картинку к окну Paint.
Код:
#Include <GDIPlus.au3>
_GDIPlus_Startup()
$CurImage = _GDIPlus_ImageLoadFromFile('test.jpg')
$sCLSID = _GDIPlus_EncodersGetCLSID("jpg")
$NewSizeW = Round((_GDIPlus_ImageGetWidth($CurImage) * 300) / _GDIPlus_ImageGetHeight($CurImage))
$NewImage = _GDIPlus_BitmapCreateFromScan0($NewSizeW, 300, _GDIPlus_ImageGetPixelFormat($CurImage)[0])
$hGraphics = _GDIPlus_ImageGetGraphicsContext($NewImage)
_GDIPlus_GraphicsSetInterpolationMode($hGraphics, 7)
_GDIPlus_GraphicsDrawImageRectRect($hGraphics, $CurImage, 0, 0, _GDIPlus_ImageGetWidth($CurImage), _GDIPlus_ImageGetHeight($CurImage), 0, 0, $NewSizeW, 300)
_GDIPlus_GraphicsDispose($hGraphics)
If FileExists("Resized.jpg") Then FileRecycle("Resized.jpg")
$tParams = _GDIPlus_ParamInit(1)
$tData = DllStructCreate("int Quality")
DllStructSetData($tData, "Quality", 100)
$pData = DllStructGetPtr($tData)
_GDIPlus_ParamAdd($tParams, $GDIP_EPGQUALITY, 1, $GDIP_EPTLONG, $pData)
$pParams = DllStructGetPtr($tParams)
_GDIPlus_ImageSaveToFileEx($NewImage, "Resized.jpg", $sCLSID, DllStructGetPtr($tParams))
_GDIPlus_ImageDispose($CurImage)
_GDIPlus_ImageDispose($NewImage)
$hImage = _GDIPlus_ImageLoadFromFile("Resized.jpg")
$W2 = _GDIPlus_ImageGetWidth($hImage)
$H2 = _GDIPlus_ImageGetHeight($hImage)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()
$X = -1
$Y = -1
$aPos = WinGetPos("[RegexpTitle: - Paint]")
If IsArray($aPos) Then
$X = $aPos[0] + 100
$Y = $aPos[1] + 200
EndIf
SplashImageOn('', @ScriptDir & '\Resized.jpg', $W2, $H2, $X, $Y)
Local $hW1 = WinGetHandle("[RegexpTitle: - Paint]")
Local $hW2 = WinGetHandle("[CLASS:Static; INSTANCE:1]", "")
Local $gp1 = WinGetPos($hW1)
Local $gp2 = WinGetPos($hW2)
Local $tX = $gp1[0], $tY = $gp1[1]
WinMove($hW2, '', $tX, $tY)
WinSetOnTop($hW2, '', 1)
Local $wtop
While 1
$gp1 = WinGetPos($hW1)
If Not @error Then
If $tX <> $gp1[0] Or $tY <> $gp1[1] Then
$tX = $gp1[0]
$tY = $gp1[1]
WinMove($hW2, '', $tX, $tY)
EndIf
EndIf
Sleep(10)
If WinActive($hW1) Then
WinSetOnTop($hW2, '', 1)
Else
WinSetOnTop($hW2, '', 0)
EndIf
WEnd
Sleep(300)
Код:
Local $hW1 = WinGetHandle("[RegexpTitle: - Paint]")
Local $hW2 = WinGetHandle("[CLASS:Static; INSTANCE:1]", "")
Local $gp1 = WinGetPos($hW1)
Local $gp2 = WinGetPos($hW2)
Local $tX = $gp1[0], $tY = $gp1[1]
WinMove($hW2, '', $tX, $tY)
WinSetOnTop($hW2, '', 1)
Local $wtop
While 1
$gp1 = WinGetPos($hW1)
If Not @error Then
If $tX <> $gp1[0] Or $tY <> $gp1[1] Then
$tX = $gp1[0]
$tY = $gp1[1]
WinMove($hW2, '', $tX, $tY)
EndIf
EndIf
Sleep(10)
If WinActive($hW1) Then
WinSetOnTop($hW2, '', 1)
Else
WinSetOnTop($hW2, '', 0)
EndIf
WEnd
Подскажите - как заставить выводимую в относительных координатах картинку - привязаться к окну программы Пайнт ?
(то есть - если я передвину окно Пайнт, то и картинка - тут же передвинется за ним)