Google [站内搜索]

预览模式: 普通 | 列表

C#正则表达式之分组构造示例

我们常用的分组构造语法为:(子表达式),例如:

string str = "<img src=\"http://www.mzwu.com/01.gif\">图1</img><img src='http://www.mzwu.com/02.gif'>图2</img><img src=http://www.mzwu.com/03.gif>图3</img>";

string pattern = "<img[\\s\\S]*?src=(\"([^\"]*)\"|'([^']*)'|([^>\\s]*))[^>]*?>";

查看更多...

分类:Web编程 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 6245
Button、PictureBox、Label等控件默认BackColor属性值是SystemColors.Control,但在一些自定义界面的窗体中,需要这些控件能和窗体融合,就要将其背景为透明,只要将BackColor属性值设置为Color.Transparent(WEB→Transparent)即可:



下边来看复杂一点的情况,界面上有pictureBox1和pictureBox2,pictureBox2在pictureBox1上边,将pictureBox2的BackColor属性值设置为Color.Transparent后,效果如下:

查看更多...

分类:Win编程 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 8026

C#读取资源文件(Resources.resx)中的内容

平时我们可以将字符串、图像、图标、音频、文件等资源存放在resx文件中,vs会自动生成一个强类型资源类Resources,读取资源文件的内容很简单:

Properties.Resources.资源名称

例如:

查看更多...

分类:Win编程 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 15160

C#移动无标题栏窗体代码

假如隐藏窗体默认标题栏后,在窗体顶部放置一个Panel控件做自定义标题栏,拖动窗体代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;

查看更多...

分类:Win编程 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 4810

[私密日志] 私密日志

该日志是私密日志,只有博主或发布者可以查看!
分类:其他 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 1723

??运算符(C#)

??是一个二元运算符,当左边操作数为null时返回右边操作数,否则返回左边操作数。例如:

2 ?? 1; //结果:2
null ?? 1; //结果:1

查看更多...

分类:Web编程 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 3744

从sis文件中提取UID

在sis打包过程中,经常出现将A.sis包含到B.sis一起打包的情况,这时需要知道A.sis的UID,否则B.sis无法包含A.sis,一个简单的方法是在SISWare中打开A.sis,便可看到UID:



仔细研究下sis文件格式,发现每个sis文件开头16个字节有如下规律:

查看更多...

分类:其他 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 5659

VB获取窗体上的按钮控件并单击示例

例一:自动点击计算器上的个按钮

Module1.bas:
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long

查看更多...

分类:Win编程 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 7755

使用FindWindowEx获取多个窗体示例

下边例子获取所有打开的记事本程序,并写入字符串"mzwu.com":

Module1.bas:
Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

查看更多...

分类:Win编程 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 6608

矛与盾:用VB打造驱动级键盘记录器

信息监控与隐私保护永远是一对矛盾,在对付各种信息窃取软件上,新技术总是层出不穷。本文介绍一种古老的键盘记录器技术,确实很古老,DOS时代人们就在用了,但是现在它仍然很有效,在键盘过滤驱动失效的情况下,它仍然可用。但是兼容性不佳是它的一个问题,特别是在Windows Vista操作系统上,我不能保证它是可用的。不过在可用的情况下,它能记录我所找到的各种带保护的密码框,包括QQ2008的密码框。

在此之前你还可以看看我以前的一篇帖子,上面介绍了一些Windows键盘响应机制的内容,地址是:http://topic.csdn.net/t/20061224/14/5252514.html

现在的计算机键盘除了传统的PS/2键盘之外还有USB键盘,本文只介绍普通的PS/2键盘,因此本文的示例代码也只支持PS/2键盘,对USB键盘无效。我们知道计算机要得到键盘的信息,必须与键盘进行通信。计算机与外设的通信都是依靠I/O操作完成的,键盘也不列外,当键盘上一个键被按下后,键盘就需要发送一个信息到主机。主机怎么知道键盘什么时候发送了信息呢?有两种方式:纶询和中断。纶询就是说主机不停的询问键盘是否有新的信息,这是以前I/O操作最传统的方式。中断则是一种比较先进的方式,不是由主机来不停的询问键盘,而是由键盘主动告诉主机:有新的信息来了,这样主机就会执行一段中断处理程序,来处理键盘的数据。好了,那么Windows是用哪种方式处理键盘的呢?当然肯定是以中断方式的,因为这样主机不必不断纶询设备,大大提高了效率。事实上Windows中有一个键盘中断处理程序,一旦键盘中断产生后,该程序就会被执行,然后将处理后的数据提供给更高层次的程序使用。键盘中断处理程序是Ring0下的一段代码,在它之上还有更高层的键盘驱动程序,和其它更抽象的硬件管理类驱动程序,再往上走,到了Ring3层,也就是用户层,会首先由user32.dll处理,这样硬件事件会被编码为windows消息,这些消息再发给相应的应用程序。了解了这样一个层次关系后,你就可以很容易判断出一个键盘记录器处于哪一个层次,也就能知道它到底能多大程度上准确记录键盘操作而不被欺骗。这样看来,键盘记录器当然是越底层越好,可惜的是,越底层做起来也越难,当然是废话 ^_^  现在我们知道Windows是靠键盘中断来处理输入的,也就是说,所有在Windows上运行的程序要感知到键盘输入,都是靠着那个中断,除非...

查看更多...

分类:Win编程 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 4448