admin 管理员组文章数量: 1086019
2024年3月27日发(作者:shelly歌曲夏洛克)
vba函数:VBA中API 函数集锦
疯狂代码 / ĵ:BlogDigest/
转自: //articles/I ;函数在 ;VB ;中得到了充分的运
用,同时也让无数 ;VB ;爱好者沉溺于其中。幸运的是 ;office ;使用的 ;VBA ;也能很好的引入 ;API ;函数1、如何
让窗体总在最前面? *API函数声明
Declare ;Function ;SetWindowPos ;Lib ;"user32" ;( ;ByVal ;hwnd ;As ;Long, ;ByVal ;hWndInsertAfter ;As
;Long, ;ByVal ;x ;As ;Long, ;ByVal ;y ;As ;Long, ;ByVal ;cx ;As ;Long, ;ByVal ;cy ;As ;Long, ;ByVal ;wFlags
;As ;Long) ;As ;Long
注释:常量声明
Private ;Const ;SWP_NOSIZE ;= ;&H1
Private ;Const ;SWP_NOMOVE ;= ;&H2
Private ;Const ;HWND_TOPMOST ;= ;-1
Private ;Const ;HWND_NOTOPMOST ;= ;-2
注释: ;在某个form里写:
SetWindowPos ;,WND_TOPMOST,0,0,0,0, ;SWP_NOMOVE ;注释:或下面
SetWindowPos ;,WND_TOPMOST,0,0,0,0, ;SWP_NOSIZE 2、使用API函数sendmessage,获得
光标所在行和列。 Sub ;getcaretpos(byval ; TextHwnd&,LineNo&,ColNo&) ;
注释:TextHwnd为TextBox的hWnd属性值, LineNo为所在行数,ColNo为列数 ;
dim ;I&,j&,k& ;注释:获取起始位置到光标所在位置字节数
I=SendMessage(TextHwnd,&HB0&,0,0) ;j=I/2^16 ;注释:确定所在行
LineNo=SendMessage(TextHwnd,&HC9&,j,0)+1 ;
注释:确定所在列
k=SendMessage(TextHwnd,&HBB&,-1,0)
ColNo=j-k+1 ;
End ;sub ; 3、如何以某种颜色填充某区域? *API函数声明
Private ;Declare ;Sub ;FloodFill ;Lib ;"gdi32" ;_ ;(ByVal ;Hdc ;As ;Long, ;ByVal ;X ;As ;Long, ;ByVal ;Y ;As ;_
;Long, ;ByVal ;crColor ;As ;Long
注释:设(fillx,filly)为此区域内任一点
注释:Color为某种颜色
FloodFill ;, ;fillx, ;filly,Color 4、如何关闭计算机?
!请注意你WINDOWS的版本 *API函数声明 ;
Declare ;Function ;ExitWindows ;Lib ;"User" ;(ByVal ;dwReturnCode ;As ;Long, ;ByVal ;wReserved ;As
;Integer) ;As ;Integer
注释:执行 ;
Dim ;DUMMY ;
DUMMY=ExitWindows(0,0) ; 强制关闭计算机:用API函数ExitWindowsEx可以实现强制关机,即便是您的
应用程序尚未保存文件。 ;
Private ;Declare ;Function ;ExitWindowsEx ;Lib ;"user32" ;(ByVal ;uFlags ;As ;Long, ;ByVal ;dwReserved
;As ;Long) ;As ;Long
Const ;EWX_SHUTDOWN ;= ;1
Const ;EWX_LOGOFF ;= ;0
Const ;EWX_REBOOT ;= ;2 ;
Const ;EWX_FORCE ;= ;4
Private ;Sub ;Command1_Click()
Dim ;a
a ;= ;ExitWindowsEx(EWX_LOGOFF ;or ;EWX_FORCE ;or ;EWX_SHUTDOWN, ;0)
End ;Sub ;
如果将
a ;= ;ExitWindowsEx(EWX_LOGOFF ;or ;EWX_FORCE ;or ;EWX_SHUTDOWN, ;0)
改换为
a ;= ;ExitWindowsEx(EWX_LOGOFF ;or ;EWX_REBOOT, ;0)
即可实现强制重启计算机! 5、如何获取Windows目录和System目录? ; 注释:复制以下代码到一模块中
Public ;Declare ;Function ;GetWindowsDirectory ;Lib ;"kernel32" ;Alias ;"GetWindowsDirectoryA"
;(ByVal ;lpBuffer ;As ;String, ;ByVal ;nSize ;As ;Long) ;As ;Long
Public ;Declare ;Function ;GetSystemDirectory ;Lib ;"kernel32" ;Alias ;"GetSystemDirectoryA" ;(ByVal
;lpBuffer ;As ;String, ;ByVal ;nSize ;As ;Long) ;As ;Long
注释:在程序中调用
Dim ;WindowsDirectory ;As ;String, ;SystemDirectory ;As ;String, ;x ;As ;Long
WindowsDirectory ;= ;Space(255)
SystemDirectory ;= ;Space(255) ;
x ;= ;GetWindowsDirectory(WindowsDirectory, ;255)
x ;= ;GetSystemDirectory(SystemDirectory, ;255)
MsgBox ;"Windows的安装目录是:" ;+ ;WindowsDirectory+",系统目录是:" ;+ ;SystemDirectory 6、如何建
立简单的超级连接? *API函数声明
Private ;Declare ;Function ;ShellExecute ;Lib ;"" ;Alias ;"ShellExecute ;A" ;(ByVal ;hWnd ;As
;Long, ;ByVal ;lpOperation ;As ;String, ;ByVal ;lpFile ;As ;String, ;ByVal ;lpParameters ;As ;String, ;ByVal
;lpDirectory ;As ;String, ;ByVal ;nShowCmd ;A ;s ;Long) ;As ;Long
注释:打开某个网址
ShellExecute ;0, ;"open", ;"", ;vbNullString, ;vbNullString, ;3
注释:给某个信箱发电子邮件 ;
ShellExecute ;hwnd, ;"open", ;"mailto:sst95@", ;vbNullString, ;vbNullString, ;0 ; 7、如何得知
TextBox中文字所有的行数? *API函数声明
Declare ;Function ;SendMessage ;Lib ;"user32" ;Alias ;"SendMessageA" ;(ByVal ;hwnd ;As ;Long, ;ByVal
版权声明:本文标题:vba api 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1711554979a599741.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论