⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pr37.htm

📁 VB一些常见的问题的解决方法37
💻 HTM
字号:
<html>

<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>VB问题全功略(37)</title>
<style type="text/css">font         { font-size: 9pt; line-height: 13pt }
p            { font-size: 9pt; line-height: 13pt }
td           { font-size: 9pt; line-height: 13pt }
select       { font-family: 宋体; font-size: 9pt }
input        { font-family: 宋体; font-size: 9pt }
textarea     { font-family: 宋体; font-size: 9pt }
a            { color: blue; font-size: 9pt; text-decoration: none }
a:hover      { color: red; text-decoration: underline }
a:active     { color: red; text-decoration: underline }
BODY {	FONT-SIZE: 12px; SCROLLBAR-HIGHLIGHT-COLOR: #99ccff;  SCROLLBAR-SHADOW-COLOR: #99ccff; COLOR: #000000; SCROLLBAR-3DLIGHT-COLOR:  #99ccff; SCROLLBAR-TRACK-COLOR: #ffffff; FONT-FAMILY: "宋体";  SCROLLBAR-DARKSHADOW-COLOR: #99ccff; SCROLLBAR-BASE-COLOR: #99ccff}
</style>
</head>

<body bgcolor="#FFFFFF">

<div align="center">
<center>
<table border="0" width="100%">
<tr>
<td width="100%">
<p align="center"></td>
</tr>
<tr>
<td align="left" bgcolor="#99CCFF" width="924"><font color="#FF0000">VB问题全功略(37)   
</font><font color="#000080">[<font face="宋体">查找本页请按Ctrl+F]</font></font></td>  
</tr>  
<tr>  
<td width="100%" align="center"></td>  
</tr>  
</center>  
<tr>  
<td>  
<p align="right">[<a href="pr36.htm"><u>上一页</u></a>]<font color="#FF0000"><b>(37)</b></font>[<a href="pr38.htm"><u>下一页</u></a>]</td>  
</tr>  
<center>  
<tr>  
<td><a href="#181">181、如何在 VB5 中打开 VB6 的工程?</a><br>  
<a href="#182">182、VB6.0 的 Help 在那里?MSDN 是什么?</a><br>  
<a href="#183">183、如何判断资料库中某一个 Table 是否存在?(ADO)</a><br>  
<a href="#184">184、如何移除或更改桌面背景的底色图案   
(Wallpaper)?</a><br>  
<a href="#185">185、如何在不开启文件的情况下打印各类文件?</a><br>  
<br>  
<font color="#FF0000">181、如何在 VB5 中打开 VB6 的工程?</font><a name="181"></a><br>  
<br>  
如果您用 VB5 打开 VB6   
撰写的工程,会出现一个类似以下的讯息:<br>  
<br>  
&quot;Retained 为不正确的键。无法载入文件   
C:\Windows\Desktop\Project1.vbp。&quot;<br>  
&quot;Retained is an invalid key. The file C:\Windows\Desktop\Project1.vbp can't   
be loaded&quot;.<br>  
<br>  
那是因为在 VB6 的工程的 .vbp 文件中,多了一个之前的 VB   
版本不认得的键值 &quot;Retained&quot; 的缘故!<br>  
<br>  
要解决这个问题很简单,您只要依照以下的几个步骤:<br>  
<br>  
1、使用记事本 (Notepad.exe) 打开 VB6 的工程的 .vbp 文件。<br>  
2、在这个文件中找到包含 &quot;Retained&quot;   
字串的那一行,将那一整行移除。<br>  
3、存文件。<br>  
<br>  
这样子您就可以使用 VB5 来打开之前使用 VB6   
开发的工程了!很简单吧!<br>  
<br>  
注:我在别的网站上看到有人说,这样子做了之后不一定百分之百成功,不过我自己试了之后,倒是没有出现错误,各位也自己试试吧!<br>  
<br>  
<font color="#FF0000">182、VB6.0 的 Help 在那里?MSDN 是什么?</font><a name="182"></a><br>  
<br>  
很多人在安装了 VB6.0   
,开始撰写程序之后,遇到了问题,按下【F1】,却出现了错误讯息,告诉您:<br>  
<br>  
【MSDN 不存在......,请重新安装 MSDN】<br>  
<br>  
有的人还会觉得很奇怪,VB6.0 的 Help 出了什么问题了?MSDN   
又是什么?为什么要重新安装 MSDN?<br>  
<br>  
其实,从 VB6.0 以后,Microsoft   
已经将它所有的开发软件,合并成 Microsoft Visual Studio 6.0,一起出售   
( 当然,也有分开独立贩售的版本 ),在合并软件的同时,Microsoft   
也将每一个开发软件的 Help 挪出来,统一放在 MSDN   
光盘中,所以,现在不管您买的是合并软件的 Microsoft Visual   
Studio 6.0 或是独立贩售的 VB6.0 版本,都会另外附上二片   
Microsoft MSDN Library 光盘。<br>  
<br>  
今天,如果您购买的是独立贩售的 VB6.0 版本,在您安装完   
VB6.0 之前,安装程序会要求您放入 MSDN   
光盘,它会继续帮您安装 MSDN (也就是新版的 Help)。至于安装的注意事项,请参考<br>  
<br>  
问题10:不方便的 Msdn -- VB6.0 的 Help<br>  
<br>  
如果您安装 VB6.0 时,没有同时安装 MSDN,也没关系,您只要找到   
MSDN 光盘,将第一片放入光驱,直接执行 Setup.exe 即可!<br>  
<br>  
注:VB6 及 Microsoft Visual Studio 6.0 所附之 MSDN Library   
光盘其实只是一个特殊版本,是专门针对 Microsoft Visual Studio   
6.0 所推出的!MSDN Library 光盘在 VB6 及 Microsoft Visual Studio 6.0   
出现之前就已经存在很久了,是微软针对程序开发人员的官方的技术资源,它定期提供产品操作手册、范例程序、技术文章、公用程序及许多最新的技术资料。而随   
VB6 及 Microsoft Visual Studio 6.0 所附之 MSDN Library 光盘内容包含   
VB6 及 Microsoft Visual Studio 6.0 的最新产品手册 (电子书)   
及技术资料。<br>  
<br>  
<font color="#FF0000">183、如何判断资料库中某一个 Table   
是否存在?(ADO)<a name="183"></a></font><br>  
<br>  
要判断资料库中某一个 Table   
是否存在?最简单的方法就是错误尝试法!什么叫做错误尝试法呢?就是先假设它存在,直接去打开它,如果它真的存在,不会有错误产生,但是如果它不存在的话,就会有错误产生!做法大致如下:<br>  
<br>  
1、设定 On Error Resume Next<br>  
2、直接打开要检查的 Table<br>  
3、如果文件存在,则 err.Number=0<br>  
<br>  
我们就以 Access 为例,资料库使用 VB 内附的 Biblio.mdb,程序码如下:<br>  
<br>  
On Error Resume Next '1<br>  
Set Conn = CreateObject(&quot;ADODB.Connection&quot;)<br>  
Conn.open &quot;Provider=Microsoft.Jet.OLEDB.4.0;Persist Security   
Info=False;Data Source=C:\Biblio.mdb&quot;<br>  
Set rs = Conn.execute(&quot;Titles&quot;) '2<br>  
If Err.Number &lt;&gt; 0 Then MsgBox &quot;Table 不存在&quot; Else MsgBox   
&quot;Table 存在&quot; '3<br>  
<br>  
<font color="#FF0000">184、如何移除或更改桌面背景的底色图案   
(Wallpaper)?<a name="184"></a></font><br>  
<br>  
SystemParametersInfo 这个 API 可以设定许多 Windows   
系统的功能参数,而其中一个参数就是桌面底图!通常一般的使用者会透过控制面板中的【显示器】来设定桌面底图。<br>  
<br>  
在底下的范例中,我们使用 SPI_SETDESKWALLPAPER   
这个参数及图片文件名称来设定新的桌面底图,同时使用   
SPIF_SENDWININICHANGE 来通知各个视窗这个改变。<br>  
<br>  
'在表单的声明区中加入以下声明及常数:<br>  
<br>  
Private Declare Function SystemParametersInfo Lib &quot;user32&quot; Alias   
&quot;SystemParametersInfoA&quot; (ByVal uAction As Long, ByVal uParam As Long,   
ByVal lpvParam As String, ByVal fuWinIni As Long) As Long<br>  
<br>  
Const SPI_SETDESKWALLPAPER = 20<br>  
Const SPIF_UPDATEINIFILE = &amp;H1<br>  
Const SPIF_SENDWININICHANGE = &amp;H2<br>  
<br>  
'在表单上加入一个 CommandButton (Command1)   
来移除桌面底图,程序码如下:<br>  
<br>  
Private Sub Command1_Click()<br>  
Dim X As Long<br>  
X = SystemParametersInfo(SPI_SETDESKWALLPAPER, 0&amp;, &quot;(None)&quot;,   
SPIF_UPDATEINIFILE Or SPIF_SENDWININICHANGE)<br>  
MsgBox &quot;桌面底图 (Wallpaper) 已经被移除&quot;<br>  
End Sub<br>  
<br>  
'在表单上加入另一个 CommandButton (Command2)   
来更改桌面底图,程序码如下:<br>  
<br>  
Private Sub Command2_Click()<br>  
Dim FileName As String<br>  
Dim X As Long<br>  
FileName = &quot;c:\windows\test.bmp&quot;<br>  
X = SystemParametersInfo(SPI_SETDESKWALLPAPER, 0&amp;, FileName,   
SPIF_UPDATEINIFILE Or SPIF_SENDWININICHANGE)<br>  
MsgBox &quot;桌面底图 (Wallpaper) 已经被更改&quot;<br>  
End Sub  
<p><font color="#FF0000">185、如何在不开启文件的情况下打印各类文件?</font><a name="185"></a></p>  
<p>您还记得或怀念以前 DOS 时代,在 DOS   
的命令列就可以直接下指令打印文件吗?</p>  
<p>其实这个题目的标题,就如同当今的报纸标题一般,有点夸张,因为要打印文件,势必要先开启文件!</p>  
<p>但是您也不用失望,既然标题会这样订,表示我也有好方法   
(其实应该说 Microsoft 有提供好方法)!您只要使用 ShellExecuteAny   
这个 API,对于各种不同格式不同类型的文件,您都不用自己先去启动开启该类文件的应用程序,再开启文件,再打印文件!</p>  
<p>看到上面的说明,是否让您回想起之前我们提到过的二个主题:</p>  
<p>如何用 VB 启动其他程序或开启各类文件?<br>  
完全模拟【开始】中的【运行...】功能</p>  
<p>在这二个主题中,我们都有提到,不必管文件的扩展名是什么?格式是什么?您都可以使用如下面</p>  
<p>Shell(&quot;Start C:\Test.txt&quot;)<br>  
Call Shell(&quot;rundll32.exe url.dll,FileProtocolHandler &quot; &amp; Text1, 1)</p>  
<p>的方式来启动程序或开启文件。今天,我们要提到的 API   
也可以开启或执行各种不同类型的文件,但是那不是我们今天的重点   
(如果各位有兴趣的话,请自行研究!),今天的重点是   
ShellExecuteAny 这个 API 它可以:</p>  
<p>1、自动依文件型态帮我们在 Background 启动应用程序。<br>  
2、自动打印文件。<br>  
3、自动再关闭文件。</p>  
<p>应用在我们的 VB   
程序中的话,使用者只要输入或选择文件,不管什么文件 (当然是指在注册表中曾经注册过的文件类型),都可以打印!</p>  
<p>'以下是完成的模组:</p>  
<p>Private Declare Function ShellExecuteAny Lib &quot;shell32.dll&quot; Alias   
&quot;ShellExecuteA&quot; (ByVal hwnd As Long, ByVal lpOperation As String,   
ByVal lpFile As String, ByVal lpParameters As Any, ByVal lpDirectory As Any,   
ByVal nShowCmd As Long) As Long</p>  
<p>Const SW_SHOWMINNOACTIVE = 7</p>  
<p>Sub PrintAnyFile(FileToPrint As String)<br>  
Dim Ret As Long<br>  
Ret = ShellExecuteAny(Me.hwnd, &quot;print&quot;, FileToPrint, ByVal 0&amp;,   
ByVal 0&amp;, SW_SHOWMINNOACTIVE)<br>  
End Sub</p>  
<p>'实际使用案例如下:</p>  
<p>Private Sub Command1_Click()<br>  
PrintAnyFile Text1.Text<br>  
End Sub</p>  
<p>其实上面这种打印文件的方式,它的作用方式,和我们直接将文件文件拖拉到打印机的图示上去打印文件是一样的道理!   
(如果您之前尚不知道这个功能的话,您现在可以试试看将一份文件直接拖拉放到打印机的图示上,看看结果如何!)</td>  
</tr>  
</table>  
</center>  
</div>  
<div align="center">  
<center>  
<table border="0" width="100%" cellspacing="1">  
<tr>  
<td width="100%" bgcolor="#99CCFF">  
<p align="center"><font color="#ff0000"><a href="../../index.html" target="_blank">[木瓜软件工作室]</a>  
整理</font></td> 
</tr> 
</table> 
</center> 
</div> 
 
</body> 
 
</html> 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -