预览模式: 普通 | 列表

vb用SendMessage操作剪贴板

要使用这一技巧,你就需要声明用于剪切、复制和粘贴的常数:

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属性的控件。

Tags: vb

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 4934

vb用Like比较字符串

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函数易于使用。

Tags: vb

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 3657

vb取得Windows临时文件的路径

要获得Windows的临时文件的存放路径,可以使用GetTempPath API函数。以下是该函数的声明:

Private Declare Function GetTempPath Lib "kernel32" Alias_

"GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long



  调用前,初始化一个(通常长为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函数将十分有用。

Tags: vb

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 3228

VB利用API创建文件目录

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 目录"

查看更多...

Tags: vb

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 3279

VB对数据进行加解解密

 

  简易加解密算法要求:

  1、 算法不宜过于复杂,且具有一定的保密性

  2、 对于高级语言很容易能实现

查看更多...

Tags: vb

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 2629

VB创建可以输出函数的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

查看更多...

Tags: vb

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 2369

VB开发、打包、发布ActiveX控件

     1、创建一个ActiveX Control的项目

     2、绘制ActiveX控件的操作界面,并且编写代码

     3、特别注意:在项目的属性上的Make页,有一个Version Number区域,需要你写当前控件
        的版本号,这个地方和自动下载有密切关系!当你远端的Web浏览器检查到本机的控件
        版本号和服务器上不一样的时候,浏览器就会自动从服务器下载新版本控件进行安装,
        所以你编译的新版本控件一定要改版本号!否则可能导致远程无法更新。

查看更多...

Tags: vb

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 6713

 广告位

↑返回顶部↑