Using .net Code saved as full Screen Resolution Image in Dynamics AX 2009
Wrote by Jimmy Feb 11th 2011
static void Jimmy_ImagesSavedFullScreen(Args _args)
{
System.Drawing.Bitmap bitmap;
System.Drawing.Graphics graphics;
System.Windows.Forms.Screen primaryScreen;
System.Drawing.Rectangle bounds;
int x, y, k, l;
str SaveToFileName;
System.Int32 width;
System.Int32 height;
filename filename;
System.Exception ex;
#WINAPI
#define.FileName('DynamicsAx_Screenshot.png')
;
try
{
SaveToFileName = strfmt(@"%1\%2",WinApi::getFolderPath(0),#FileName);//0
/*
#define.CSIDL_DESKTOP (0x0000) // <desktop>
#define.CSIDL_INTERNET (0x0001) // Internet Explorer (icon on desktop)
#define.CSIDL_PROGRAMS (0x0002) // Start Menu\Programs
#define.CSIDL_CONTROLS (0x0003) // My Computer\Control Panel
#define.CSIDL_PRINTERS (0x0004) // My Computer\Printers
#define.CSIDL_PERSONAL (0x0005) // My Documents
*/
if(winapi::fileExists(SaveToFileName,false))
winapi::deleteFile(SaveToFileName);
primaryScreen = System.Windows.Forms.Screen::get_PrimaryScreen();
bounds = primaryScreen.get_Bounds();
[x, y, k, l] = WinApi::getWindowRect(infolog.hWnd());
width = WinAPI::getSystemMetrics(#SM_CXSCREEN);
height = WinAPI::getSystemMetrics(#SM_CYSCREEN);
bitmap = new System.Drawing.Bitmap(width,height);
graphics = System.Drawing.Graphics::FromImage(bitmap);
graphics.CopyFromScreen(x,y,0,0,bitmap.get_Size());
bitmap.Save(SaveToFileName, System.Drawing.Imaging.ImageFormat::get_Png());
}
catch(Exception::CLRError)
{
ex = CLRInterop::getLastException();
while( ex )
{
info( ex.get_Message() );
ex = ex.get_InnerException();
}
}
catch(Exception::Error)
{
error("The file could not be saved");
global::exceptionTextFallThrough();
}
if(winapi::fileExists(SaveToFileName,false))
winapi::shellExecute(SaveToFileName);
}