Virtual Desktop

Chào mọi người, hôm nay mình lại tiếp tục chia sẽ hco mọi người một ứng dụng khá hay trên window, một dạng cửa sổ windows mới hoàn toàn và như một máy tính riêng mới trên máy tính của bạn.

[C#] Run Application in Virtual Desktop Winform

Khi các bạn chạy ứng dụng của mình sẻ chạy độc lập trên một màn hình Desktop khác.

Khi chạy ứng dụng ở giao diện này sẽ có một số ưu nhược điểm khác nhau của từng người code nhé.

Ưu điểm:

  1. Giúp ứng dụng tăng bảo mật, chống keylogger... 

Nhược điểm:

  1. Zalo sẻ không chụp được màn hình.
  2. oặc không sử dụng được phím PrintScreen, và nhiều chức năng khác

Source code c# virtual Desktop:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace RunAppinVirtualDesktop
{
    internal static class Program
    {
        [DllImport("user32.dll")]
        public static extern IntPtr CreateDesktop(string lpszDesktop, IntPtr lpszDevice, IntPtr pDevmode, int dwFlags, uint dwDesiredAccess, IntPtr lpsa);

        [DllImport("user32.dll")]
        private static extern bool SwitchDesktop(IntPtr hDesktop);

        [DllImport("user32.dll")]
        public static extern bool CloseDesktop(IntPtr handle);

        [DllImport("user32.dll")]
        public static extern bool SetThreadDesktop(IntPtr hDesktop);

        [DllImport("user32.dll")]
        public static extern IntPtr GetThreadDesktop(int dwThreadId);

        [DllImport("kernel32.dll")]
        public static extern int GetCurrentThreadId();

        enum DESKTOP_ACCESS : uint
        {
            DESKTOP_NONE = 0,
            DESKTOP_READOBJECTS = 0x0001,
            DESKTOP_CREATEWINDOW = 0x0002,
            DESKTOP_CREATEMENU = 0x0004,
            DESKTOP_HOOKCONTROL = 0x0008,
            DESKTOP_JOURNALRECORD = 0x0010,
            DESKTOP_JOURNALPLAYBACK = 0x0020,
            DESKTOP_ENUMERATE = 0x0040,
            DESKTOP_WRITEOBJECTS = 0x0080,
            DESKTOP_SWITCHDESKTOP = 0x0100,

            GENERIC_ALL = (DESKTOP_READOBJECTS | DESKTOP_CREATEWINDOW | DESKTOP_CREATEMENU |
                            DESKTOP_HOOKCONTROL | DESKTOP_JOURNALRECORD | DESKTOP_JOURNALPLAYBACK |
                            DESKTOP_ENUMERATE | DESKTOP_WRITEOBJECTS | DESKTOP_SWITCHDESKTOP),
        }
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            IntPtr hOldDesktop = GetThreadDesktop(GetCurrentThreadId());
            IntPtr hNewDesktop = CreateDesktop("RandomDesktopName", IntPtr.Zero, IntPtr.Zero, 0, (uint)DESKTOP_ACCESS.GENERIC_ALL, IntPtr.Zero);

            SwitchDesktop(hNewDesktop);        


            Task.Factory.StartNew(() =>
            {
                SetThreadDesktop(hNewDesktop);

                Application.Run(new Form1());
            }).Wait();

            SwitchDesktop(hOldDesktop);
            CloseDesktop(hNewDesktop);
           
        }
    }
}

Qua đoạn code trên mọi người có thể tùy biến phù hợp với khả năng và sở thích của bản thân để tạo cho mình một chương trình virtual desktop tốt nhất để chia sẽ cho mọi người nhé.
Chúc các bạn thành công.

Download Source Code Virtual Desktop

PASSWORD UNZIP: HUNG.PRO.VN