
vb
文章平均质量分 61
yeuegi
这个作者很懒,什么都没留下…
展开
-
VB 读取《武林外传》角色名的源码
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long, lpdwProcessId As Long) As LongPrivate Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClass...原创 2011-03-09 10:37:46 · 273 阅读 · 0 评论 -
VB 中调用API NTOpenProcess
Option Explicit'ProcessHandle 为输出 其余为输入Private Declare Function NtOpenProcess Lib "ntdll.dll" ( _ByRef ProcessHandle As Long, _ByVal AccessMask As Long, _ByRef ObjectAttributes As OBJECT_ATTRIBUTES...原创 2011-03-09 10:47:08 · 257 阅读 · 0 评论 -
VB 用汇编进行快速CRC较验
因为利用了汇编代码,速度特别快,有空可以测试测试.新建一个EXE工程,加入两个TEXTBOX控件,默认名称,一个BUTTON控件即可.Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, _ByVal hwnd As Long, ...原创 2011-03-09 10:47:36 · 190 阅读 · 0 评论 -
VB 进程死亡的自动复活(进程结束再自动运行)
前两天看了Delphi版面精华区中的《进程死亡的自动复活》一文,觉得作者的思路很不错,利用api来监视进程的活动,当被销毁时就自动再创建进程。仔细推敲之后,发觉其实用vb也是可以做到的。于是花了半天的时间写了以下的程序,实现了使用WaitForSingleObject API来监视被创建的进程的活动,一旦返回除 time out 之外的消息就自动创建新的进程。以下为其实现代码。在 win200...原创 2011-03-09 10:48:27 · 325 阅读 · 0 评论 -
VB Shell 实现压缩和解压缩 (Zip 或 Rar)
Private Sub ZipOrRar()'将C盘的test文件夹压缩为test.rar文件Shell App.Path + "\WinRar.exe M C:\test.rar C:\test"End SubPrivate Sub UnZipOrRar()'将test.rar解压缩在C盘下Shell App.Path + "\WinRar.exe X C:\test.rar C:\"End S...原创 2011-03-09 11:07:01 · 902 阅读 · 0 评论 -
子类化 - zAddressOf
'Return the address of the specified ordinal method on the oCallback object, 1 = last private method, 2 = second last private method, etcPrivate Function zAddressOf(ByVal oCallback As Object, ByVal n...原创 2011-03-09 11:07:32 · 138 阅读 · 0 评论 -
VB 长整型和字节数组的转换问题 (Long<>Byte)
用到的API声明:Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)Long2ByteDim TempLng As LongDim TempBytes(0 To 3) As ByteTemp...原创 2011-03-09 11:08:02 · 1283 阅读 · 0 评论 -
VB 字节数组和字符串的转换问题 (String<>Byte)
一、 前言 数据类型转换在编程中经常用到,VB6提供了一整套类型转换的函数。但是,在进行类型转换时,有时候仅仅依靠VB提供的函数是不能达到自己的目的的。因此,需要考虑用其他的方法来完成数据类型转换。本文仅谈VB6中字节数组和字符串的相互转换过程中应注意的问题及其解决办法。 在Visual Basic中使用Byte数组主要是为了32位API函数的参数传递和函数的返回。在32位的Visua...原创 2011-03-09 11:08:35 · 354 阅读 · 0 评论 -
VB为自己的程序设定消息(可接收处理)
用API函数 SetWindowLong 指定处理消息的窗口过程为自定义的函数 WindowProc,捕获消息ID为 WM_USER+1 的自定义消息或系统消息。并且,为了保证窗口能正确的响应消息,需要保存原来默认的窗口过程并在自定义函数WindowProc中调用。如下例,在按钮事件中发送自定义消息,WindowProc 捕获了窗口大小变化的系统定义消息和用户自定义的消息并显示用户自定义的消息...原创 2011-03-09 11:09:13 · 166 阅读 · 0 评论 -
VB 获取进程的启动用户
Private Const WTS_CURRENT_SERVER_HANDLE = 0&Private Declare Function WTSEnumerateProcesses _Lib "wtsapi32.dll" Alias "WTSEnumerateProcessesA" _(ByVal hServer As Long, ByVal Reserved As Long, _B...原创 2011-03-09 11:09:49 · 304 阅读 · 0 评论 -
VB 中运用 TimeSetEvent 代替 Timer 控件
窗体代码:Option ExplicitPrivate Declare Function timeKillEvent Lib "winmm.dll" (ByVal uID As Long) As LongPrivate Declare Function timeSetEvent Lib "winmm.dll" (ByVal uDelay As Long, ByVal uResolutio...原创 2011-03-09 10:46:40 · 747 阅读 · 0 评论 -
VB 中自定义弹出提示框的位置
窗体代码:Private Sub Command1_Click()Dim hInst As LongDim Thread As Long'Set up the CBT hookhInst = GetWindowLong(Me.hWnd, GWL_HINSTANCE)Thread = GetCurrentThreadId()hHook = SetWindowsHookEx(WH_CBT, ...原创 2011-03-09 10:46:09 · 407 阅读 · 0 评论 -
VB 用API函数RegisterHotKey注册系统热键
使用RegisterHotkey的概念是,它会定义一组或单个按键的组合,不管在哪个程序之中,按下程序窗体有注册的HotKey时,系统会传送WM_HOTKEY 的讯息给待接收该讯息的程序窗体,而该程序窗体接收到WM_HOTKEY时,便可知道有本身Thread所定义的HotKey被按下,於是可以从wParam, lParam来得知是哪一组HotKey被按下,从而执行相应的操作.函数声明的定义如下:Re...原创 2011-03-09 10:39:34 · 941 阅读 · 0 评论 -
VB 定义全局(热键)快捷键
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer '声明Function GetKey() As StringDim AddKey As StringKeyResult = GetAsyncKeyState(32) '回车键If KeyResult = -32767 T...原创 2011-03-09 10:40:06 · 1180 阅读 · 1 评论 -
VB 在NT系统中安装服务
mServicesControl.bas'UNKNOWN'**************************************' Name: NT Service Module (Run EXE as Se' rvice)' Descrīption:Use this modified code fro' m the MSDN CDs to add your executable ...原创 2011-03-09 10:40:46 · 205 阅读 · 0 评论 -
VB 用WH_KEYBOARD_LL实现全局热键的例子
Option ExplicitPrivate Declare Function SetWindowsHookEx _Lib "user32" _Alias "SetWindowsHookExW" (ByVal idHook As Long, _ByVal lpfn As Long, _ByVal hmod As Long, _ByVal dwThreadId As Long) As Long...原创 2011-03-09 10:41:29 · 788 阅读 · 0 评论 -
VB 不用DLL也 Hook WH_SHELL
egisterShellHookWindow Function--------------------------------------------------------------------------------Registers a specified Shell window to receive certain messages for events or notification...原创 2011-03-09 10:42:17 · 242 阅读 · 0 评论 -
VB 动态调用 MessageBoxA 的源代码
'嘿,够简单吧!下面是动态调用MessageBoxA的源代码,上面的步骤被封装到RunDll32函数中,可放到模块(CallAPIbyName.bas)中:Dim s1() As ByteDim s2() As ByteDim ret As LongDim hProc As LongDim hModule As LongSub t2()Const hWnd = 0s1 = StrConv("...原创 2011-03-09 10:42:43 · 407 阅读 · 0 评论 -
VB 对 CallApiByName 的一点改进
'枚举Dim libName As StringPublic Enum DLL_Enumkernel32_DLL = 0 'Windows 32核心API库user32_DLL = 1 '用户接口库gdi32_DLL = 2 '图形设备接口API库winmm_DLL = 3 'Windows多媒体APIShell32_DLL = 4 '32位Shell API库winspool_DRV = ...原创 2011-03-09 10:43:09 · 148 阅读 · 0 评论 -
VB 动态调用外部函数的方法
VB可以用Declare声明来调用标准DLL的外部函数,但是其局限性也很明显:利用Declare我们只能载入在设计时通过Lib和Alias字句指定的函数指针!而不能在运行时指定由我们自己动态载入的函数指针),不能用Declare语句来调用任意的函数指针。当我们想动态调用外部函数的时候,就必须考虑采用其他的辅助方法,来完成这个任务了。 在文章《VB真是想不到系列之三:VB指针葵花宝典之函数指针》、《...原创 2011-03-09 10:43:41 · 685 阅读 · 0 评论 -
Windows 消息大全 (系统编程必备)
消息,就是指Windows发出的一个通知,告诉应用程序某个事情发生了。例如,单击鼠标、改变窗口尺寸、按下键盘上的一个键都会使Windows发送一个消息给应用程序。消息本身是作为一个记录传递给应用程序的,这个记录中包含了消息的类型以及其他信息。例如,对于单击鼠标所产生的消息来说,这个记录中包含了单击鼠标时的坐标。这个记录类型叫做TMsg。它在Windows单元中是这样声明的:typeTMsg = p...原创 2011-03-09 10:44:33 · 171 阅读 · 0 评论 -
VB 调用 Jmail 组件发邮件
Option Explicit Sub SendMail(Optional ByVal sSubject As String, Optional ByVal sBody As String, Optional ByVal sFileName As String) Dim Jmail Set Jmail = CreateObject( "jmail.Message ") If sFileNam...原创 2011-03-09 13:12:02 · 812 阅读 · 0 评论 -
MAPI 控件多收件人/多附件
多收件人frmMain.mapMess.ComposefrmMain.mapMess.AddressResolveUI = FalsefrmMain.mapMess.MsgSubject = "This is a subject."frmMain.mapMess.MsgNoteText = "This is a body."frmMain.mapMess.RecipIndex = 0fr...原创 2011-03-09 13:12:31 · 195 阅读 · 0 评论 -
VB 模拟鼠标滚轮事件
Option Explicit Public Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long) Public Const MOUSEEVENTF_A...原创 2011-03-09 13:13:01 · 1560 阅读 · 0 评论 -
VB 的一组字符串转换函数
Public Function chrConvert(strInput As String, Method As Integer) As String ' Method = 0 for Text to vbChr ' Method = 1 for Text to HTML ' Method = 2 for Text to Hex ' Method = 3 for vbChr to Text ...原创 2011-03-09 13:20:03 · 330 阅读 · 0 评论 -
VB 获取快捷方式原文件路径
'此方法不需要引用IShellLink.Private Type FILETIMEdwLowDateTime As LongdwHighDateTime As LongEnd TypePrivate Type LNKHEADdwID As LongdwGUID(3) As LongdwFlags As LongdwFileAttributes As LongdwCreationTime As...原创 2011-03-09 13:20:28 · 309 阅读 · 0 评论 -
VB 建立快捷方式
Private Declare Function fCreateShellLink Lib "VB5STKIT.DLL" (ByVal lpstrFolderName As String, ByVal lpstrLinkName As String, ByVal lpstrLinkPath As String, ByVal lpstrLinkArgs As String) As LongSu...原创 2011-03-09 13:20:53 · 187 阅读 · 0 评论 -
VB 将数据快速导入EXCEL
Public Function ToExcel()On Error GoTo ErrorHandler Dim exlapp As Excel.ApplicationDim exlbook As Excel.WorkbookSet exlapp = CreateObject("Excel.Application")Set exlbook = exlapp.Workbooks.Addexlap...原创 2011-03-09 13:21:20 · 1005 阅读 · 0 评论 -
VB 获取/设置屏幕分辨率
Option ExplicitPrivate Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As LongConst SM_CXSCREEN = 0Const SM_CYSCREEN = 1Private Declare Function EnumDisplaySettings Lib "user3...原创 2011-03-09 13:21:49 · 898 阅读 · 0 评论 -
拦截 VB TextBox 双击消息
我们都知道在VB中TextBox默认是没有双击消息过程的(也就是双击事件,单击事件是有的.),那么看看本文是怎么实现TextBox双击消息的吧。Option ExplicitPublic Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex ...原创 2011-03-09 13:22:18 · 212 阅读 · 0 评论 -
VB 控制音量
'按钮一是音量增加,按钮二是音量减少,按钮三是静音切换.Option ExplicitPrivate Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" ( _ByVal hwnd As Long, _ByVal wMsg As Long, _ByVal wParam As Long, _ByVal lPara...原创 2011-03-09 13:22:44 · 398 阅读 · 0 评论 -
VB 纯代码实现Timer控件的功能
本博客有一篇类似的文章《VB 中运用 TimeSetEvent 代替 Timer 控件》与这篇不同。本篇展示了另外两种方法,具体如下文所示。方法1: 用这个类可以替代VB自带的Timer控件,这样就不用在无窗体的项目中仅为了使用Timer而多加一个窗体了。我一般用在ActiveX exe中用来分离系统控制权,用Timer的好处是避免控制权死锁,这样也就模拟出了多线程(实际上是多进程),能给用户更...原创 2011-03-09 13:23:19 · 2571 阅读 · 0 评论 -
VB 列出SQL数据库中所有表及字段信息
程序思想:用Select name From sysobjects Where xtype = 'u'得到所有表,然后循环打开表,根据 Rs_Colums.Fields(I).Name 得到字段名, FieldType(Rs_Colums.Fields(I).Type) 得到字段类型, Rs_Colums.Fields(I).DefinedSize 宽度 由于Rs_Colums.Fields(...原创 2011-03-09 13:24:09 · 877 阅读 · 0 评论 -
VB 在浏览目录时指定初始目录
'VB也可以使用CallBack,下面是一个例子: '先把下面的代码放入BAS模块: Option Explicit 'common to both methods Public Type BROWSEINFO hOwner As Long pidlRoot As Long pszDisplayName As String lpszTitle As String ulFlags As Lon...原创 2011-03-09 13:19:34 · 440 阅读 · 0 评论 -
VB 获得鼠标滚轮的事件
'窗体代码Private Sub Form_Load()HookMouse Me.hwndEnd SubPrivate Sub Form_Unload(Cancel As Integer)UnHookMouse Me.hwndEnd Sub '模块代码'***********************************************************...原创 2011-03-09 13:18:57 · 2033 阅读 · 1 评论 -
VB 实现保存 Direct3D 游戏截图
Written By Microsoft MVP: Eric DeBrosseIn this article, I will explain how to save a screen shot from a Visual Basic 6 Direct3D8 application. This could be difficult to figure out on your own, since t...原创 2011-03-09 13:13:29 · 296 阅读 · 0 评论 -
VB 最简单的WAV声音或音乐文件播放的代码
'最简单的WAV声音或音乐文件播放的代码'API声明Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" _(ByVal lpszSoundName As String, ByVal uFlags As Long) As Long'常量Const SND_SYNC = &H0Const ...原创 2011-03-09 13:14:39 · 1377 阅读 · 1 评论 -
Shell 调用程序后等待该程序结束后返回继续
方法1:Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As...原创 2011-03-09 13:15:10 · 487 阅读 · 0 评论 -
VB 在EXPLORER进程崩溃之后重建托盘图标
重点为:向系统注册“TaskbarCreated”消息Public Function Wndproc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongIf Msg = lngMsgBarRester Then '重建托盘图标FrmMain.cTray.InT...原创 2011-03-09 13:15:39 · 240 阅读 · 0 评论 -
VB Filter 函数用法
例子1:Dim aa(10) As StringDim bbDim i As IntegerFor i = 0 To 9aa(i) = "aa" + Str(i)Nextbb = Filter(aa, "aa")Label1.Caption = bb(0)Label2.Caption = bb(1)Label3.Caption = bb(2)'这时Label1显示aa 0,Label2显示aa 1...原创 2011-03-09 13:16:12 · 2868 阅读 · 0 评论