您当前的位置:首页 > 计算机 > 编程开发 > .net

C#如何让WinForm嵌入桌面窗口最底层

时间:02-11来源:作者:点击数:

本文介绍C#使用Windows API函数:SetParent、SetWindowPos和FindWindow实现让WinForm嵌入桌面窗口最底层,并提供详细的实现代码供参考。

此类将窗体永远置于窗口最底层。

首先, 调用一些User32.dll的WinAPI函数。

    internal class User32

    {

        public const int SE_SHUTDOWN_PRIVILEGE = 0x13;



        [DllImport("user32.dll")]

        public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);



        [DllImport("user32.dll")]

        public static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);



        [DllImport("user32.dll")]

        public static extern bool SetWindowPos(IntPtr hWnd, int hWndInsertAfter, int X, int Y, int cx, 

            int cy, uint uFlags);

    }

然后, 在WinForm里面:

        public MainForm()

        {

            InitializeComponent();



            try

            {

                if (Environment.OSVersion.Version.Major < 6)

                {

                    base.SendToBack();



                    IntPtr hWndNewParent = User32.FindWindow("Progman", null);

                    User32.SetParent(base.Handle, hWndNewParent);

                }

                else

                {

                    User32.SetWindowPos(base.Handle, 1, 0, 0, 0, 0, User32.SE_SHUTDOWN_PRIVILEGE);

                }

            }

            catch (ApplicationException exx)

            {

                MessageBox.Show(this, exx.Message, "Pin to Desktop");

            }

        }



        private void MainForm_Activated(object sender, EventArgs e)

        {

            if (Environment.OSVersion.Version.Major >= 6)

            {

                User32.SetWindowPos(base.Handle, 1, 0, 0, 0, 0, User32.SE_SHUTDOWN_PRIVILEGE);

            }

        }



        private void MainForm_Paint(object sender, PaintEventArgs e)

        {

            if (Environment.OSVersion.Version.Major >= 6)

            {

                User32.SetWindowPos(base.Handle, 1, 0, 0, 0, 0, User32.SE_SHUTDOWN_PRIVILEGE);

            }

        }

以上介绍的就是C#如何让WinForm嵌入桌面窗口最底层,希望对你有所帮助。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门