不错呦!smile@林凯西,确保“准备文件”中的几个文件都有安装,S...您好,看了您这篇帖子觉得很有帮助。但是有个问题想请...我的修改过了怎么还被恶意注册呢 @jjjjiiii 用PJ快9年了,主要是A...PJ3啊,貌似很少有人用PJ了,现在不是WP就是z...@332347365,我当时接入时错误码没有-10...楼主,ChkValue值应为-103是什么意思呢?...大哥 你最近能看到我发的信息,请跟我联系,我有个制...
VB获取窗体上的按钮控件并单击示例
编辑:dnawo 日期:2009-09-03
例一:自动点击计算器上的个按钮
Module1.bas:
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
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
使用FindWindowEx获取多个窗体示例
编辑:dnawo 日期:2009-09-02
下边例子获取所有打开的记事本程序,并写入字符串"mzwu.com":
Module1.bas:
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
Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
矛与盾:用VB打造驱动级键盘记录器
编辑:dnawo 日期:2009-09-02
信息监控与隐私保护永远是一对矛盾,在对付各种信息窃取软件上,新技术总是层出不穷。本文介绍一种古老的键盘记录器技术,确实很古老,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上运行的程序要感知到键盘输入,都是靠着那个中断,除非...
在此之前你还可以看看我以前的一篇帖子,上面介绍了一些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上运行的程序要感知到键盘输入,都是靠着那个中断,除非...
VB模拟键盘输入的N种方法
编辑:dnawo 日期:2009-09-02
键盘是我们使用计算机的一个很重要的输入设备了,即使在鼠标大行其道的今天,很多程序依然离不开键盘来操作。但是有时候,一些重复性的,很繁琐的键盘操作总会让人疲惫,于是就有了用程序来代替人们按键的方法,这样可以把很多重复性的键盘操作交给程序来模拟,省了很多精力,按键精灵就是这样的一个软件。那么我们怎样才能用VB来写一个程序,达到与按键精灵类似的功能呢?那就让我们来先了解一下windows中响应键盘事件的机制。
当用户按下键盘上的一个键时,键盘内的芯片会检测到这个动作,并把这个信号传送到计算机。如何区别是哪一个键被按下了呢?键盘上的所有按键都有一个编码,称作键盘扫描码。当你按下一个键时,这个键的扫描码就被传给系统。扫描码是跟具体的硬件相关的,同一个键,在不同键盘上的扫描码有可能不同。键盘控制器就是将这个扫描码传给计算机,然后交给键盘驱动程序。键盘驱动程序会完成相关的工作,并把这个扫描码转换为键盘虚拟码。什么是虚拟码呢?因为扫描码与硬件相关,不具有通用性,为了统一键盘上所有键的编码,于是就提出了虚拟码概念。无论什么键盘,同一个按键的虚拟码总是相同的,这样程序就可以识别了。简单点说,虚拟码就是我们经常可以看到的像VK_A,VK_B这样的常数,比如键A的虚拟码是65,写成16进制就是&H41,注意,人们经常用16进制来表示虚拟码。当键盘驱动程序把扫描码转换为虚拟码后,会把这个键盘操作的扫描码和虚拟码还有其它信息一起传递给操作系统。然后操作系统则会把这些信息封装在一个消息中,并把这个键盘消息插入到消息列队。最后,要是不出意外的话,这个键盘消息最终会被送到当前的活动窗口那里,活动窗口所在的应用程序接收到这个消息后,就知道键盘上哪个键被按下,也就可以决定该作出什么响应给用户了。这个过程可以简单的如下表示:
用户按下按键-----键盘驱动程序将此事件传递给操作系统-----操作系统将键盘事件插入消息队列-----键盘消息被发送到当前活动窗口
当用户按下键盘上的一个键时,键盘内的芯片会检测到这个动作,并把这个信号传送到计算机。如何区别是哪一个键被按下了呢?键盘上的所有按键都有一个编码,称作键盘扫描码。当你按下一个键时,这个键的扫描码就被传给系统。扫描码是跟具体的硬件相关的,同一个键,在不同键盘上的扫描码有可能不同。键盘控制器就是将这个扫描码传给计算机,然后交给键盘驱动程序。键盘驱动程序会完成相关的工作,并把这个扫描码转换为键盘虚拟码。什么是虚拟码呢?因为扫描码与硬件相关,不具有通用性,为了统一键盘上所有键的编码,于是就提出了虚拟码概念。无论什么键盘,同一个按键的虚拟码总是相同的,这样程序就可以识别了。简单点说,虚拟码就是我们经常可以看到的像VK_A,VK_B这样的常数,比如键A的虚拟码是65,写成16进制就是&H41,注意,人们经常用16进制来表示虚拟码。当键盘驱动程序把扫描码转换为虚拟码后,会把这个键盘操作的扫描码和虚拟码还有其它信息一起传递给操作系统。然后操作系统则会把这些信息封装在一个消息中,并把这个键盘消息插入到消息列队。最后,要是不出意外的话,这个键盘消息最终会被送到当前的活动窗口那里,活动窗口所在的应用程序接收到这个消息后,就知道键盘上哪个键被按下,也就可以决定该作出什么响应给用户了。这个过程可以简单的如下表示:
用户按下按键-----键盘驱动程序将此事件传递给操作系统-----操作系统将键盘事件插入消息队列-----键盘消息被发送到当前活动窗口
比较VB.NET的And和C#的&&
编辑:dnawo 日期:2009-09-01
什么是钩子函数
编辑:dnawo 日期:2009-08-29
C#键盘按键监视
编辑:dnawo 日期:2009-08-28
C#设置全局热键
编辑:dnawo 日期:2009-08-28
GIF文件格式
编辑:dnawo 日期:2009-08-28
6.2.1 简介
GIF(Graphics Interchange Format)是CompuServe公司开发的图像文件存储格式,1987年开发的GIF文件格式版本号是GIF87a,1989年进行了扩充,扩充后的版本号定义为GIF89a。
GFI图像文件以数据块(block)为单位来存储图像的相关信息。一个GIF文件由表示图形/图像的数据块、数据子块以及显示图形/图像的控制信息块组成,称为GIF数据流(Data Stream)。数据流中的所有控制信息块和数据块都必须在文件头(Header)和文件结束块(Trailer)之间。
GIF(Graphics Interchange Format)是CompuServe公司开发的图像文件存储格式,1987年开发的GIF文件格式版本号是GIF87a,1989年进行了扩充,扩充后的版本号定义为GIF89a。
GFI图像文件以数据块(block)为单位来存储图像的相关信息。一个GIF文件由表示图形/图像的数据块、数据子块以及显示图形/图像的控制信息块组成,称为GIF数据流(Data Stream)。数据流中的所有控制信息块和数据块都必须在文件头(Header)和文件结束块(Trailer)之间。