C#窗体钉在桌面、置底、嵌入桌面的办法

想做一个桌面时钟,钉在桌面上不影响正常使用,只在看桌面的时候显示。

从网上多方寻找找到这么个代码,但是还是有不方便的地方,大家探讨一下。

这个程序在使用“显示桌面”的时候还可以显示,将程序的Form1.cs改为:

[csharp] view plaincopy

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Windows.Forms;
  8. using System.Runtime.InteropServices;
  9. namespace cbgfinder
  10. {
  11. public partial class Form1 : Form
  12. {
  13. [DllImport("user32.dll", CharSet = CharSet.Auto)]
  14. public static extern IntPtr FindWindow([MarshalAs(UnmanagedType.LPTStr)] string lpClassName, [MarshalAs(UnmanagedType.LPTStr)] string lpWindowName);
  15. [DllImport("user32")]
  16. private static extern IntPtr FindWindowEx(IntPtr hWnd1, IntPtr hWnd2, string lpsz1, string lpsz2);
  17. [DllImport("user32.dll")]
  18. public static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
  19. public Form1()
  20. {
  21. InitializeComponent();
  22. }
  23. private void Form1_Load(object sender, EventArgs e)
  24. {
  25. IntPtr pWnd = FindWindow("Progman", null);
  26. pWnd = FindWindowEx(pWnd, IntPtr.Zero, "SHELLDLL_DefVIew", null);
  27. pWnd = FindWindowEx(pWnd, IntPtr.Zero, "SysListView32", null);
  28. //IntPtr tWnd = new System.Windows.Interop.WindowInteropHelper(this).Handle;
  29. SetParent(this.Handle, pWnd);
  30. }
  31. }
  32. }

代码的下载地址是:http://download.csdn.net/detail/icyfox_bupt/4382848 没资源分

这个程序的问题在于,如果我想写:

[csharp] view plaincopy

  1. this.FormBorderStyle=None

就是设置无边框程序,就没法钉在桌面,就成了正常的程序了

大家一起来讨论一下吧。

时间: 2024-08-09 18:14:45

C#窗体钉在桌面、置底、嵌入桌面的办法的相关文章

将窗体嵌入桌面

在试用某些App时,发现有些Ap的窗口可以嵌入桌面,这样Win+D键的时候就可以看到,很方便.在网上搜索了一下,原理就是将窗口的父窗口设置成桌面.这个父窗口在Xp下通过FindWindow("Program manager","progman")找到,但是在win7下这个方法找到的父窗口就不好用了.用spy++看了之后,写了下面一段代码findDesktopIconWnd(),在xp和win7下都可以找到这个父窗口.子窗口再调用SetParent(child,par

js数组移动上移下移置顶置底,vue实现表格上下移动置底置顶

js操作数组移动 //先封装js数组交换顺序方法 /*参数说明 arr是要操作的数组 index1 是准备移动的元素 index2 是准备移动到的位置 往下移就是 index2=index+1 往上移动就是 index2=index+1: 这个也可以在页面试试那个方法就指导了,但是置顶和置底还有点差别 */ var swapItems = function(arr, index1, index2,direction) { if(direction=='up'){//置顶 arr.unshift(

将滚动条置顶,置底

Message.prototype.setScrollToBottom = function () { // 整个文档所占的高度 var scrollHeight = (function getScrollHeight(){ var scrollHeight = 0, bodyScrollHeight = 0, documentScrollHeight = 0; if(document.body){ bodyScrollHeight = document.body.scrollHeight; }

css解决无论页面长短footer永远置底

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ

【原创】jquery判断滚动条置底插件

最近项目需要,于是简单写了个判断滚动条置底的插件代码,欢迎拍砖交流! 代码如下: //滚动条滚动到底部了 --by xqs (function ($) { $.fn.scrollBot = function (opt, callback) { //diffY:距离底部像素值 var opts = (arguments.length == 1) ? {diffY: 0} : $.extend({diffY: 0}, opt); var fun = (arguments.length == 1) ?

iOS UILabel 文字 置顶/置底 实现

iOS UILabel控件默认文字位置是居中的,如图所示: 但是我们经常碰到这样的需求,希望文字向上置顶,或者向下置底,但是很遗憾,iOS API中并没有提供相应的属性和方法,需要我们手动设置. 利用 分类(category)为UILabel添加属性 isTop 和 isBottom来控制文字是否置顶和置底. 实现:利用往文字后面活前面下面添加"\n"来实现文字填充满整个UILable控件实现置顶/置顶效果 .h文件 #import <UIKit/UIKit.h> @int

在有序数据表中实现多记录上移下移置顶置底算法思路

引言 数据库应用中常需要在一个有序数据子集中,对指定的若干条记录进行上下移动.例如,管理员需要对新闻列表中的若干条新闻置顶,考试出卷时需要对选定题目进行上下移动重排顺序,等等. 总的应该场景在数据表中可以概括为如下模型: 数据表 TblData(id,fid,rank),id表示记录的唯一标识,fid指记录的父节点,rank代表父节点下兄弟的前后顺序,依次从1递增,没有空隙. 问题是要对相同fid下选中的若干个节点进行上下移动,如图1中的2个示例: 图 1 上移操作示例图 左侧示例是对第5.6两

MacOS远程桌面 VS 微软远程桌面

MacOS远程桌面 VS 微软远程桌面 当你维护这众多机器时候会由于维护需要经常需要进行主机间的文件传输,如果是Windows系统可以采用远程桌面.虽然远程桌面程序内置了映射磁盘的功能,可以实现远程登录服务器时自动将本地计算机的磁盘映射到服务器上但设置过程对于一些人还是有些复杂. 如果是MacOS系统下远程桌面上相互共享文件变得如此简单,高效率.你只需要懂得拖拽鼠标,其他设置都不用关心. 视频演示: http://edu.51cto.com/index.php?do=lesson&id=1533

Win7系统怎么开启远程桌面?Win7远程桌面怎么用(转)

远程桌面服务开启之后,可以方便的远程管理服务器或计算机.为生活和工作带来不少便利呢,很多小伙伴还不知道怎么开启win7远程桌面吧(下面咗嚛以内网远程桌面为例) 工具/原料 Win7 Win7远程桌面怎么开启 Win7如何开启远程桌面服务 首先打开桌面“计算机”图标,右键属性打开计算机属性菜单,如下图   打开计算机属性(控制面板----系统和安全---系统选项)找到左侧的“远程设置”功能,如图   出现的“系统属性”菜单中,找到“远程‘选项卡,其中下方的“远程桌面”选项,选择其中一个(注意 远程

使用SVN在桌面检出导致桌面图标左下角有加号(问号)

如下图的情况 解决方法:从c盘进去找到桌面文件夹,在工具里设置显示隐藏文件,将桌面文件夹里的.svn文件夹删除即可,如果不行重启电脑即可. 使用SVN在桌面检出导致桌面图标左下角有加号(问号)