Processing Ajax...

Title
Close Dialog

Message

Confirm
Close Dialog

Confirm
Close Dialog

Confirm
Close Dialog

User Image
frankly16545
7 discussion posts
Deleted some lines of code to make it fullscreen only. no dialog-box.

Code

using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Runtime.InteropServices;

public static class VoiceBotScript
{
    public static void Run(IntPtr windowHandle)
    {
        // Here you set the path for saving screenshots
        string path = (@"C:\ScreenShots\");

        // Here you may change image format (Png, Jpeg, Bmp, Tiff, Gif, Icon, Wmf, Emf, Exif)
        ImageFormat ext = ImageFormat.Png;

        // If directory not exists call a method CreateDir
        if (!Directory.Exists(path))
        {
            Dir.CreateDir(path);
        }
        // Call a method Capture
        Capture.GetCapture(path,ext);
    }
}

static class Dir
{
    public static void CreateDir(string path)
    {
        // Create directory if sufficient permissons.
        try
        {
            Directory.CreateDirectory(path);
            // Get only name of directory
            string foldername = Path.GetFileName(Path.GetDirectoryName(path));
            BFS.Speech.TextToSpeech("Create directory" + foldername);
        }
        // Permission exception
        catch (UnauthorizedAccessException)
        {
            BFS.Speech.TextToSpeech("Insufficient permissions. Can't create the directory");
        }
    }
}

static class Capture
{
    private static string name, time, extension, filename;

    public static void GetCapture(string path, ImageFormat ext)
    {
        // Get and save fullscreen image
        Image imgFullScr = ScreenCapture.CaptureDesktop();
        GetFileName(path, ext);
        imgFullScr.Save(@filename, ext);
    }
    private static void GetFileName(string path, ImageFormat ext)
    {
        // Get handle focused window
        IntPtr hWnd = BFS.Window.GetFocusedWindow();
        // Get window name from hanle
        name = BFS.Window.GetText(hWnd);
        // Convert current time and date to string
        time = DateTime.Now.ToString("(yyyy-MM-dd@HH.mm.ss)");
        // Convert imageformat to string and to lowercase
        extension = ext.ToString().ToLower();
        // Set formatting for saving file
        filename = (path + name + " " + time + "." + extension);
    }
}

static class ScreenCapture
{
    [DllImport("user32.dll")]
    private static extern IntPtr GetForegroundWindow();
    
    [DllImport(@"dwmapi.dll")]
    private static extern int DwmGetWindowAttribute(IntPtr hwnd, int dwAttribute, out Rect pvAttribute, int cbAttribute);

    [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
    public static extern IntPtr GetDesktopWindow();

    [DllImport("user32.dll")]
    private static extern IntPtr GetWindowRect(IntPtr hWnd, ref Rect rect);

    [StructLayout(LayoutKind.Sequential)]

    private struct Rect
    {
        public int Left;
        public int Top;
        public int Right;
        public int Bottom;
    }
    public static Image CaptureDesktop()
    {
        return CaptureWindow(GetDesktopWindow());
    }
    public static Bitmap CaptureActiveWindow()
    {
        return CaptureWindow(GetForegroundWindow());
    }
    // Capture desktop or active window
    // and return it as a bitmap
    public static Bitmap CaptureWindow(IntPtr hWnd)
    {
        var rect = new Rect();
        // If Win XP and earlier use the old way
        if (Environment.OSVersion.Version.Major < 6)
            GetWindowRect(hWnd, ref rect);
        // using DwmApi for border rectangle
        else
        {
            var res = -1;
            try
            {
                res = DwmGetWindowAttribute(hWnd, 9, out rect, Marshal.SizeOf(typeof(Rect)));
            }
            catch {}
            if (res < 0)
                GetWindowRect(hWnd, ref rect);
        }
        
        var bounds = new Rectangle(rect.Left, rect.Top, rect.Right - rect.Left, rect.Bottom - rect.Top);
        var result = new Bitmap(bounds.Width, bounds.Height);

        using (Graphics graphics = Graphics.FromImage(result))
        {
            graphics.CopyFromScreen(new Point(bounds.Left, bounds.Top), Point.Empty, bounds.Size);
        }
        return result;
    }
}
Jun 14, 2021 (modified Jun 14, 2021)  • #1
Owen Muhlethaler (BFS)'s profile on WallpaperFusion.com
Hello,

Would you like us to add this to our script repository?

Thanks!
Jun 15, 2021  • #2
Subscribe to this discussion topic using RSS
Was this helpful?  Login to Vote(-)  Login to Vote(-)