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
    }
}

Code language: PHP (php)

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.