帮我改个VB代码,如何显示二进制的内容为字母或中文
VB 拦截 API 的实例源代码
http://down.liehuo.net/html/26462.html这里下载页为《VB 拦截 API 的实例源代码》
测试拦截记事本这个按钮改下代码
lHookIndex = .Hook("notepad.exe", "comdlg32.dll", "GetOpenFileNameW")
这句是用来在打开一个文件时HOOK,能显示2个,4个之类的字节,但是有什么办法转换为文件名呢?
Private Sub Command4_Click()
Static lHookIndex As Long, lHookIndex2 As Long
If Command4.Caption = "终止拦截" Then
Command4.Caption = "测试拦截"
m_oAPIHooker.Unhook lHookIndex
' m_oAPIHooker.Unhook lHookIndex2
Set m_oAPIHooker = Nothing
Else
Command4.Caption = "终止拦截"
'拦截记事本函数
Set m_oAPIHooker = New CVBAPIHooker
With m_oAPIHooker
Dim pid
GetWindowThreadProcessId FindWindow(vbNullString, "无标题 - 记事本"), pid
.SetTargetTo pid
'lHookIndex = .Hook("notepad.exe", "KERNEL32.dll", "OpenProcess")
' lHookIndex2 = .Hook("notepad.exe", "comdlg32.dll", "ChooseFontW")
' lHookIndex = .Hook("notepad.exe", "user32.dll", "MessageBoxW")
lHookIndex = .Hook("notepad.exe", "comdlg32.dll", "GetOpenFileNameW")
Debug.Print "lHookIndex=" & lHookIndex
End With
End If
End Sub
StrConv 函数
返回按指定类型转换的 Variant (String)。
语法
StrConv(string, conversion, LCID)
StrConv 函数的语法有下面的命名参数:
部分 说明
string 必要参数。要转换的字符串表达式。
conversion 必要参数。Integer。其值的和决定转换的类型。
LCID 可选的。如果与系统LocaleID不同,则为LocaleID(系统LocaleID为缺省值。)
设置值
conversion 参数的设置值为:
常数 值 说明
vbUpperCase 1 将字符串文字转成大写。
vbLowerCase 2 将字符串文字转成小写。
vbProperCase 3 将字符串中每个字的开头字母转成大写。
vbWide* 4* 将字符串中单字节字符转成双字节字符。
vbNarrow* 8* 将字符串中双字节字符转成单字节字符。
vbKatakana** 16** 将字符串中平假名字符转成片假名字符。
vbHiragana** 32** 将字符串中片假名字符转成平假名字符。
vbUnicode 64 根据系统的缺省码页将字符串转成 Unicode。
vbFromUnicode 128 将字符串由 Unicode 转成系统的缺省码页。
*应用到远东国别。
**仅应用到日本。
注意 这些常数是由 VBA 指定的。可以在程序中使用它们来替换真正的值。其中大部分是可以组合的,例如 vbUpperCase + vbWide,互斥的常数不能组合,例如 vbUnicode + vbFromUnicode。当在不适用的国别使用常数 vbWide、vbNarrow、vbKatakana,和 vbHiragana 时,就会导致运行时错误。
下面是一些一般情况下的有效分界符:Null (Chr$(0)),水平制表符 (Chr$(9)),换行 (Chr$(10)),垂直制表符 (Chr$(11)),换页 (Chr$(12)) ,回车 (Chr$(13)),空白 (SBCS) (Chr$(32))。在 DBCS中,空白的实际值会随国家/地区而不同。
说明
在把 ANSI 格式的 Byte 数组转换为字符串时,您应该使用 StrConv 函数。当您转换 Unicode 格式的这种数组时,使用赋值语句。