zoukankan      html  css  js  c++  java
  • 【转】如何让你的WinForm嵌入桌面

    如何让你的WinForm嵌入桌面

    新一篇: SyntaxHighlighter part1

    首先, 调用一些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);
        }

     转自: http://blog.csdn.net/leomaya/archive/2007/10/26/1845950.aspx

    然后, 在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, 10000, 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, 10000, User32.SE_SHUTDOWN_PRIVILEGE);
                }

            }


            
    private void MainForm_Paint(object sender, PaintEventArgs e)
            
    {
                
    if (Environment.OSVersion.Version.Major >= 6)
                
    {
                    User32.SetWindowPos(
    base.Handle, 10000, User32.SE_SHUTDOWN_PRIVILEGE);
                }

            }
  • 相关阅读:
    idea中编译项目报错 java: javacTask: 源版本 1.8 需要目标版本 1.8
    发布返回结果对象中添加冒泡结果字段
    Spring还使用基于 JSR-250 注释,它包括 @PostConstruct, @PreDestroy 和 @Resource 注释
    跨网段IP
    Vlan
    分区工具parted的详解及常用分区使用方法
    dump命令详解
    备份 (综述)
    firewalld 防火墙配置
    find、which、whereis、locate和type之间的区别
  • 原文地址:https://www.cnblogs.com/hetonghai/p/1207055.html
Copyright © 2011-2022 走看看