登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

miaozk2006

点滴积累与收藏:关于技术,关于生活

 
 
 

日志

 
 

Visual Basic编程常见问题及解答(2)  

2010-12-18 22:43:07|  分类: 编程-VB |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

如何把小图片填满 MDIForm 成为背景图?
  以下这个范例,要:
  1、一个 MDIForm:不必设定任何属性。
  2、一个 Form1:不一定是 MDIChild,最好 MDIChild 为 False,但是 AutoRedraw 设成 True。
  3、Form1 上面放一个隐藏的 PictureBox:名称为 Picture1,不必设定 Picture 属性。
  4、一张图片的完整路径。

’将以下模组放入 MDIForm 的声明区中:
Sub TileMDIBkgd(MDIForm As Form, bkgdtiler As Form, bkgdfile As String)
If bkgdfile = "" Then Exit Sub
Dim ScWidth%, ScHeight%
ScWidth% = Screen.Width / Screen.TwipsPerPixelX
ScHeight% = Screen.Height / Screen.TwipsPerPixelY
Load bkgdtiler
bkgdtiler.Height = Screen.Height
bkgdtiler.Width = Screen.Width
bkgdtiler.ScaleMode = 3
bkgdtiler!Picture1.Top = 0
bkgdtiler!Picture1.Left = 0
bkgdtiler!Picture1.Picture = LoadPicture(bkgdfile)
bkgdtiler!Picture1.ScaleMode = 3
For n% = 0 To ScHeight% Step bkgdtiler!Picture1.ScaleHeight
For o% = 0 To ScWidth% Step bkgdtiler!Picture1.ScaleWidth
bkgdtiler.PaintPicture bkgdtiler!Picture1.Picture, o%, n%
Next o%
Next n%
MDIForm.Picture = bkgdtiler.Image
Unload bkgdtiler
End Sub

  以下为一应用实例:
Private Sub MDIForm_Load()
TileMDIBkgd Me, Form1, "c:\windows\Tiles.bmp"
End Sub

  关闭指定的程序
  要做到像 Task Manager 一样,可以关闭指定的程序,方法如下:
  在声明区中放入以下声明:(16位 改成 win31 API)
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Const WM_CLOSE = &H10

  以下之范例示范如何关闭一个视窗标题 (Caption) 为 【小算盘】的程序:
Dim winHwnd As Long
Dim RetVal As Long
winHwnd = FindWindow(vbNullString, "小算盘")
Debug.Print winHwnd
If winHwnd <> 0 Then
 RetVal = PostMessage(winHwnd, WM_CLOSE, 0&, 0&)
 If RetVal = 0 Then
  MsgBox "Error posting message."
 End If
Else
 MsgBox "并未开启小算盘程序."
End If

  如何隐藏及再显示鼠标
  很简单,只用到了一个 ShowCursor API,参数也很简单,只有一个 bShow,设定值如下:
True:显示鼠标 / False:隐藏鼠标
Declare Function ShowCursor Lib "user32" Alias "ShowCursor" (ByVal bShow As Long) As Long

  如何从您的应程序中结束 Windows 重开机?
  很多软件在 Setup 完之后都会自动关机重开机,以便让某些设定值可以生效,其实这个功能很简单,只要几行指令就可以做到了!
  关键就是要使用 ExitWindowsEx 这个 API,这个 API 只有二个参数,第一个参数是一个 Flag,目的是要告诉 Windows 要以什么方式关机,在下面的声明中会列出可用的 Flag 常数值,至于第二个参数则是一个保留值,只要设定成 0 就可以了。
  很重要的一点是:如果您想要让关机动作更顺利,记得要 Unload 您的程序!
’在声明区中 (Bas Module / Form Module) 加入以下声明:
Public Const EWX_LOGOFF = 0 ’这四个常数值可以并用
Public Const EWX_SHUTDOWN = 1
Public Const EWX_REBOOT = 2
Public Const EWX_FORCE = 4
Declare Function ExitWindowsEx Lib "user32" Alias "ExitWindowsEx" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
’实例:如果您想强迫关机重开机,程序码如下:
ret = ExitWindowsEx(EWX_FORCE OR EWX_REBOOT, 0)

  如何用 VB 启动其他程序或开启各类文件?
  要在 VB 中启动其他程序或开启各类文件,最简单的方法就是使用 Shell 函数,例如:要开启 C:\Test.txt 这个文字文件,则要启动记事本来开启这个文件案,程序如下:
Dim RetVal As Long
RetVal = Shell("C:\Windows\Notepad.exe C:\Test.txt", 3) ’3代表视窗会最大化,并具有驻点,细节请查 Help

  以上的语法虽然很简单,但有一个风险,若是我们不知道开启文件的执行文件位置,则程序便会有错误产生,尤其一般软件在安装的时候都可以让使用者自行选择安装目录,所以执行文件的路径不能写死在程序中,要解决这个问题,就是在注册文件中找到该副文件名之启动程序位置,再放入 Shell 中。
  但是以上的作法必须熟悉注册文件,而且必须使用 Windows API 来 Call (注册文件的存取以后会有专文来说明),如果您对注册文件的存取及 API 的使用都很纯熟的话,当然没问题,但是有些人对于注册文件会有畏惧,这时候,您可以使用下面的方法: Shell("Start C:\Test.txt")
  您完全不用知道这份文件的启动程序是什么?它放在什么地方?参数 Start 便会自动依照附文件名到注册文件中找到启动程序来开启该份文件案! 不赖吧!
  注一:在 Windows 95/98/NT 平台中, 什么副文件名之文件案, 该由什么执行文件来启动, 都设在关联中,
  代码为 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Extensions
  例如: 名称为 ".DOC" 之资料为 "C:\Progra~1\Micros~2\Office\WINWORD.EXE ^.DOC"
  名称为 ".TXT" 之资料为 "notepad.exe ^.txt"
  注二:使用 Start 之唯一缺点为 "会比直接指定执行文件稍为慢 0.5-1 秒钟."
如何找出 Windows 目录的正确路径?
  有时候我们在程序中必须用到 Windows 的目录,以存取 Windows 目录下的文件,照理说,这应该是最简单的功能,前提是每个人在 Setup Windows 必须采用 Windows 的预设目录名称,也就是 C:\Windows,但是常常不是这样,有时候由於要使新旧版本共存,或者其他原因,有人会将 Windows 目录改成 c:\win95、c:\win98、Windows95 或 Windows98......
  若是程序中必须用到 Windows 目录,要找到正确的路径,做法如下:
’在声明区中加入以下声明:
Const MAX_PATH = 260
Private Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Public Function GetWinPath()
 Dim strFolder As String
 Dim lngResult As Long
 strFolder = String(MAX_PATH, 0)
 lngResult = GetWindowsDirectory(strFolder, MAX_PATH)
 If lngResult <> 0 Then
  GetWinPath = Left(strFolder, InStr(strFolder, Chr(0)) - 1)
 Else
  GetWinPath = ""
 End If
End Function
’在程序中使用方法如下:
Private Sub Command1_Click()
 Call MsgBox("您电脑中 Windows 目录的正确路径是: " & GetWinPath, vbInformation)
End Sub

VB部分相关推荐

摘自:网络整理


相关参考


VB查找替代字符串的函数

VB换行气泡提示类

VB/VBA通用路径选择对话框

ASCII码表0-255完整版 附详细注释

VBKeyAscii

VB取得TextBoxRichTextBox光标所在的行和列(支持汉字)

VB取得TextBoxRichTextBox光标所在的行和列(支持汉字)

VB如何实现Undo(撤消)功能

VB计算文本文件的行数

VB获取快捷方式原文件路径

微软 Small Basic 简体中文版 已经发布了

VB操作Excel 非常详细 [网摘]

VB如何判断文件正被占用/已被打开

VB添加listbox 的水平卷动轴

VB打开资源管理器并指定文件

VB根据窗体自动调整窗体内控件大小 注:实用,可以直接引用

VB中的指针技术

Visual Basic编程常见问题及解答(1

Visual Basic编程常见问题及解答(2

Visual Basic编程常见问题及解答(3

VisualBasic变量、常数和数据类型及过程概述

VB6的后期绑定和前期绑定

VB用户控件制作讲解与实例

VB制作OCX控件的步骤

VBFSO的调用的两种方法

VB操作EXCEL

VB判断文件及目录的存在性

VB网站(最新、经典源代码、技术文章、基础知识)

VB得到指定文件夹下的文件列表

VB产生随机任意大小文件挤满硬盘

VB文件的读写操作

VB创建超链接 打开指定网站的几种方法

VB 源码 删除重复行程序 函数

VB 计算自己程序段所用时间

VB 获取路径名各部分 (获取文件路径,获取文件名,获取文件扩展名)自编

几行VB代码拿下注册表

VB 在浏览器中打开指定网址

VB窗口置顶

vb ListBox 之中点击右键弹出菜单

  评论这张
 
阅读(671)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018