首页 目录页 热情软件屋 问专家

李海文选

问与答(8则)

李海

本文发表在99年12月16日
《PC Computing中文版/电子&电脑》12期

  1. 如何删除控制面板中无效的图标
  2. 改变系统默认图象查看程序
  3. 如何处理WINDOWS目录下的.tmp文件
  4. 如何实现VB下的图形打印
  5. 如何设置WordExcel中的系统缺省路径
  6. 如何VB 5.0操作Excel文档
  7. 如何知道剪贴板的文本或图形来自哪个窗口
  8. 虚拟内存的设置

如何删除控制面板中无效的图标

王逊杰:我在使用WINDOWS98过程中,在控制面板中加入了一些ICON,后来这些程序又被我删除了,ICON却一直保留在控制面板里,有什么办法能使我删掉这些没用ICON

李海:控制面板在启动时会搜寻Windows\System目录中的所有.CPL文件,并从中读取有关的信息,如功能描述和图标。同时,控制面板也会从Control.ini中加载.CPL文件或.DLL文件。所以,你的控制面板中无效的图标必是来自这两个途径。你可以查找一下应用程序是否遗漏了有关文件在你的机器中。为了避免误删文件,你可以把可疑的文件先写到Control.ini文件的don't load段中,如:

[don't load]

snd.cpl=no

joystick.cpl=no

midimap.drv=no

凡是出现在这个段中的文件都不会被控制面板加载。

回到开始

改变系统默认图象查看程序

Milse Woo:以前我都是用OPERA看图,并把它设成系统默认。现在我想换成ACDSee,请问该怎么做?

李海:许多图象、压缩软件都提供修改文件关联的设置。例如在ACDSee选择菜单“Tools|Options”,然后在Options对话框(图1)中选择Miscellaneous选项卡中选择选择“Set File Associations”按钮。在图2所示对话框中列出了所有ACDSee支持的文件类型。你可以任意选择其中的一个或多个,然后选择右上角的Open(default)检查框,选择“确定”按钮关闭对话框。这样ACDSee就成为该格式的默认查看程序。

1 选择“Set File Associations”按钮

2 在对话框中选择文件类型并设置关联动作

如果软件没有这样的设置功能,你也可以在资源管理器中选择一个某类型的文件,按下SHIFT键,然后点击鼠标右键,这时在快捷菜单上出现“打开方式”项(图3),选择该项将出现图4所示的对话框,从程序列表中选择要关联的程序(如果要指定的程序没有出现在列表中可以选择“浏览按钮”),然后选择“始终使用该程序打开这种类型的文件”检查框。这样也可以修改默认的关联程序。

3 在快捷菜单上出现“打开方式”项

4 在“打开方式”对话框中选择改变默认查看程序

回到开始

如何处理WINDOWS目录下的.tmp文件

李卫东:我使用的是P-II 350MCPU,内存为128M。最近,使用了最新版的OEM2 WIN98。在使用过程中,会在WINDOWS的目录下不断生成许多如:fff879eb{29AD6400-6F12-11D3-9548-C9DC2F0D68F5}.TMP类似的文件,而在这些文件的属性中显示占用空间为0k。每次我删除这些文件,电脑不单会死机,还无法关闭电源,只能拔掉电源线。不知这些文件有何作用?怎样产生的?如何处理这些文件?

李海:这些文件是系统使用的临时文件,之所以显示为0k是因为这些文件已经被系统打开,正在使用,所以你删除这些文件会导致系统混乱。你不必理会这些文件。判断Windows目录下或Windows\Temp目录下的.tmp文件是系统正在使用的文件,还是由于应用程序崩溃残留下来的文件,可以看文件建立的时间。如果临时文件是你此次启动Windows以前建立的,则一般可以放心地删除,否则可以暂时不理会,待日后处理。

回到开始

如何实现VB下的图形打印

Laiguoquan:在VB下使用打印机直接输出文本数据是很方便的,但是如果是使用图形控件绘制的图形,却很难将之打印出来,使用PRINTFORM方法虽可打印,但却不能完整地打印。不知可用什么方法?

李海:Visual BasicPrinter对象支持PaintPicture方法,可以支持打印位图。其语法为:

Printer.PaintPicture picture, x1, y1, width1, height1, x2, y2, width2, height2, opcode

参数Picture是必需的,指明要绘制到打印机上的图形的来源源,通常是对象的PictureImage属性。

参数x1, y1也是必需的,均为单精度数值,指定参数picture所确定图形在打印机上绘制的坐标(x-轴和y-轴)。其值的单位是由Printer ScaleMode 属性决定的。

参数Width1Height1是可选的,都是单精度数值,指示图象的目标宽度和高度。如果目标宽度/高度比源宽度 (width2)/高度(height2)大或者小,将适当地拉伸或压缩图形。如果省略这两个参数,则使用图形的原始尺寸。

参数x2, y2Width2Height2是可选的。它们指示参数picture确定的图象内剪贴区的坐标(x-轴和y-轴)和大小。利用这四个参数,我们可以打印图象的一部分。默认是打印整个图象。

参数Opcode是可选的,是长型数值。它用来定义在将图象绘制到打印机上时对图象执行的位操作(例如, vbMergeCopy vbSrcAnd 操作符)。关于位操作符常数的完整列表,请参阅 Visual Basic帮助文件中的有关内容或Windows API中有关BitBlt的说明。对于打印机来说,这个参数较少使用;而在屏幕显示图象时往往利用这个参数实现一些特殊效果。

通过使用负的目标高度值 (height1)或目标宽度值 (width1) ,可以水平或垂直翻转位图。

下面是一个简单的例子:

Printer.PaintPicture Picture1.Image, 0, 0

回到开始

如何设置WordExcel中的系统缺省路径

张永科:在WordExcel中如第一次想打开一个文件,系统缺省情况下会打开"My Documents"。有何方法可将系统缺省路径设为我想要的路径,是否在Windows的注册表中修改。

李海:WordExcel都允许用户定制自己的文件路径。如果要修改Word打开文件的默认目录,可以选择菜单“工具|选项”,在对话框(图5)选择“文件位置”选项卡,在其中可以修改几个Word默认的路径,其中打开文件时使用的是“文档”目录。

图5 Word中设置默认路径

类似的,在Excel中选择菜单“工具|选项”,在对话框(图6)选择“常规”选项卡,在其中可以修改默认工作目录。

这些设置都是针对当前用户的,所以如果有多个用户使用同一台机器,而且都使用不同的用户登录,不必担心彼此间的设置会干扰。

除此以外,在系统注册表HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders键下有Personal键值,它是系统默认的文档目录。

6 Excel中设置默认路径

回到开始

如何用VB 5.0操作Excel文档

吴介廷:如何用VB 5.0操作Excel文档,包括创建Excel新文档、创建新工作表、设置单元格的边框、颜色、列(或行)的宽度等?

李海:象你所要求的工作最好是利用Automation来实现。借助AutomationVB程序可以调用Excel 97VBA语句实现Excel 97的绝大多数工作。使用这种方法的前提是你的机器中安装有Excel 97。如果你在安装Excel 97时选择了Visual Basic帮助,你就可以在Excel 97的帮助中找到有关VBA的内容。不熟悉VBA的用户,可以在Excel中利用菜单“工具||录制新宏”先录制一段Excel宏,然后选择菜单“工具||Visual Basic编辑器”查看录制的VBA代码(图7)。这样你可以更快地找到你需要的有关函数。

然后,在Vsual Basic中使用CreateObject语句建立Excel对象,再调用该对象的有关方法和属性(就是VBA语句)就可以控制Excel建立文档。如:

Option Explicit

Dim oleExcel As Object

Dim oleWorkbook As Object

Dim oleWorkSheet As Object

Private Sub Command1_Click()

Set oleExcel = CreateObject("Excel.Application")

Set oleWorkbook = oleExcel.Workbooks.Add

Set oleWorkSheet = oleWorkbook.Sheets.Add

oleExcel.ActiveCell.FormulaR1C1 = "热情软件屋"

oleExcel.ActiveCell.Interior.ColorIndex = 42

oleWorkSheet.Columns("A:A").ColumnWidth = 13.5

oleExcel.Visible = True

End Sub

还有一种办法,是在设计时选择菜单中的“工程|引用”,在对话框中选中“Microsoft Excel 8.0 Object Library”。这个库中包括Office 97的所有对象的定义和有关常数的定义。如果采用这种方法,上面的代码就可以改成这样:

Option Explicit

Dim oleExcel As New Excel.Application

Dim oleWorkbook As Workbook

Dim oleWorkSheet As Worksheet

Private Sub Command1_Click()

Set oleWorkbook = oleExcel.Workbooks.Add

Set oleWorkSheet = oleWorkbook.Sheets.Add

oleExcel.ActiveCell.FormulaR1C1 = "热情软件屋"

oleExcel.ActiveCell.Interior.ColorIndex = 42

oleWorkSheet.Columns("A:A").ColumnWidth = 13.5

oleExcel.Visible = True

End Sub

7 ExcelVisual Basic编辑器中查看VBA代码

回到开始

如何知道剪贴板的文本或图形来自哪个窗口

陈健:我用VB5编一剪贴板程序,需要知道其中的文本或图形已经被选中的那个程序的句柄(或类似的信息),应该如何获得?

李海:在Windows API中有一个函数GetClipboardOwner(),这个函数可以返回拥有当前剪贴板的窗口的句柄,也就是哪个窗口把内容放置到剪贴板的,这个窗口通常是一个文本框或其他编辑控件,而不是那个程序的主窗口。这个函数也可能返回0,表示没有窗口拥有当前剪贴板。比如你在记事本中复制一些内容到剪贴板,然后退出记事本,这时函数返回0。下面是一个简单的例子:

Private Declare Function GetClipboardOwner Lib "user32" () As Long

Private Sub Command1_Click()

Label1.Caption = "窗口句柄为" & GetClipboardOwner()

End Sub

回到开始

虚拟内存的设置

小龙:在WINDOWS98的“系统--属性--性能”中,关于“虚拟内存”用户自己设置的最佳方法。另外,在Windows 2000中不知能否一样操作?我的计算机硬盘C盘和D盘都有1.9G的可用空间,内存为128M

李海:在Windows的“系统--属性--性能”中, “虚拟内存”的默认设置是由系统自动管理虚拟内存,而不是由用户设置。在这种情况下,系统会在Windows所在的驱动器上建立一个虚拟内存交换文件,这个文件的大小是由系统动态地根据程序需要建立的。只有当用户的Windows所在的驱动器上空间比较小,希望将交换文件建立到其他硬盘上或限制该交换文件的大小时才需要手工设置。对于你的情况,根本没有必要修改设置。

回到《李海文选》目录

如果您有任何建议,请给我发电子邮件:
版权所有 李海,热情软件屋 1997-2006


WU Banner from WebUnion Chinese Network