VB代码集.docx
- 文档编号:10593060
- 上传时间:2023-02-21
- 格式:DOCX
- 页数:16
- 大小:22.56KB
VB代码集.docx
《VB代码集.docx》由会员分享,可在线阅读,更多相关《VB代码集.docx(16页珍藏版)》请在冰豆网上搜索。
VB代码集
关闭指定的程序
要做到像TaskManager一样,可以关闭指定的程序,方法如下:
在声明区中放入以下声明:
(16位 改成win31API)
DeclareFunctionFindWindowLib“user32″Alias“FindWindowA”(ByVallpClassNameAsString,ByVallpWindowNameAsString)AsLong
DeclareFunctionPostMessageLib“user32″Alias“PostMessageA”(ByValhwndAsLong,ByValwMsgAsLong,ByValwParamAsLong,lParamAsAny)AsLong
PublicConstWM_CLOSE=&H10
以下之范例示范如何关闭一个视窗标题(Caption)为【小算盘】的程序:
DimwinHwndAsLong
DimRetValAsLong
winHwnd=FindWindow(vbNullString,“小算盘”)
Debug.PrintwinHwnd
IfwinHwnd<>0Then
RetVal=PostMessage(winHwnd,WM_CLOSE,0&,0&)
IfRetVal=0Then
MsgBox“Errorpostingmessage.”
EndIf
Else
MsgBox“并未开启小算盘程序.”
EndIf
////////////////////////////////////////////////////////////////////////////////////
如何隐藏及再显示鼠标
很简单,只用到了一个ShowCursorAPI,参数也很简单,只有一个bShow,设定值如下:
True:
显示鼠标/False:
隐藏鼠标
DeclareFunctionShowCursorLib“user32″Alias“ShowCursor”(ByValbShowAsLong)AsLong
////////////////////////////////////////////////////////////////////////////////////
如何从您的应程序中结束Windows重开机?
很多软件在Setup完之后都会自动关机重开机,以便让某些设定值可以生效,其实这个功能很简单,只要几行指令就可以做到了!
关键就是要使用ExitWindowsEx这个API,这个API只有二个参数,第一个参数是一个Flag,目的是要告诉Windows要以什么方式关机,在下面的声明中会列出可用的Flag常数值,至于第二个参数则是一个保留值,只要设定成0就可以了。
很重要的一点是:
如果您想要让关机动作更顺利,记得要Unload您的程序!
‘在声明区中(BasModule/FormModule)加入以下声明:
PublicConstEWX_LOGOFF=0‘这四个常数值可以并用
PublicConstEWX_SHUTDOWN=1
PublicConstEWX_REBOOT=2
PublicConstEWX_FORCE=4
DeclareFunctionExitWindowsExLib“user32″Alias“ExitWindowsEx”(ByValuFlagsAsLong,ByValdwReservedAsLong)AsLong
‘实例:
如果您想强迫关机重开机,程序码如下:
ret=ExitWindowsEx(EWX_FORCEorEWX_REBOOT,0)
////////////////////////////////////////////////////////////////////////////////////
如何用VB启动其他程序或开启各类文件?
要在VB中启动其他程序或开启各类文件,最简单的方法就是使用Shell函数,例如:
要开启C:
Test.txt这个文字文件,则要启动记事本来开启这个文件案,程序如下:
DimRetValAsLong
RetVal=Shell(”C:
WindowsNotepad.exeC:
Test.txt”,3)‘3代表视窗会最大化,并具有驻点,细节请查Help
以上的语法虽然很简单,但有一个风险,若是我们不知道开启文件的执行文件位置,则程序便会有错误产生,尤其一般软件在安装的时候都可以让使用者自行选择安装目录,所以执行文件的路径不能写死在程序中,要解决这个问题,就是在注册文件中找到该副文件名之启动程序位置,再放入Shell中。
但是以上的作法必须熟悉注册文件,而且必须使用WindowsAPI来Call(注册文件的存取以后会有专文来说明),如果您对注册文件的存取及API的使用都很纯熟的话,当然没问题,但是有些人对于注册文件会有畏惧,这时候,您可以使用下面的方法:
Shell(”StartC:
Test.txt”)
您完全不用知道这份文件的启动程序是什么?
它放在什么地方?
参数Start便会自动依照附文件名到注册文件中找到启动程序来开启该份文件案!
不赖吧!
注一:
在Windows95/98/NT平台中,什么副文件名之文件案,该由什么执行文件来启动,都设在关联中,
代码为HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExtensions
例如:
名称为“.DOC”之资料为“C:
Progra~1Micros~2OfficeWINWORD.EXE^.DOC”
名称为“.TXT”之资料为“notepad.exe^.txt”
注二:
使用Start之唯一缺点为“会比直接指定执行文件稍为慢0.5-1秒钟.”
////////////////////////////////////////////////////////////////////////////////////
如何找出Windows目录的正确路径?
有时候我们在程序中必须用到Windows的目录,以存取Windows目录下的文件,照理说,这应该是最简单的功能,前提是每个人在SetupWindows必须采用Windows的预设目录名称,也就是C:
Windows,但是常常不是这样,有时候由於要使新旧版本共存,或者其他原因,有人会将Windows目录改成c:
win95、c:
win98、Windows95或Windows98……
若是程序中必须用到Windows目录,要找到正确的路径,做法如下:
‘在声明区中加入以下声明:
ConstMAX_PATH=260
PrivateDeclareFunctionGetWindowsDirectoryLib“kernel32″Alias“GetWindowsDirectoryA”(ByVallpBufferAsString,ByValnSizeAsLong)AsLong
PublicFunctionGetWinPath()
DimstrFolderAsString
DimlngResultAsLong
strFolder=String(MAX_PATH,0)
lngResult=GetWindowsDirectory(strFolder,MAX_PATH)
IflngResult<>0Then
GetWinPath=Left(strFolder,InStr(strFolder,Chr(0))-1)
Else
GetWinPath=“”
EndIf
EndFunction
‘在程序中使用方法如下:
PrivateSubCommand1_Click()
CallMsgBox(”您电脑中Windows目录的正确路径是:
”&GetWinPath,vbInformation)
EndSub
////////////////////////////////////////////////////////////////////////////////////
让您的文字框有Undo/Redo的功能
很多软件都有提供Undo/Redo的功能,Microsoft的产品都可以提供多次Undo反悔,功能更强大!
在VB的程序中,我们也可以提供这样的功能!
不过只能Undo/Redo一次
‘在声明区中加入以下声明:
‘32位元
‘PrivateDeclareFunctionSendMessageLib“user32″Alias“SendMessageA”(ByValhwndAsLong,ByValwMsgAsLong,ByValwParamAsLong,lParamAsAny)AsLong
‘ConstEM_UNDO=&HC7
‘16位元
PrivateDeclareFunctionSendMessageLib“User”(ByValhwndAsInteger,ByValwMsgAsInteger,ByValwParamAsInteger,lParamAsAny)AsLong
ConstWM_USER=&H400
ConstEM_UNDO=WM_USER+23
‘在程序中使用的方式如下:
(UndoText1中的输入)
PrivateSubCommand1_Click()
DimUndoResultAsLong
UndoResult=SendMessage(Text1.hwnd,EM_UNDO,0,0)
‘传回值UndoResult=-1表示Undo不成功
EndSub
‘使用以上的方法,第一次是Undo,第二次就等于是Redo
////////////////////////////////////////////////////////////////////////////////////
如何得到某年每个月的第一天是星期几
PrivateSubCommand1_Click()
DimiAsInteger,AAsInteger,BAsInteger,CAsString
A=InputBox(”请输入年份”,“某年每个月的第一天是星期几”)
Form1.Cls
Fori=1To12
C=A&“-”&i&“-1″
B=Weekday(C)
SelectCaseB
CasevbSunday
PrintA&“年”&i&“月1日是星期日”
CasevbMonday
PrintA&“年”&i&“月1日是星期一”
CasevbTuesday
PrintA&“年”&i&“月1日是星期二”
CasevbWednesday
PrintA&“年”&i&“月1日是星期三”
CasevbThursday
PrintA&“年”&i&“月1日是星期四”
CasevbFriday
PrintA&“年”&i&“月1日是星期五”
CasevbSaturday
PrintA&“年”&i&“月1日是星期六”
EndSelect
Nexti
EndSub
////////////////////////////////////////////////////////////////////////////////////
如何隐藏及显示任务栏?
有时候,我们希望在我们的程序执行中,将任务栏隐藏,让桌面变得比较清爽,等到我们的程序执行完毕之后,再将任务栏显示出来,这时就要用到SetWindowPos这个API了!
PrivateDeclareFunctionSetWindowPosLib“user32″(ByValhwndAsLong,ByValhWndInsertAfterAsLong,ByValxAsLong,ByValyAsLong,ByValcxAsLong,ByValcyAsLong,ByValwFlagsAsLong)AsLong
PrivateDeclareFunctionFindWindowLib“user32″Alias“FindWindowA”(ByVallpClassNameAsString,ByVallpWindowNameAsString)AsLong
ConstSWP_HIDEWINDOW=&H80‘隐藏视窗
ConstSWP_SHOWWINDOW=&H40‘显示视窗
‘在程序中若要隐藏任务栏
PrivateSubCommand1_Click()
DimThwndAsLong
Thwnd=FindWindow(”Shell_traywnd”,“”)
CallSetWindowPos(Thwnd,0,0,0,0,0,SWP_HIDEWINDOW)
EndSub
‘在程序中若要再显示任务栏
PrivateSubCommand2_Click()
DimThwndAsLong
Thwnd=FindWindow(”Shell_traywnd”,“”)
CallSetWindowPos(Thwnd,0,0,0,0,0,SWP_SHOWWINDOW)
EndSub
////////////////////////////////////////////////////////////////////////////////////
模拟Windows的资源回收站!
您现在将屏幕上所有的视窗全部缩小,找到资源回收站,按鼠标右键,选择【属性】,便会出现【资源回收站】的属性问话框。
其中有几个选项如下:
1、不要将文件移到资源回收站,删除时立即移除文件。
2、显示删除确认对话框?
根据以上之状况,文件之删除有三种情形:
1、删除文件,出现确认对话框,文件移到资源回收站。
2、删除文件,出现确认对话框,文件不移到资源回收站。
3、删除文件,不出现确认对话框,文件也不移到资源回收站。
模拟程序如下:
‘在模组的声明区中加入以下声明:
PublicTypeSHFILEOPSTRUCT
hwndAsLong
wFuncAsLong
pFromAsString
pToAsString
fFlagsAsInteger
fAnyOperationsAbortedAsLong
hNameMappingsAsLong
lpszProgressTitleAsLong
EndType
PublicDeclareFunctionSHFileOperationLib“shell32.dll”Alias“SHFileOperationA”(lpFileOpAsSHFILEOPSTRUCT)AsLong
PublicConstFO_Delete=&H3
PublicConstFOF_ALLOWUNDO=&H40‘可以还原
PublicConstFOF_NOCONFIRMATION=&H10‘不出现确认对话框
PublicConstFOF_SILENT=&H4
‘在程序中之使用方法如下:
‘以下之例子会出现确认对话框,文件也会移到资源回收站。
PrivateSubCommand1_Click()
DimSHopAsSHFILEOPSTRUCT
DimstrFileAsString‘要删除的文件(含全路径)
strFile=“c:
test.txt”
WithSHop
.wFunc=FO_Delete
.pFrom=strFile
.fFlags=FOF_ALLOWUNDO
EndWith
SHFileOperationSHop
EndSub
‘若要调整,只要更改fFlags之值即可,如下:
.fFlags=FOF_SILENT‘删除文件,出现确认对话框,文件不移到资源回收站。
.fFlags=FOF_NOCONFIRMATION‘删除文件,不出现确认对话框,文件也不移到资源回收站。
////////////////////////////////////////////////////////////////////////////////////
如何得到文件路径的文件名
DimsFilePathAsString
sFilePath=“C:
WindowsSystemsytem.dll”
DimlGetLenAsLong,lNumAsLong
DimsGetFileAsString,sTempAsString
lGetLen=Len(sFilePath)‘得到文件路径长度
sTemp=lGetLen
ForlNum=1TolGetLen
IfLeft(sGetFile,1)=“”ThenExitFor
sGetFile=Mid(sFilePath,sTemp,lNum)
sTemp=sTemp-1
NextlNum
sGetFile=Mid(sGetFile,2)‘得到文件名
MsgBoxsGetFile
////////////////////////////////////////////////////////////////////////////////////
如何防止使用者按下CTRL+ALT+DEL—–Windows(R)xp提示:
只适用于98及以下版本
有些时候,我们的应用程序执行时,不希望使用者按下CTRL+ALT+DEL来异常结束程序或关机,这时候我们可以在启动程序时,将CTRL+ALT+DEL功能键之功能取消,然后在结束程序之前,再从新恢复CTRL+ALT+DEL之功能。
在模组声明区中加入以下声明及模组:
DeclareFunctionSystemParametersInfoLib“user32″Alias“SystemParametersInfoA”(ByValuActionAsLong,ByValuParamAsLong,lpvParamAsAny,ByValfuWinIniAsLong)AsLong
PublicConstSPI_SCREENSAVERRUNNING=97
PublicSubDisable_Ctrl_Alt_Del()
‘让CTRL+ALT+DEL失效
DimAyWAsInteger
DimTurFlsAsBoolean
AwY=SystemParametersInfo(SPI_SCREENSAVERRUNNING,True,TurFls,0)
EndSub
PublicSubEnable_Ctrl_Alt_Del()
‘让CTRL+ALT+DEL恢复功能
DimAwYAsInteger
DimTurFlsAsBoolean
AwY=SystemParametersInfo(SPI_SCREENSAVERRUNNING,False,TurFls,0)
EndSub
‘实际使用时,在Form中加入以下程序码:
PrivateSubForm_Load()
Disable_Ctrl_Alt_Del
EndSub
PrivateSubForm_Unload(CancelAsInteger)
Enable_Ctrl_Alt_Del
EndSub
////////////////////////////////////////////////////////////////////////////////////
如何取得文件大小?
VB6提供了一个新的物件模型,叫做FSO(FileSystemObject)物件模型,运用它,我们可以很方便的处理磁盘、资料夹和文件的一些动作。
FSO物件模型含有好几个物件,其中有一个File物件是用来求得文件的相关资讯,在目前这个主题,我们就可以使用File物件!
它有一个属性是Size,对文件来说就是指文件的大小(单位为位元组)。
(注一)
虽然使用File物件的Size属性就可以求得文件的大小,但是它有以下二个缺点:
1、只能用于VB6以后的版本。
2、它不是VB6内定的功能,必须另外引用Scrrun.dll(MicrosoftScriptingRuntime)才可以!
以下的二个方法就可以使用在所有的VB版本中(含VB6),而且是VB内定的功能:
1、FileLen函数:
返回一个Long,代表一个文件的长度,单位是位元组。
语法:
FileLen(pathname)‘pathname是全路径之文件名称
适用:
取得一个尚未开启的文件的长度大小(注二)
2、LOF函数:
返回一个Long,单位为位元组,用来代表由Open陈述式所开启的文件之大小。
语法:
LOF(filenumber)‘filenumber是一个文件代码
适用:
取得一个已开启的文件的长度大小
注一:
File物件的Size属性除了可以求得一个文件的大小,也可以用来取得整个目录的所有文件大小!
注二:
使用FileLen函数时,如果所指定的文件正在开启中,则所返回的值是这个文件在开启前的大小。
////////////////////////////////////////////////////////////////////////////////////
如何移除或更改桌面背景的底色图案(Wallpaper)?
SystemParametersInfo这个API可以设定许多Windows系统的功能参数,而其中一个参数就是桌面底图!
通常一般的使用者会透
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VB 代码