Помню, что когда-то этот вопрос обсуждался, но не помню нашли ли решение ...

Подскажите пожалуйста, можно ли сделать из программы на Clarion снимок текущего экрана ?
Желательно, что бы без внешних (и тем более платных) библиотек.
Заранее спасибо.

Модератор: Дед Пахом
Код: Выделить всё
BugZapperClass.Construct PROCEDURE()
CODE
SELF.FreeImage &= NEW FreeImageClass
BugZapperClass.Destruct PROCEDURE()
CODE
DISPOSE(SELF.FreeImage)
REMOVE(sImageFile)
BugZapperClass.WinCapture PROCEDURE(WINDOW pWin)
CODE
SELF.FreeImage.CaptureScreen(pWin)
BugZapperClass.Display PROCEDURE(WINDOW pWin, LONG pImgCtrlFeq)
CODE
SELF.FreeImage.iImage.CopyToImageControl(pWin, pImgCtrlFeq)
Спасибо, но не совсем так. Т.к. примеров снимка экрана в FreeImage нет, вот пример этого кода.
Код: Выделить всё
CapScreen PROCEDURE (hWindow_)
theImage cfiImageControl
Window WINDOW,AT(,,1,1),SYSTEM,GRAY,MDI
region,AT(0,0),USE(?ImageControl),FULL
end
Code
Open(Window)
Window{Prop:Hide} = True
If theImage.iImageControl.Init(?ImageControl) <> False
theImage.iImage.CaptureScreen(Int(hWindow_))
theImage.iImage.SetSaveOption(JPEG_QUALITYSUPERB)
If theImage.iImage.SaveAs('C:\CaptureScreen.jpg') = False then Message('Ошибка сохранения картинки !').
end
Close(Window)
! Пример вызова - сделать снимок главного окна программы
Start(CapScreen,25000,AppFrame{Prop:Handle})