Processing Ajax...

Title

Message

Confirm

Confirm

Confirm

Confirm

Are you sure you want to delete this item?

Confirm

Are you sure you want to delete this item?

Confirm

Are you sure?
Save up to 50% on our desktop apps during our Year End Sale!Save up to 50% on our desktop apps during our Year End Sale, including DisplayFusion, ClipboardFusion, FileSeek, LogFusion, TrayStatus, and VoiceBot!Save up to 50% on our desktop apps during our Year End Sale!

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(-)