荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Xie (。。。。。。), 信区: Program
标  题: [转寄] VB邮件(5.31)
发信站: BBS 荔园晨风站 (Thu Jun  3 09:56:14 1999), 转信

发信人: msnet (), 信区: VBVC
标  题: VB邮件(5.31)
发信站: 网易虚拟社区 (Mon May 31 06:08:37 1999), 站内信件

                      编者的话
====================================================================
各位网友:
    VB邮件自开办以来已经发了37期了,您对该邮件
有什么建议和要求,请来信,来信请寄msnet@188.net
主题为:我有建议
    如果您有好的作品或您发现了好的作品,不要忘
了让大家共享。
    版主期待您的参与!!!
                                版主   冯德平
=============================================
            VB邮件(5.31)
a VB调用API函数技巧--快速选择全部项目

    我们在使用 List 控件时,经常需要全部选择其中的项目,在项目较少时,
我们可以逐项设置 Selected 来选择全部的项目,但当项目较多时,这样做就比
较费时,其实,我们可以用 API 函数来简单实现此功能:

Dim nRet As Long

Dim bState as Boolean

bState=True

nRet = SendMessage(lstList.hWnd, LB_SETSEL, bState, -1)



函数声明:

Public Declare Function SendMessage Lib "User32" Alias "SendMessageA"
( ByVal hWnd As Long, ByVal wMsg As Integer, ByVal wParam As Long, ByV
al lParam As Long) As Long

Public Const WM_USER = &H400

Public Const LB_SETSEL = (WM_USER + 6)

                                            lisity 推荐

b VB调用API函数技巧--借用Windows系统的标准ABOUT窗口
                                       吴斌


 ABOUT窗口是应用程序向用户传达自身一些基本信息的最佳方式。Windows系统
的许多软件,如程序管理器、文件管理器、书写器等,都带有一个风格一致的AB
OUT窗口。在这些软件中,只要选择“帮助”菜单命令“关于XXX...”,就会
弹出这个标准ABOUT窗口,其中显示有关Windows及相应软件的版本、工作方式和
版权等信息。在VB应用程序中,可以通过调用API函数ShellAbout,方便地借用这
个标准ABOUT窗口,并将自己的基本信息加入其中。

  首先,在module文件中加入下列声明语句:

  Declare Function ExtractIcon% Lib "shell.dll" (ByVal hinst%, ByVal
lpszExeName$,ByVal iIcon%)



  Declare Function GetWindowWord Lib "User"( ByVal hWnd As Integer,
ByVal nIndex As Integer)As Integer



  Declare Function ShellAbout Lib "shell.dll"(ByVal hWnd As Integer,
ByVal szApp As String,ByVal szOtherStuff As String,ByVal hIcon As In
teger)As Integer



  Public Const GWL_EXSTYLE=(-20)

  Public Const GWL_STYLE=(-16)

  Public Const GWL_WNDPROC=(-4)

Public Const GWW_HINSTANCE=(-6)



  然后,在调用ABOUT窗口的菜单项的Click事件中加入下列代码:



  Dim Ret As Integer

  Dim Icon As Integer

  Dim Inst As Integer

  Inst=GetWindowWord(Me.hWnd,GWW_HINSTANCE)



  '从可执行文件中抽取图标

  Icon=ExtractIcon(Inst,"DEMO.EXE",0)



  '调用Windows系统标准ABOUT窗口

  Ret=ShellAbout (Me.hWnd,"演示程序","版权所有[c]1996-1997吴斌"
& Chr$(13) & Chr$(10) & "序列号:123456",Icon)

c 远望资讯·《新潮电子》99年第五期

VB应用程序集锦(一)
——API函数在VB中的应用(上)

  谓API就是“应用程序接口”(Application Programing Interface),是一
些用C语言编写,由操作系统自身调用的函数。Windows API函数由许多“动态链
接库”或DLL组成。在32位Windows中,核心的Windows API DLL有如下一些:
  gdi32.dll-----图形显示界面的API。
  kernel32.dll-----处理低级任务(比如内存和任务管理)的API。
  user32.dll------处理窗口和消息(Visual Basic程序员能把其中一些当作
事件访问)的API。
  还不断有新的API出现,处理新的操作系统扩展,比如E-MAIL、联网和新的外
设。
  由于Windows API函数不是Visual Basic的内部函数,所以在使用它们之前必
须显式地加以声明。要想得到正确格式化的函数声明,可以访问WINAPI目录下的
文件WIN32API.TXT。
  本文只对Win95系统的API函数加以说明并调用Win95的内置功能。

  在Windows下安装过程序的用户可能都有这样的体会,当安装完某些应用程序
后,安装程序会要求重新启动计算机以使设置生效。那么,如果要用VB程序重新
启动计算机该如何实现呢?其实利用ExitWindowsEx函数即可。
程序的编写
  1.首先运行VB,然后新建一个工程(工程类型为标准EXE),然后双击Form1
窗体,进入代码(Code)输入框,在其中输入:
Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As L
ong, ByVal dwReserved As Long) As Long
  2.点击“工具箱”中的commandbutton(命令按钮)工具,即可在窗体Form1
中加入一个命令按钮,然后将该按钮属性中的Caption值定义为“重新启动”(如
图1)。完成之后双击该按钮,进入代码(code)输入框输入以下代码(如图2)
:
Private Sub Command1_Click()
ExitWindowsEx &H43, 0
End Sub
程序的执行
  程序输入完成后,点击VB“运行”菜单中的“启动”或“全面编译”命令,
然后点击“重新启动”按钮,即可重新启动计算机。结果如图3。

  在Windows 9X中,当用鼠标右键单击“我的电脑”中的“3.5软盘A”,然后
在出现的右键菜单中选择“格式化”选项,就将弹出标准的“磁盘格式化”窗口
。下面我们来看看如何在应用程序中利用函数轻松调用Windows 95标准的“磁盘
格式化”窗口,实现对磁盘相应的操作功能。
程序的编写
  1.与上例相同,首先运行VB,新建一个标准工程,然后利用“工具箱”在Fo
rm1窗体中加入一个命令按钮对象,将该命令按钮属性中的Caption值定义为“软
盘格式化”。完成之后双击该按钮,在代码输入框中输入以下代码:
Private Sub Command1_Click()
Call FormatFloppy ’调用FormatFloppy过程
End Sub(如图4)
  2.然后用鼠标右击窗体,选择右键菜单中的“添加/添加模块”选项(如图5
),然后在出现的选择框中选择“模块”类型,接着在出现的模块代码输入框中
加入以下代码:
(注:模块是指一组声明的集合,其后为过程)
’通用声明
Public Const WM_CLOSE = &H10
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lp
ClassName As Any, ByVal lpWindowName As Any) As Long
Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsD
irectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
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
Declare Function GetDesktopWindow Lib "user32" () As Long
Declare Function LockWindowUpdate Lib "user32" (ByVal hwndLock As Long
) As Long
Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRec
t As RECT) As Long
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Type POINTAPI
X As Long
y As Long
End Type
Const SWP_NOSIZE = &H1
Const SWP_NOZORDER = &H4
’FormatFloppy()过程声明
Public Sub FormatFloppy()
Dim sBuffer As String, Windir As String, Procs As String, X
Dim lResult As Long
sBuffer = String$(255, 0)
lResult = GetWindowsDirectory(sBuffer, Len(sBuffer))
Windir = Trim(sBuffer)
Procs = Left(Windir, lResult) & "\rundll32.exe shell32.dll,SHFormatDri
ve"
Call CenterDialog("Format - 3? Floppy (A:)")
X = Shell(Procs, 1)
Call CenterDialog("Format - 3? Floppy (A:)")
k = LockWindowUpdate(0)
End Sub
’CenterDialog过程声明
Public Sub CenterDialog(WinText As String)
DoEvents
On Error Resume Next
Dim D3 As Long
D3 = LockWindowUpdate(GetDesktopWindow())
Dim wdth%
Dim hght%
Dim Scrwdth%
Dim Scrhght%
Dim lpDlgRect As RECT
Dim lpdskrect As RECT
Dim hTaskBar As Long
hTaskBar = FindWindow(0&, WinText)
Call GetWindowRect(hTaskBar, lpDlgRect)
wdth% = lpDlgRect.Right - lpDlgRect.Left
hght% = lpDlgRect.Bottom - lpDlgRect.Top
Call GetWindowRect(GetDesktopWindow(), lpdskrect)
Scrwdth% = lpdskrect.Right - lpdskrect.Left
Scrhght% = lpdskrect.Bottom - lpdskrect.Top
X% = (Scrwdth% - wdth%) / 2
y% = (Scrhght% - hght%) / 2
Call SetWindowPos(hTaskBar, 0, X%, y%, 0, 0, SWP_NOZORDER Or SWP_NOSIZ
E)
DoEvents
End Sub
程序的执行
  程序输入完成后,点击VB“运行”菜单中的“启动”或“全面编译”命令,
点击“软盘格式化”按钮后选择要格式化的容量,即可对3.5英寸盘进行格式化操
作。结果如图6
  在Windows程序中,点击“帮助”菜单中的“关于XXX”选项后,就会弹出该
程序的版本信息框。其实,在VB中,调用ShellAbout函数不但可以实现标准的软
件版本信息框,还可以随意更改其中的内容呢!
程序的编写
  1.与前面类似,首先运行VB并新建一个标准工程,然后双击Form1窗口,在代
码输入框中输入ShellAbout过程代码:
Private Declare Function ShellAbout Lib "shell32.dll" Alias "ShellAbou
tA" (ByVal hWnd As Long, ByVal szApp As String, ByVal szOtherStuff As
String, ByVal hIcon As Long) As Long
其中ShellAbout声明如下:
HWnd设置窗口句柄,szApp设置窗口的“Caption”, szOtherStuff 在“版权所
有”和“使用权”之间的空白处增加额外说明。
  2.然后利用“工具箱”在Form1窗体中加入一个命令按钮对象,将该命令按钮
属性中的Caption值定义为“版本信息框”。完成之后双击该按钮,在代码输入框
输入以下代码:
Private Sub Command1_Click()
Call ShellAbout(hWnd, "何发武天使工作室!", "版本信息框" & vbCrLf & "上
帝与你同在!阿弥陀佛!", 0)
End Sub
程序的执行
程序输入完成后,点击VB“运行”菜单中的“启动”或“全面编译”命令,点击
“版本信息框”按钮,即可查看当前软件的版本信息。结果如图7。

  在Windows 9X中,增加了一个全新的概念——“属性”,每个对象都拥有自己
的“属性”,在“属性”窗口里是关于对象的详细描述, 并且不同的对象“属性
”窗口的说明是不同的。我们可以用ShellExecuteEX函数直接调用“属性”标准
窗口。下面的程序功能相当于用鼠标右键单击根目录下的“Autoexec.bat”并选
择“属性”时,弹出的标准“属性”窗口。
程序的编写
  1.首先运行VB,然后新建一个标准工程,然后利用“工具箱”在Form1窗体中
加入一个命令按钮对象,将该命令按钮属性中的Caption值定义为“属性按钮”。
完成之后双击该按钮,在代码输入框中输入以下代码:
Private Sub Command1_Click()
Dim r As Long
Dim FileName As String
FileName = "c:\autoexec.bat"
r = ShowProperties(FileName, Me.hwnd)
If r <= 32 Then MsgBox "Error!No c:\autoexec.bat File"
End Sub
  2.然后用鼠标右击窗体,选择右键菜单中的“添加/添加模块”选项(如图5
),然后在出现的选择框中选择“模块”类型,接着在出现的模块代码输入框中
加入以下代码:
’通用声明
Option Explicit
Type SHELLEXECUTEINFO
cbSize As Long
fMask As Long
hwnd As Long
lpVerb As String
lpFile As String
lpParameters As String
lpDirectory As String
nShow As Long
hInstApp As Long
lpIDList As Long
lpClass As String
hkeyClass As Long
dwHotKey As Long
hIcon As Long
hProcess As Long
End Type
Public Const SEE_MASK_INVOKEIDLIST = &HC
Public Const SEE_MASK_NOCLOSEPROCESS = &H40
Public Const SEE_MASK_FLAG_NO_UI = &H400
Declare Function ShellExecuteEX Lib "shell32.dll" Alias "ShellExecuteE
x" _
(SEI As SHELLEXECUTEINFO) As Long
’ShowProperties过程
Public Function ShowProperties(FileName As String, OwnerhWnd As Long)
As Long
Dim SEI As SHELLEXECUTEINFO
Dim r As Long
With SEI
.cbSize = Len(SEI)
.fMask = SEE_MASK_NOCLOSEPROCESS Or SEE_MASK_INVOKEIDLIST Or SEE_MASK_
FLAG_NO_UI
.hwnd = OwnerhWnd
.lpVerb = "properties"
.lpFile = FileName
.lpParameters = vbNullChar
.lpDirectory = vbNullChar
.nShow = 0
.hInstApp = 0
.lpIDList = 0
End With
r = ShellExecuteEX(SEI)
ShowProperties = SEI.hInstApp
End Function

程序的执行
  程序输入完成后,点击VB“运行”菜单中的“启动”或“全面编译”命令,
点击“属性按钮”按钮,即可查看C:\AUTOEXEC.BAT的属性。结果如图8。
  以上程序均在VB5.0+Windows 98中调试通过。
                     Datky Wang 推荐
=============================================
              问题征答()
=============================================
              其    它

Cobe 的来信:
    这位仁兄,你的邮件很不错...就是无法每天都上去Down...能否隔一定时间做
一个
合集,让大家去下载,那就更好了...考虑考虑吧...再见

版主的回应:
    我会尽快做的.
====================================================================
欢迎订阅VB免费邮件
====================================================================

订阅地址  http://server.com/WebApps/mail-list-subscribe.cgi?id=16852

====================================================================

如果您觉得这个邮件列表好的话,请告诉您的朋友。
====================================================================
欢迎投稿  msnet@188.net
====================================================================

网易上的主页地址:http://www4.netease.com/~aaaaaaaaa
本网站主页镜像地址:goodvbhome.yeah.net
====================================================================

--
网易上的主页地址:http://www4.netease.com/~aaaaaaaaa
本网站主页镜像地址:http://goodvbhome.yeah.net

m;33m※ 来源:.网易虚拟社区 http://club.netease.com.[FROM: 202.103.46.57]m
--
m;34m※ 转寄:.网易 BBS bbs.netease.com.[FROM: bbs.huizhou.gd.cn]m
.

--
曾经有一份真诚的感情摆在我的面前,但是我没有珍惜,
等到了失去的时候 才后悔末及,尘世间最痛苦的事莫过
于此。如果上天可以给我一个机会再来一次 的话,我会
跟那个女孩子说:“我爱你。如果非要把这份爱加上一个
期限,我希 望是一万年。”

※ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.0.8]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店