Ожидание спёрто из табакса, оригинальный автор кода - самый одобряемый пользователь этого форума
X++:
void captureForm(FormName name)
{
Image image = new Image();
Args args = new Args(name);
FormRun formRun = new FormRun(args);
int i;
DLLFunction peekMessage;
DLLFunction TranslateMessage;
DLLFunction dispatchMessage;
Binary msg = new Binary(30);
DLL user32;
;
user32 = new DLL('USER32');
peekMessage = new DLLFunction(user32, 'PeekMessageA');
TranslateMessage= new DLLFunction(user32, 'TranslateMessage');
dispatchMessage = new DLLFunction(user32, 'DispatchMessageA');
peekMessage.arg(ExtTypes::POINTER, ExtTypes::DWORD, ExtTypes::DWORD, ExtTypes::DWORD, ExtTypes::DWORD);
peekMessage.returns(ExtTypes::DWord);
TranslateMessage.arg(ExtTypes::Pointer);
TranslateMessage.returns(ExtTypes::DWORD);
dispatchMessage.arg(ExtTypes::Pointer);
dispatchMessage.returns(ExtTypes::DWord);
// Open and show the form
formRun.init();
formRun.run();
for (i=1;i<=20;i++)
if (peekMessage.call(msg, 0, 0, 0, 1))
{
TranslateMessage.call(msg);
dispatchMessage.call(msg);
}
// Take a screenshoot of the form
image.captureWindow(formRun.hWnd());
image.saveType(ImageSaveType::JPG);
// reduce the colors (bits/pixel)
//image.reduceColorOctree(FALSE,256);
//image.reduceColorOctree(256);
// Save it as bitmap
image.saveImage(element.getSaveName(name));
}