资源预览内容
第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
亲,该文档总共4页全部预览完了,如果喜欢就下载吧!
资源描述
如何在桌面嵌入窗体如何在桌面嵌入窗体using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Runtime.InteropServices;namespace ShowInDeskpublic partial class Form1 : FormIntPtr hDesktop;public const int GW_CHILD = 5;public Form1()InitializeComponent();this.hDesktop = GetDesktopHandle(DesktopLayer.Progman);EmbedDesktop(this, this.Handle, this.hDesktop);isMouseDown = false;public IntPtr GetDesktopHandle(DesktopLayer layer)/hWnd = new HandleRef();HandleRef hWnd;IntPtr hDesktop = new IntPtr();switch (layer)case DesktopLayer.Progman:hDesktop = Win32Support.FindWindow(“Progman“, null);/第一层桌面break;case DesktopLayer.SHELLDLL:hDesktop = Win32Support.FindWindow(“Progman“, null);/第一层桌面hWnd = new HandleRef(this, hDesktop);hDesktop = Win32Support.GetWindow(hWnd, GW_CHILD);/第 2 层桌面break;case DesktopLayer.FolderView:hDesktop = Win32Support.FindWindow(“Progman“, null);/第一层桌面hWnd = new HandleRef(this, hDesktop);hDesktop = Win32Support.GetWindow(hWnd, GW_CHILD);/第 2 层桌面hWnd = new HandleRef(this, hDesktop);hDesktop = Win32Support.GetWindow(hWnd, GW_CHILD);/第 3 层桌面break;return hDesktop;public void EmbedDesktop(Object embeddedWindow, IntPtr childWindow, IntPtr parentWindow)Form window = (Form)embeddedWindow;HandleRef HWND_BOTTOM = new HandleRef(embeddedWindow, new IntPtr(1);const int SWP_FRAMECHANGED = 0x0020;/发送窗口大小改变消息Win32Support.SetParent(childWindow, parentWindow);Win32Support.SetWindowPos(new HandleRef(window, childWindow), HWND_BOTTOM, 300, 300, window.Width, window.Height, SWP_FRAMECHANGED);using System;using System.Collections.Generic;using System.Text;using System.Runtime.InteropServices;namespace ShowInDeskclass Win32SupportDllImport(“user32.dll“, CharSet = CharSet.Auto)public static extern IntPtr FindWindow(string className, string windowName);DllImport(“user32.dll“, CharSet = CharSet.Auto, ExactSpelling = true)public static extern IntPtr GetWindow(HandleRef hWnd, int nCmd);DllImport(“user32.dll“)public static extern IntPtr SetParent(IntPtr child, IntPtr parent);DllImport(“user32.dll“, EntryPoint = “GetDCEx“, CharSet = CharSet.Auto, ExactSpelling = true)public static extern IntPtr GetDCEx(IntPtr hWnd, IntPtr hrgnClip, int flags);DllImport(“user32.dll“, CharSet = CharSet.Auto, ExactSpelling = true)public static extern bool SetWindowPos(HandleRef hWnd, HandleRef hWndInsertAfter, int x, int y, int cx, int cy, int flags);DllImport(“user32.dll“)public static extern int ReleaseDC(IntPtr window, IntPtr handle);namespace ShowInDeskpublic enum DesktopLayerProgman = 0,SHELLDLL = 1,FolderView = 2
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号