• نمایش و عدم نمایش آیکون های دسکتاپ با C#

    نحوه تغییر نمایش آیکون های دسکتاپ با استفاده از کد های c#، نمایش و عدم نمایش محتویات دسکتاپ

    جهت نمایش آیکون های دسکتاپ، شما میتوانید از ContextMenu اصلی دسکتاپ اقدام به نمایش و عدم نمایش آیکون ها نمایید . اما با استفاده از توابع زیر این امکان وجود دارد تا شما با استفاده از نرم افزار تولید شده خود اقدام به تغییر وضعیت نمایش این بخش در دسکتاپ نمایید. در توابع زیر، هر دو حالت نمایش واقع گردیده است.

    فعال کردن آیکون ها :

    using System;
    using System.Runtime.InteropServices;
    
    namespace ConsoleApp22 {
        class Program {
            static void Main(string[] args)
    
            {
    
                bool retValue = IsVisible();
                Console.Write(retValue);
    
                if (!retValue) {
                    ToggleDesktopIcons();
                };
    
                Console.ReadKey();
    
            }
    
            [DllImport("user32.dll", SetLastError = true)] static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
            [DllImport("user32.dll", SetLastError = true)] static extern IntPtr GetWindow(IntPtr hWnd, GetWindow_Cmd uCmd);
            enum GetWindow_Cmd: uint {
                    GW_HWNDFIRST = 0,
                        GW_HWNDLAST = 1,
                        GW_HWNDNEXT = 2,
                        GW_HWNDPREV = 3,
                        GW_OWNER = 4,
                        GW_CHILD = 5,
                        GW_ENABLEDPOPUP = 6
                }
                [DllImport("user32.dll", CharSet = CharSet.Auto)] static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);
    
            private
            const int WM_COMMAND = 0x111;
    
            static void ToggleDesktopIcons() {
                var toggleDesktopCommand = new IntPtr(0x7402);
                IntPtr hWnd = GetWindow(FindWindow("Progman", "Program Manager"), GetWindow_Cmd.GW_CHILD);
                SendMessage(hWnd, WM_COMMAND, toggleDesktopCommand, IntPtr.Zero);
            }
    
            // return if visible or not
    
            [
                return: MarshalAs(UnmanagedType.Bool)]
            [DllImport("user32.dll", SetLastError = true)]
            private static extern bool GetWindowInfo(IntPtr hwnd, ref WINDOWINFO pwi);
    
            [StructLayout(LayoutKind.Sequential)]
            public struct RECT {
                private int _Left;
                private int _Top;
                private int _Right;
                private int _Bottom;
            }
    
            [StructLayout(LayoutKind.Sequential)]
            struct WINDOWINFO {
                public uint cbSize;
                public RECT rcWindow;
                public RECT rcClient;
                public uint dwStyle;
                public uint dwExStyle;
                public uint dwWindowStatus;
                public uint cxWindowBorders;
                public uint cyWindowBorders;
                public ushort atomWindowType;
                public ushort wCreatorVersion;
    
                public WINDOWINFO(Boolean ? filler): this() // Allows automatic initialization of "cbSize" with "new WINDOWINFO(null/true/false)".
                {
                    cbSize = (UInt32)(Marshal.SizeOf(typeof (WINDOWINFO)));
                }
    
            }
    
            static bool IsVisible() {
                IntPtr hWnd = GetWindow(GetWindow(FindWindow("Progman", "Program Manager"), GetWindow_Cmd.GW_CHILD), GetWindow_Cmd.GW_CHILD);
                WINDOWINFO info = new WINDOWINFO();
                info.cbSize = (uint) Marshal.SizeOf(info);
                GetWindowInfo(hWnd, ref info);
                return (info.dwStyle & amp; 0x10000000) == 0x10000000;
            }
    
        }
    }

     

     

     

    نظرات ارسال شده ارسال نظر جدید
    برای تبادل نظر، می بایست در سایت وارد شوید

    ورود به سایت
تماس سبد خرید بالا