Что нового

Отображение фрагмента окна открытой программы

Ragn

Новичок
Сообщения
48
Репутация
0
Версия AutoIt: 3.3.14

Описание:
Здравствуйте.
Хотел задать вопрос - по возможности языка autoit управлять окнами приложений.

Суть вопроса вкратце такова:
Есть программа Notepad.exe
Ее надо , после запуска скриптом - отобразить не всю целиком, а только фрагмент окна этой программы, заданный относительно верхнего левого угла этого окна.
То есть - после запуска должно отобразится не все окно целиком, а только фрагмент 100х100, отстоящий от левого верхнего угла на 100 по горизонтали, и на 5 по вертикали.

Как это реализовать, ведь речь идет не о скриншоте, а об отображении самой программы ?
(при этом сама программа Блокнот - продолжит висеть на панели задач)

Примечания:
 

Вложения

  • 1.png
    1.png
    4.7 КБ · Просмотры: 3

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
Ragn
Какая версия Windows?

Если новее Windows Vista, можно вывести как миниатюру окна

Код:
#Include <WinAPIGdi.au3> ; 3.3.14.0

Opt('MustDeclareVars', 1)
Opt('WinTitleMatchMode', 2)

If Not _WinAPI_DwmIsCompositionEnabled() Then
    MsgBox(16, 'Error', 'Require Windows Vista or above with enabled Aero theme.')
    Exit
EndIf

Global $hWnd, $hForm, $hThumbnail, $tSIZE, $tDestRect, $tSrcRect, $Width, $Height


Run(@SystemDir & '\notepad.exe')

$hWnd = WinWaitActive('Блокнот', '', 3)
If Not $hWnd Then
    Exit
EndIf

; Create GUI
$hForm = GUICreate('MyGUI', 400, 400)

GUISetBkColor(0)

; Create the "sheet of glass" effect for the entire window. You must call this function whenever DWM composition is toggled.
_WinAPI_DwmExtendFrameIntoClientArea($hForm)

; Create a DWM thumbnail relationship (2:1)
$hThumbnail = _WinAPI_DwmRegisterThumbnail($hForm, $hWnd)
$tSIZE = _WinAPI_DwmQueryThumbnailSourceSize($hThumbnail)
$Width = DllStructGetData($tSIZE, 1)
$Height = DllStructGetData($tSIZE, 2)

; в этих двух строках менять положение отображаемого окна
$tDestRect = _WinAPI_CreateRectEx((400 - $Width / 2) / 2, (400 - $Height / 2) / 2, $Width / 2, $Height / 2)
$tSrcRect = _WinAPI_CreateRectEx(-50, -50, $Width-140, $Height-140)


_WinAPI_DwmUpdateThumbnailProperties($hThumbnail, 1, 0, 255, $tDestRect, $tSrcRect)

GUISetState()

Do
Until GUIGetMsg() = -3
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
чтобы скрыть часть окна, его нужно поместить в другое окно. при этом, это дочернее окно может не отображаться на панели
пример
Код:
#include <WinAPIex.au3>
#include <WindowsConstants.au3>
HotKeySet('{ESC}', '_exit')
$hGUI = GUICreate("", 100, 200, -1, -1, $WS_POPUP)
GUISetState()
Run('notepad.exe')
$hWnd1 = WinWaitActive("[class:Notepad]")
WinMove($hWnd1, "", -100, -32, 400, 300)
_WinAPI_SetParent($hWnd1, $hGUI)
Do
Until GUIGetMsg() = -3
Func _exit()
Exit
EndFunc

основное здесь
 
Автор
R

Ragn

Новичок
Сообщения
48
Репутация
0
Спасибо за ответы.
Буду изучать оба варианта.
 
Верх