- 博客(23)
- 资源 (17)
- 收藏
- 关注
原创 C#中调用Windows API时的数据类型对应关系
<br />最近接触WINAPI比较多,一直要楂数据类型间的对应关系,所姒就转载一下~<br /><br /><br /><br /># Windows Data Type .NET Data Type <br /><br /># BOOL, BOOLEAN Boolean or Int32 <br /><br /># BSTR String <br /><br /># BYTE Byte <br /><br /># CHAR Char <br /><br /># DOUBLE Double <br /><
2010-06-28 17:32:00 1555 1
转载 VC实现进程遍历的四种方法
<br />方法一 <br />第一种方法是大家比较熟悉的通过ToolHelp Service提供的API函数来实现。这里用到了3个关键的函数:CreateToolhelp32Snapshot(),Process32First()和Process32Next()。下面给出了关于这三个函数的原形和参数说明; <br />HANDLE WINAPI CreateToolhelp32Snapshot( <br /> DWORD dwFlags, //系统快照要查看的信息类型 <br /> DWORD th32
2010-06-28 14:30:00 1383 1
原创 Visual C#中操作WMI的类库简介
.Net FrameWork SDK对WMI提供了全面的支持,.Net FrameWork SDK为Visual C#能够操作WMI提供了一个专门的命名空间"System.Management"。在命名空间"System.Management"中提供了大量用以处理和WMI相关的类、接口和枚举。 命名空间"System.Management"中的成员是非常复杂的,由于篇幅所限完全介绍这些成员是不可能的,也是没有要的。根据我的经验,认为要了解、掌握在Visual C#中使用WMI,下面六个类应该是学习的重点,
2010-06-28 11:32:00 6309 1
原创 为服务的可执行程序加上参数
<br />在Windows 的系统服务中,有很多的服务都是使用相同的程序集的,不同的是他们使用不同的参数启动。<br />而在我们的需求中,也可能有这样的应用场景,<br />双击我们的程序时,直接打开一个窗体应用程序,而同时,这个窗体应用程序中也包含了某些服务的代码,因此我们也想把该程序注册成为服务。<br /> <br />由此,我们为程序添加了一个参数 -service,当程序以 -service的参数启动时,调用服务的代码,当没有参数启动时,我们启动一个窗体。<br /> <br /> <br /
2010-06-28 11:22:00 4062
原创 使用WTSGetActiveConsoleSessionId()的VISTA服务与桌面交互
Windows Vista 对快速用户切换,用户账户权限,以及服务程序所运行的会话空间都作了很大的改动,致使一些原本可以工作的程序不再能够正常工作了,我们不得不进行一些改进以跟上 Vista 的步伐。我们的软件在Windows NT/2000/XP/Vista 系统中安装了一个系统服务,这个服务负责以 SYSTEM 权限启动我们的主程序。我们的主程序启动后会在系统托盘添加一个图标,点击此图标可以弹出控制菜单,通过这个菜单也可以激活配置程序首选项的对话框。在 Windows NT/2000/XP 下我们的程序
2010-06-27 22:52:00 3564 1
原创 CreateProcess函数详解
<br />CreateProcess<br />说明:<br />WIN32API函数CreateProcess用来创建一个新的进程和它的主线程,这个新进程运行指定的可执行文件。<br />函数原型:<br />BOOL CreateProcess<br />(<br /> LPCTSTR lpApplicationName, <br /> LPTSTR lpCommandLine, <br /> LPSECURITY_ATTRIBUTES lpProcess
2010-06-27 22:51:00 1395
原创 在服务里面弹出一个窗口到用户的桌面上
<br />曾几何时,服务里面弹出一个窗口到桌面上不再是那么地容易了:以前只要把服务设置为允许和桌面交互就可以直接在服务启动的时候,把一个窗口弹给用户。但是现在在vista(其它的OS 下没有测试,未知)下要弹出这样的窗体,首先会弹出一个提示框提示是否接否一个服务弹出来的消息,点接受后,才会在一个全灰的桌面里面弹出这个窗口。不用想,这样的用户体验,肯定是会被直接PASS。原因很简单,因为不同的用户间的桌面是不一样的,服务用的是System的权限,在vista里面是Session0,而用户的帐户不是这个(肯定
2010-06-27 22:45:00 3574
原创 .NET实现可交互的WINDOWS服务
<br />Windows 服务应用程序在不同于登录用户的交互区域的窗口区域中运行。窗口区域是包含剪贴板、一组全局原子和一组桌面对象的安全对象。由于 Windows 服务的区域不是交互区域,因此 Windows 服务应用程序中引发的对话框将是不可见的,并且可能导致程序停止响应。同样,错误信息应记录在 Windows 事件日志中,而不是在用户界面中引发。<br /> .NET Framework 支持的 Windows 服务类不支持与交互区域(即登录用户)进行交互。同时,.NET Framework 不包含
2010-06-27 20:13:00 2937
转载 Virtual Desktop: A Simple Desktop Management Tool
<br />Virtual Desktop: A Simple Desktop Management Tool 时间: 2009.01.08 20:07:00 标签: Download demo project - 260.89 KBDownload source - 44.5 KB Introduction<br />A few months ago, one of my colleagues was using a tool that was managing multiple desktops.
2010-06-26 11:32:00 1027
原创 DeskTop与WorkStation使用两则
<br /> 经历过Windows 95以及之前版本的用户,都对Windows98之后的Windows可以支持多个显卡惊讶不已,其实从Windows98开始,Windows系统也可以支持多个桌面了,新的API提供了一组使用Desktop桌面和Workstaion工作站的函数:CloseDesktopCloseWindowStationCreateDesktopCreateWindowStationEnumDesktopProcEnumDesktopsEnumDesktopW
2010-06-25 17:54:00 4085
原创 窗口站(Window station)和桌面(desktop)
<br />窗口站(window station):<br />包含剪贴板(clipboard),一个原子表,一个或多个桌面(desktop)对象.窗口站是一个保护对象,当一个窗口站被创建,它被分配到当前进程和当前会话(session).<br />交互式窗口站Winsta0是唯一的可以显示用户接口和接受用户输入的窗口站,它被分配到当前用户的登录会话,并且包含键盘,鼠标和显示器,其他窗口站都不能显示用户接口和接受用户输入.<br />当一个用户登录到一个终端服务(Terminal Service)计算机,一
2010-06-25 17:51:00 4228 2
原创 在服务程序中弹出对话框
先说说在WinXP和Windows2003下用的方法。 第一种方法是在服务进程中启动一个子进程。用该子进程弹出对话框。.NET的C#代码大致如下: public static void Show( string msg, string cap, MessageBoxButtons buttons, MessageBoxIcon icon ){ try { Process proc = new Process(); proc.StartInfo.FileName = EXE_NAM
2010-06-25 17:35:00 2507 1
转载 关于C#服务里面的OnSessionChange
此文档假设你已会C和C#的服务编程了。以前我在写服务程序的时候,SCM有一个很酷的功能,能接收WinLogon的Notify消息。具体操作是,设置服务状态的时候,把SERVICE_STATUS结构体变量的dwControlsAccepted参数设成包含SERVICE_ACCEPT_SESSIONCHANGE的异或(代码一),然后就能在HandleEx函数里处理了(代码2)。你可以方便地获得系统的Logon、LogOff、Lock、Unlock的消息,并在此时机做出自己的处理。例如开始菜单里面“启动”项里的程
2010-06-25 16:54:00 3140
原创 ServiceController类
<br /> <br />下面创建一个小的Windows应用程序,该应用程序使用ServiceController类监视和控制Windows服务。<br />创建一个Windows窗体应用程序,这个应用程序的用户界面包含一个显示所有服务的列表框、4个文本框(分别用于显示服务的显示名称、状态、类型和名称),以及4个发送控制事件的按钮,如图32-18所示。<br /><br />图 32-18<br />这里使用了System.ServiceProcess.ServiceController类,因此必须引
2010-06-25 15:02:00 3007
原创 开机自动启动程序
开机自动启动程序2008年09月14日 星期日 23:24<br />一、经典的启动——“启动”文件夹<br /> 单击“开始→程序”,你会发现一个“启动”菜单,这就是最经典的Windows启动位置,右击“启动”菜单选择“打开”即可将其打开,如所示,其中的程序和快捷方式都会在系统启动时自动运行。最常见的启动位置如下:<br /> 当前用户:</documentsandsettings/用户名/「开始」菜单/程序/启动><br /> 所有用户:</documentsandsettings/alluser
2010-06-24 16:13:00 1053
原创 如何用C#动态编译、执行代码
在开始之前,先熟悉几个类及部分属性、方法:CSharpCodeProvider、ICodeCompiler、CompilerParameters、CompilerResults、Assembly。一、CSharpCodeProvider 提供对C#代码生成器和代码编译器的实例的访问。如果要动态生成VB代码,可以使用VBCodeProvider。CreateCompiler():获取编译器的实例。二、ICodeCompiler 定义用于调用源代码编译的接口或使用指定编译器的CodeDOM树。每种编
2010-06-24 01:09:00 5311 1
原创 关于Lambda表达式
<br /> Lambda表达式是C#3.0的一种新语法,语法简洁<br /> 为编写匿名方法提供了更简明的函数式的句法.<br /> 我通过一个示例来说明Lambda表达式的原理:<br /> Lambda表达式和匿名方法都来源于委托<br /> 我们来看看委托的使用<br /> 在C#1.0时:<br /> 1using System;<br /> 2using System.Collections.Generic;<br /> 3using System.Linq;<br /> 4usin
2010-06-22 23:54:00 922
原创 C#教程:作为委托的Lambda表达式
作为委托的Lambda表达式从很多方面看, Lambda表达式可以被看成是C# 2中匿名方法的进化. 几乎没有什么匿名方法能做而Lambda表达式不能做的事情, 而Lambda表达式几乎总是能提供更好的可读性且更简洁. 特别的, lambda表达式和匿名方法捕获变量的行为是完全一致的. 在两者多数的显式行为当中并没有存在太多的不同——不过lambda表达式拥有大量的快捷方式, 这在很多常规情况下使得代码更加简洁. 与匿名方法一样, lambda表达式也拥有自己特殊的转换规则——表达式本身的类似并不是
2010-06-22 23:41:00 996
原创 ThickBox 使用小记
<br />应用场景:<br />登陆按钮被点击之后,显示模态框,提示,正在处理(因为通过远程单点认证,因此需要时间较长,所以才用了模态框),一般情况下是正常的,<br /> <br />但此时的登陆框有个选项,可以选择两种不同的登陆方式,并且在两种不登陆方式切换时,页面会回传刷新(登陆框是一个控件),当页面被刷新时,输入数据后,却无法再显示模态框(ThickBox控件),<br /> <br />在经过一天的摸索后发现,是因为在回传之后,原本在控件页面里的JS引用脚本,和样式文件全都不见了,因而导致了无法
2010-06-13 01:12:00 713
原创 ThickBox使用心得
<br />到http://jquery.com/demo/thickbox/下载需要的js及css文件<br />分别保存到目录<br />--js<br />--css<br />--images<br />中,<br />一、在文件的<head></head>中插入<br /><script type="text/javascript" src="js/jquery.js"></script><br /><script type="text/javascript" src="js/thickbox.j
2010-06-10 10:14:00 1019
原创 本地调试WCF程序出现错误:AddressAccessDeniedException: HTTP could not register URL
<br />原因,没权限<br /> <br />这个问题是因为在Vista,server 2008,Win7等操作系统中,http地址是归一个叫做http.sys的核心驱动管理的。当你想http.sys发出请求时,是需要注册这个http命名空间的,这是一个需要特权(管理员权限)的操作。 <br /><br />所以当你使用管理员登陆时,这个异常一般不会发生,当你使用其他用户(哪怕只是管理员组成员)时,就需要“以管理员身份”打开命令提示符窗口,并输入: <br /><br />netsh http add
2010-06-04 08:38:00 3342 1
原创 CSC 命令详解
<br />C#环境变量设置步骤(这样之后打开CMD就可以直接输入CSC命令): 在桌面右击[我的电脑]->[属性]->[高级]->[环境变量] 在下面的系统变量栏点击“新建” 变量名输入“csc” 变量值输入:“C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/”(也许你的机器上.net framework的版本会有所不同,因而后面的文件夹名称v2.0.50727会有不同) 然后在系统变量列表框中双击“Path” 在变量名文本框的最后面加入“;%csc%;”(注意
2010-06-02 16:57:00 8983
原创 WCF 设置超时时间
<br />如果某个方法用时太长,可以在配制里面的<br /> <binding name="Service1Soap" closeTimeout="00:01:00" openTimeout="00:00:05"<br /> receiveTimeout="00:01:01" sendTimeout="00:00:09" allowCookies="false"<br /> bypassProxyOnLocal="false" hostNameComparisonMode="StrongW
2010-06-02 16:53:00 13508
.NET 开发服务用定时器组件
2013-08-02
服务与桌面交互程序(Window2k\xp\03\VISTA\Win7\2008的系统都可以用)
2010-07-02
RTF V 1.7 规范
2010-03-03
Windows常用消息大全
2009-12-01
自定义ListView控件(修正版 绑定 各种Contorl 子类的控件)
2008-12-22
c#资源文件使用方法
2008-11-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人