Visual C#弹出窗口杀手之四(转)
注册系统热键 系统热键用在像弹出窗口杀手这种应用程序非常有用, Ctrl+Shift+J是缺省热键。 说道实现,我们继续用RegisterHotkey(HWND hWnd, int id, UINT fsModifiers, UINT vkey)。完成,代码如下: public void SetHotKey(Keys c, bool bCtrl, bool bShift, bool bAlt, bool bWindows) { m_hotkey = c; m_ctrlhotkey = bCtrl; m_shifthotkey = bShift; m_althotkey = bAlt; m_winhotkey = bWindows; // update hotkey NativeWIN32.KeyModifiers modifiers = NativeWIN32.KeyModifiers.None; if (m_ctrlhotkey) modifi
Visual C#弹出窗口杀手之三(转)
本地win32窗体查找 本程序的实现原理是这样,先检查所有的IE窗口标题,然后于已经有的列表来比较,如果有相同的,我们就关闭这个窗口。 按照上面的方法,我们每n妙使用KillPopup()来检查。比较遗憾的是我们无法使用安全代码来完成所有的工作。我们可以使用 System.Diagnostics.Proces来检查所有的IE进程,然后得到主窗体。但是每一个IE进程可以打开好几个窗口,虽然每一个窗体都于一个进程相关,但是还没有办法来使每一个窗体于进程对应起来。 一个可行的办法使用System.Diagnostics.Process列举出所有的运行的进程,然后S
Visual C#弹出窗口杀手之二(转)
添加右键菜单 添加一个右键菜单和添加托盘基本一样,从工具箱中添加context menu就可以.右键菜单在你鼠标右键按下的时候是会自动弹出的。 当设置好右键菜单以后,我们必要要根据不同的情况来启用或停用右键菜单,这个可以通过在菜单的BeforePopup设置。Enabled属性来实现。 private void menu_App_BeforePopup(object sender, System.EventArgs e) { if ( this.WindowState == FormWindowState.Minimized ) { App_Show.Enabled = true; App_Hide.Enabled = false; } else { App_Show.Enabled = false; App_Hide.Enabled = true
Visual C#弹出窗口杀手之一(转)
弹出窗口杀手是一个可以自动关闭IE弹出窗口的程序,它工作在系统的托盘中,按照一定的间隔来检测IE窗口,然后关闭弹出窗体。最后,还提供了用热键来杀掉弹出窗口的功能。 虽然已经有类似的用C++写的程序,但是本文讲述的是用C#来实现这些功能,并且本文所讲的方案在查找窗口上的方法要比更快一些。 这是一个崭新的话题,在Internet上我们还可以看到许多类似的程序。但是我也还是要借这个机会来讲述一些下面的技术在C#中如何实现: 系统托盘 程序切换 计时控件 查找窗口 系统热键 生成一个系统托盘程序
用TreeView实现树菜单(转)
具体方法是:创建一个数据库,设计树图信息表S_Menu,包含NodeId、ParentId、NodeName、Address、Icon字段,其它字段根据实际业务而定,节点名称NodeName将在树型控件的节点上显示,NodeId字段保存节点的唯一标识号,ParentId表示当前节点的父节点号,标识号组成了一个“链表”,记录了树上节点的结构。设计一个Web窗体其上放置TreeView控件,修改其属性Id为tvMenu。 数据结构如下: CREATE TABLE [dbo].[S_Menu] ( [NodeId] [char] (6) COLLATE Chinese_PRC_CI_AS NULL , [ParentId] [char] (6) COLLATE Chinese_PRC_CI_AS NULL
在C#应用程序与DLL交互中使用消息(转)
在C#是一种类似 Java 的完全面向对象的高级编程语言,其处理过程采用事件驱动方式,但在实际的使用过程中,有时候通过调用系统原有的消息处理起来会更简单,特别是在处理与DLL文件的交互时,实践证明的确是非常方便的。 在C#中使用自定义消息 在C#中使用自定义消息非常简单,只需要下面几个简单的步骤就可以了: 1、定义消息 定义消息的方法与在VC中定义消息有一点点不同,比如在VC中申明一个自定义消息是这样的: #define WM_TEST WM_USER + 101 而在C#中消息需要定义成 Windows 系统中的原始的16进制数字,比如自定
实例介绍C# GUI开发之二(转)
public class TempConverter : System.WinForms.Form { public TempConverter() { this.SetSize(180,90); this.BorderStyle = FormBorderStyle.FixedDialog; this.Text = "°C->°F / °F->°C"; this.StartPosition = FormStartPosition.CenterScreen; this.HelpButton = false; this.MaximizeBox = false; } public static void Main() { Application.Run( new TempConverter() ); } } 在Main()中出现了一条新的语句: Application.Run(new TempConverter()); 正如您所猜想的一样,这条语句的意思是运
实例介绍C# GUI开发之一(转)
在本文里,通过编辑一个小小的可以将温度从摄氏转换到华氏的程序,我们将亲身体会到C# GUI开发过程。阅读本文最基本的要求是您要具有C#及面向对象程序设计的基本知识。本文的写作宗旨是介绍C#,如果您希望编译或是运行本文所列举的程序,则需要有.NET Framework SDK的支持。 创建一个视窗应用程序主要包括以下的基本步骤:创建适合的表单,在表单上添加control,最后添加代码。完成上述过程所需用到的C# 以及 .NET framework我们可以在System.WinForms namespace中找到。 第一步,创建表单。 我们以 class System.WinFo
利用Visual C#打造一个平滑的进度条之二(转)
将下面的代码添加到UserControl模块中,就在“Windows Form Designer generated code”之后: int min = 0; // Minimum value for progress range int max = 100; // Maximum value for progress range int val = 0; // Current progress Color BarColor = Color.Blue; // Color of progress meter protected override void OnResize(EventArgs e) { // Invalidate the control to get a repaint. this.Invalidate(); } protected override void OnPaint(PaintEventArgs e) { Graphics g = e.Graphics; SolidBrush brush = ne
利用Visual C#打造一个平滑的进度条之一(转)
概述 本文描述了如何建立一个简单的、自定义的用户控件——一个平滑的进度条。 在早先的进度条控件版本中,例如在 Microsoft Windows Common Controls ActiveX 控件中提供的版本,您可以看到进度条有两种不同的视图。您可以通过设定 Scrolling 属性来设定 Standard 视图或是 Smooth 视图。 Smooth 视图提供了一个区域来平滑的显示进度, Standard 试图则看上去是由一个一个方块来表示进度的。 在 Visual C# .NET 中提供的进度条控件只支持 Standard 视图。 本文的代码样例揭示了如何建立一个有如下属性的控件:
Asp.net给站点某目录增加Aspnet用户(转)
using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.IO;using System.Net;using System.Security.AccessControl;using System.Security.Principal;public partial class ACLChange : System.Web.UI.Page{ //文件夹路径 private string strDir = "images"; protected void Page_Load(obj
asp.net 2.0中预设的cookie(转)
今早在老外的BLOG上看到这个说法,不妨留意一下:如果你在asp.net 2.0中使用FormsAuthentication,并且将cookie设置为持久状态,那么其持续时间默认是30分钟的,而不是asp.net 1.1中的50年,因为50年的话太不安全了,你的计算机会被人卖掉的。如果要更改的话,可以使用timeout属性更改<authentication mode="forms"> <form loginUrl="login.aspx" timeout="3600"/> </authentication>如果不更改TIMEOUT属性,那么当你使用asp.net 2.0的LOGIN控件时,即使用户选了REMEMBER ME,那么30分
ASP.Net防止刷新自动触发事件的解决方案(转)
使用asp.net,在刷新页面的时候会自动触发服务器端的事件。举个简单的例子,如:一个注册页面,我们填写完注册信息之后,如果按F5刷新之后,会自动触发到Button事件上,这样就造成了又注册了一次的麻烦。我先前的解决方案:用关键字查询,如有相同,则提示已有此用户。但是这种方案不能在没有表识的情况下使用,他会重新提交。鉴于此,我寻找了一种新的解决方案,很庆幸,在朋友的提点下,迸发了这样的解决方案,肯定有更好的解决方案,不吝赐教。解决思路:刷新时,捕捉KeyPress,让他触发其他无用的事件。1、捕捉F5事件的JavaScriptwind
ASP.NET 2.0数据处理之高级分页与排序(转)
GridView控件中的"选择"操作纯粹是一个UI概念,它的SelectedIndex属性与表格的可视数据行中的当前被选中的行的索引相对应。如果你启用了表格的分页和排序功能,在执行分页或排序操作之后,SelectedIndex的值仍然不会变化,因此在执行这些操作之后,一个新数据行被选中了。在某些环境下,保留对指定数据行的选中更好,即使该行在表格的当前页面中并不可视。下面的例子演示了如何在排序和分页操作之后仍然保留当前选中的数据行。Sub GridView1_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Dim Row As GridV
ASP.NET中数据校验部分的封装与应用(转)
我们的业务系统涉及到较多的表单编辑与校验,最简单的办法是使用asp.net自带的数据校验控件即可,但这样有以下3个问题: 1 校验控件要在设计时加入到表单上,并手工设置:数据类型,错误信息等属性,比较繁琐。 2 对于一个输入框,我们可能要检查多项,如:必填,必须是日期格式,并且要大于2007-1-1。这样就需要加入多个校验控件。 3 业务规则和表单绑定在一起,不利于维护和重用。 我们希望的校验功能是: 1 校验规则和表单脱离,表单上画好输入框即可,校验控件会在运行时,根据配置文件动态创建。 2 根据验证规则,
属性和元数据(转)
C#和C++之间一个显著的区别是它提供了对元数据的支持:有关类、对象、方法等其他实体的数据。属性可以分为二类:一类以CLR的一部分的形式出现,另一种是我们自己创建的属性,CLR属性用来支持串行化、排列和COM协同性等。一些属性是针对一个组合体的,有些属性则是针对类或界面,它们也被称作是属性目标。 将属性放在属性目标前的方括号内,属性就可以作用于它们的属性目标。 [assembly:AssemblyDelaySign(false)] [assembly:AssemblyKeyFile(".keyFile.snk")] 或用逗号将各个属性分开: [assembly:AssemblyDelaySign(false), a
J2EE vs .NET测试结果(转)
1.这次的评测不是m$作的,而是java(主要是j2ee)推广和培训的middleware company(我佩服这样的公司可以将对自己不利的数据公布出来)做出的(看得出费了很大的力气),在评测中得到了theserverside.com的协助。 2.比较的产品仍然是各自的petshop(都是2.0),这次.net的petshop将存储过程改为了动态sql,和ejb站在了同一起跑线上。 而java的petshop,middleware对它进行了彻底的优化,优化后的petshop2.0的性能(最大吞吐能力)是原始的petshop2.0(sun)的10倍(从图形上目测,(-:)。有志于了解j2ee优化的可以去看看middleware的
COM和.NET的互操作(转)
.NET Framework的产生已经有两年多的时间了,有不少公司开始采用.NET开发应用软件。但是很多公司在多年的项目应用中,开发了很多COM、DCOM组件,现在采用.NET开发组件,使这些组件成为了遗留代码。由于在开发COM组件时投入了大量的人力、财力,如何在.NET环境下重用这些COM组件就显得更有意义,本文将介绍使这些COM组件“起死回生”的方法。 .NET支持运行时通过COM、COM+、本地WinAPI调用与未管制代码的双向互操作性,BCL为此提供了一套类和属性,包括受管制对象生存期的精确控制等。要实现互操作性,必须首先引入.NET Framework的 System
.NET Framework For Java Programmers(转)
.NET Framework For Java Programmers Author: Ashish Banerjee ObjectiveAfter reading this article Java programmers should be able to decipher and de-jargonize the .NET architecture and relate it with the proposed ECMA standard. Target AudienceJava programmers and system architects. SummaryThis article outlines Microsoft's proposed standardization of .NET framework in ECMA forum as CLI (Common Language Infrastructure), but the Microsoft documentation refer this as CLR (Common Language Runtime).
解析.Net框架下的XML编程技术之二(转)
以上,我向大家介绍了如何运用XmlTextReader类的对象来读取XML文档,并根据节点的NodeType属性来取得其节点类型信息。同时XmlReader这个基类还有XmlNodeReader和XmlValidatingReader等派生类,它们分别是用来读取XML文档的节点和模式的。限于篇幅,这里就不介绍了,读者可以参考有关资料。 四.写XML文档的方法: XmlWriter类包含了写XML文档所需的方法和属性,它是XmlTextWriter类和XmlNodeWriter类的基类。该类包含了WriteNode、WriteString、WriteAttributes、WriteStartElement以及WriteEndElement等一系列写XML文档的方法,其中有些