Dynamics ax take screenshots from FormControls

Hi all,

Here is a little code snippet for you to take screen shots within a Dynamics Ax client.

public void run(FormControl _control)
{
    str                         SaveToFileName;
    System.Drawing.Bitmap           bitmap;
    System.Drawing.Graphics        graphics;
    System.Windows.Forms.Screen primaryScreen;
    System.Drawing.Rectangle       bounds;
 
    int                                       x, y, k, l;
    System.Int32                         width;
    System.Int32                         height;
 
    #define.FileName('DynamicsAx_Screenshot.png')
    ;
 
    try
    {
        // 5 for the My Documents folder
        SaveToFileName  = strfmt(@"%1%2",WinApi::getFolderPath(5),#FileName);
 
        primaryScreen   = System.Windows.Forms.Screen::get_PrimaryScreen();
        bounds          = primaryScreen.get_Bounds();
 
        [x, y, k, l]    = WinApi::getWindowRect(_control.hWnd());
 
        width           = _control.widthValue();
        height          = _control.heightValue();
 
        // TwC: used API CLRObject
        // BP Deviation Documented
        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
    {
        error("The file could not be saved"); // TODO make label
    }
}

This snippets uses the size of your control and the position on your screen to create the screenshot 🙂

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.