vb用SendMessage操作剪贴板
作者:admin 日期:2010-05-25
要使用这一技巧,你就需要声明用于剪切、复制和粘贴的常数:
Private Const WM_COPY = &H301
Private Const WM_CUT = &H300
Private Const WM_PASTE = &H302
然后,声明对SendMessage API的调用:
Private Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" (ByValhWnd As Long, _
ByValwMsg As Long, ByValwParam As Long, lParam As Any) As Long
HWnd自变量能够接受消息发送的目的控件的句柄,而wMsg自变量会接受一个表明要被发送的是哪个对象的常数。WParam和lParam自变量被用来把其他信息同消息一起传递,但是不对WM_CUT、WM_COPY或者WM_PASTE使用。
下面是从菜单点击事件调用SendMessage API的代码:
Private Sub mnuCopy_Click()
Call SendMessage(Me.ActiveControl.hwnd, WM_COPY, 0, 0)
End Sub
Private Sub mnuCut_Click()
Call SendMessage(Me.ActiveControl.hwnd, WM_CUT, 0, 0)
End Sub
Private Sub mnuPaste_Click()
Call SendMessage(Me.ActiveControl.hwnd, WM_PASTE, 0, 0)
End Sub
这个技巧能够用于任何实现hWnd属性,并能够响应WM_CUT、WM_COPY和WM_PASTE消息的控件。还应该实现错误处理,以处理不带hWnd属性的控件。
vb用Like比较字符串
作者:admin 日期:2010-05-25
Like运算符可以让你比较两个字符串来判断它们是否匹配,它还支持通配符。例如,星号(*)代表一个或者多个字符,问号(?)代表单个字符,而井号(#)代表单个数字。另外,通过使用左括号和右括号([、]),你可以指定一个用来匹配的字符集合。
下面的代码给出了几种可以使用Like运算符的方法。
If "(800) 555-5555" Like "(###) ###-####"
Then
注释:有效的电话号码
End If
If "1ABCDEF" Like "#[A-Z]*" Then
注释:有效
End If
If "1ABCDEF" Like "#[a-z]*" Then
注释:有效
End If
Like运算符可以简化你的验证有效性逻辑并提高易读性。对比较复杂方式,它也比InStr函数易于使用。
vb取得Windows临时文件的路径
作者:admin 日期:2010-05-25
要获得Windows的临时文件的存放路径,可以使用GetTempPath API函数。以下是该函数的声明:
Private Declare Function GetTempPath Lib "kernel32" Alias_
"GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
“BufferLength”是这个函数的第一个参数,它将指定接受传进来字符串的缓冲区大小。“Buffer”参数用于装载临时文件路径的一个预初始化字串。
调用前,初始化一个(通常长为255)的以null为结尾的字符串,长度为字符长度加1。然后调用这个函数,这个函数的返回值是一个Long型的变量,该返回值将是TEMP路经的真实长度。
Dim lngFolderSize As Long
Dim strFolder As String
Dim lngLength As Long
lngFolderSize = 255
strFolder = String(lngFolderSize + 1, 0)
lngLength = GetTempPath(lngFolderSize, strFolder)
If lngLength > 1 Then
strFolder = Left(strFolder, lngLength)
Else
strFolder = vbNullString
End If
MsgBox strFolder
当你的用户需要确定临时文件目录,并且应用程序将在那里创建临时的工作文件时,这个API函数将十分有用。
VB利用API创建文件目录
作者:admin 日期:2010-05-25
Private Declare Function CreateDirectory Lib "kernel32" Alias "CreateDirectoryA" (ByVal lpPathName As String, lpSecurityAttributes As SECURITY_ATTRIBUTES) As Long
Private Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type
Sub Main()
在C盘创建了"VB API"目录
Call CreateNewDirectory("C:\VB API")
MsgBox "在C盘创建了 VB API 目录"
VB对数据进行加解解密
作者:admin 日期:2010-05-25
VB创建可以输出函数的DLL
作者:admin 日期:2010-05-25
VB中创建的DLL只是COM组件,无法作为输出函数的DLL。今天从朋友哪里搞到一种可以创建输出函数的DLL的方法,欣喜之余,不敢独享,现在把他介绍给大家。
VB编译文件实际上采取了两次编译的方法,首先是调用c2.exe产生OBJ文件,然后调用Link.exe连接。如果在link的时候添加EXPORT选项,实际上是可以输出函数的。但是,在VB的工程选项中将这些屏蔽了。而且过分的是:VB在Build完成后会将OBJ文件删除,这样就无法通过Link来输出函数了。不过我找到一个比较龌鹾的变通的方法,就是先创建一个Exe工程,在Form_Load事件里面写下面的语句:
Private Sub Form_Load()
If (MsgBox("hehe", vbOKCancel) = vbOK) Then
Shell "link2.exe " & Command$
End If
End
End Sub
然后编译为linktemp.exe,接下来将LINK.EXE改名为Link2.exe,将linktemp.exe改名为link.exe。这样在VB调用link.exe时会弹出对话框,处理就会中断。这时就可以有机会将OBJ文件拷贝出来了 J
VB开发、打包、发布ActiveX控件
作者:admin 日期:2010-05-25
广告位