函数在开发中的应用呢
VB 作 为 快 速 开 发Windows 下 的 编 程 工 具, 已 经 为 越 来 越 多 的 开 发 者 采 用。 但 如 果 要 开 发 出 专 业 的Windows 软 件, 还 需 采 用 大 量 的API 函 数, 以 下 结 合 笔 者 开 发 管 理 软 件 的 经 验 谈 几 点 体 会。
程 序 中 判 定Windows 的 版 本
众 所 周 知,Windows 3.x 各 版 本 或 多 或 少 会 有 些 差 别, 为 了 使 开 发 程 序 避 免 出 现 莫 名 其 妙 的 错 误, 最 好 在 程 序 运 行 前 自 动 判 定Windows 的 版 本。 采 用API 提 供 的 函 数getversion 很 容 易 实 现 这 一 点。 函 数 声 明 如 下:
Declare Function GetVersion Lib\"Kernel\" () As Integer
此 函 数 没 有 参 数, 返 回 值 为Windows 的 版 本 号, 其 中 版 本 号 的 低 位 字 节 为Windows 的 主 版 本 号, 版 本 号 的 高 位 字 节 返 回Windows 的 次 版 本 号。 判 别 过 程 如 下:
Private Sub Form_Load ()
Dim ver As Integer
Dim major As Integer
Dim minor As Integer
Ver = GetVersion ()
major = ver And &HFF
minor = (ver And &HFF00) \\ 256
If major 3 And minor 10 Then
MsgBox \"版本不正确!\"
Exit Sub
End If
End Sub
程 序 中 判 断Windows 的 安 装 目 录
一 般VB 开 发 出 来 的 程 序 包 含 l 等 辅 助 文 件 和.vbx 文 件, 它 们 均 需 安 装 到Windows 目 录(c:\\windows) 或Windows 的 系 统 目 录(c:\\windows\\system) 下, 但 因 为 用 户 安 装Windows 时 可 能 会 改 变Windows 的 目 录 名( 如c:\\windows), 使 用 安 装 软 件 后, 不 能 正 确 运 行.API 中 提 供 的GetwinDowsdirectory 或GetSystemDirectory 较 好 地 解 决 了 这 个 问 题。 函 数 声 明 如 下:
Declare Function GetSystemDirectory Lib \"Kernel\"(ByVal lpBuffer As String,ByVal nSize As Integer) As Integer
其 中 参 数lpbuffer 为 字 串 变 量, 将 返 回 实 际Windows 目 录 或Windows 的 系 统 目 录,nsize 为lpbuffer 的 字 串 变 量 的 大 小, 函 数 返 回 值 均 为 实 际 目 录 的 长 度。 检 查 函 数 如 下:
Function checkdir() As Boolean
Dim windir As String * 200
Dim winsys As String * 200
Dim winl As Integer
Dim wins As Integer
Dim s1 As String
Dim s2 As String
winl = GetWindowsDirectory(windir,200)
winl = GetSystemDirectory(winsys,200)
s1 = Mid $(windir,1,winl)
s2 = Mid $(winsys,1,wins)
If Wins = 0 Or wins = 0 Then
昨天棉花明显走强 checkdir = False
Exit Function
End If
If s1 \"C:\\WINDOWS\" Or s2 \"C:\\WINDOWS\\SYSTEM\" Then
checkdir = False
Exit Function
End If
checkdir = True
End Function
shell 出 现 的 问 题
通 常 编 程 时 要 调 用 外 部 程 序,VB 提 供 了shell() 函 数, 但 是 如 果shell 调 用 的 外 部 程 序 找 不 到, 则 运 行 的 程 序 失 去 控 制,VB 给 出 提 示\"file not found\", 改 变 这 种 现 象, 要 在 程 序 中 加 入on error go to, 比 较 麻 烦,API 函 数 中 的winexec 很 好 地 解 决 了 这 个 问 题。 函 数 声 明 如 下:
Declare Function WinExec Lib \"Kernel\"(ByVal lpCmdLine As String,ByVal nCmdShow As Integer) As Integer
其 中lpCmdline 为 调 用 的 外 部 文 件 名,NcmdShow 为 外 部 程 序 的 运 行 状 态, 如 隐 藏 窗 口、 最 小 化 窗 口 等 等。 如 返 回 值 大 于32 表 示 执 行 功 能, 否 则 返 回 错 误 码。 例 程 如 下:
sub command1_click
ds I as integer
I=winexec(\"e\",\"c:\\t\",9)
\'\'参数9 即SW_RESTORE,也就是激活并显示窗口
if I32 then
msgbox \"调用正确!!\"
else
msgbox \"调用错误!!\"
end if
end sub
通 过 实 践 发 现, 在 使 用VB 开 发 应 用 程 序 时, 灵 活 使 用API 函 数, 会 更 大 地 发 挥VB 的 作 用, 使 开 发 出 的 软 件 更 专 业, 功 能 更 强 大。
济南白癜风专业医院天津治白癜风专科医院
拉萨宫颈糜烂治疗多少钱
- 上一篇:中字符串作参数传递的本质论牛
- 下一篇:时代零售企业要做好内外兼修的
-
杜高犬智商排第几名它是怎样的狗狗位置
杜高犬智商排第几名?它是怎样的狗狗杜高犬智商排第几名?它是怎样的狗狗宠主在想要饲 狗的时候,同样也会去了解不同狗狗的生活习...[详细]
家居百科2022.06.12
-
杜高犬怎么样杜高犬的优缺点位置
杜高犬怎么样?杜高犬的优缺点杜高犬怎么样?杜高犬的优缺点 14:30:43by 呦呦杜高犬身体强壮,体型健美线条流畅,通身雪白。是一种非...[详细]
家居百科2022.06.12
-
松狮吃什么食物好松狮的营养食谱及喂养注意位置
松狮吃什么食物好?松狮的营养食谱及喂养注意事项松狮吃什么食物好?松狮的营养食谱及喂养注意事项松狮吃什么食物好?相信一些饲...[详细]
家居百科2022.06.12
-
杜高犬太凶了要这么纠正位置
杜高犬太凶了要这么纠正?杜高犬太凶了要这么纠正? 10:57:33出处:络点击:57 导读: 家里狗狗...[详细]
家居百科2022.06.12
-
杜高犬喜欢咬人要怎么办位置
杜高犬喜欢咬人要怎么办?杜高犬喜欢咬人要怎么办? 10:45:06出处:络点击:55 导读: 狗狗喜欢...[详细]
家居百科2022.06.12