ypppu пишет:Хорошо, поищу по форуму способ обойтись без файлов.
Искать лучше всего здесь.
Вот тебе в помощь рабочий примерчик. Скрипт получает bitmap экрана, предварительно на время скрыв развёрнутые окна, и помещает полученную картинку в GUI. Требует наличия в пользовательской библиотеке скрипта Gdip.ahk
SetBatchLines, -1
Gui, Add, Pic
, % "x0 y0 w" A_ScreenWidth/3 " h" A_ScreenHeight/3 " hwndhPic +0xE" ; SS_BITMAP := 0xE
If !pToken := Gdip_Startup()
{
MsgBox, 48, Ошибка GDI+!
, Убедитесь в наличии gdiplus.dll в вашей системе!
ExitApp
}
WinGet, List, List
Loop % List
{
WinGet, MinMax, MinMax, % "ahk_id " List%A_Index%
if (MinMax = -1 || List%A_Index% = WinExist("Program Manager ahk_class Progman")
|| List%A_Index% = WinExist("ahk_class Shell_TrayWnd"))
Continue
WinList .= List%A_Index% . "`n"
}
StringTrimRight, WinList, WinList, 1
Loop, parse, WinList, `n
WinHide, ahk_id %A_LoopField%
pBitmap := Gdip_BitmapFromScreen()
Sort, WinList, F ReverseDirection D`n
Loop, parse, WinList, `n
{
WinShow, ahk_id %A_LoopField%
WinActivate, ahk_id %A_LoopField%
}
SetImageToControl(pBitmap, hPic)
Gdip_DisposeImage(pBitmap)
Gdip_Shutdown(pToken)
Gui, Show, % "w" A_ScreenWidth/3 " h" A_ScreenHeight/3
Return
GuiClose:
ExitApp
ReverseDirection(a1, a2, offset)
{
return offset
}
SetImageToControl(pBitmap, hwnd)
{
ControlGetPos,,, W, H,, ahk_id %hwnd%
hBitmapPic := CreateDIBSection(W, H)
pBitmapPic := Gdip_CreateBitmapFromHBITMAP(hBitmapPic)
G := Gdip_GraphicsFromImage(pBitmapPic)
Gdip_SetInterpolationMode(G, 7)
Width := Gdip_GetImageWidth(pBitmap), Height := Gdip_GetImageHeight(pBitmap)
Gdip_DrawImage(G, pBitmap, 0, 0, W, H, 0, 0, Width, Height)
DeleteObject(hBitmapPic)
hBitmapPic := Gdip_CreateHBITMAPFromBitmap(pBitmapPic)
SetImage(hwnd, hBitmapPic)
Gdip_DeleteGraphics(G)
Gdip_DisposeImage(pBitmapPic)
DeleteObject(hBitmapPic)
}
Разработка AHK-скриптов:
e-mail
dfiveg@mail.ruTelegram
jollycoder