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

📄 9918.txt

📁 关于编程技术技巧的文章
💻 TXT
📖 第 1 页 / 共 4 页
字号:
===========================================================

                         《编 程 技 术》

               一份属于广大编程爱好者的电子杂志

             这是一份完全关于探讨编程的免费电子杂志
             您可以任意传播本刊,但必须保持它的完整
            本刊承诺绝不向订户发送任何形式的垃圾邮件!
===========================================================
             第18期 99/07/25          本期发送数: 2648 
===========================================================

◆本期栏目◆
 *刊首语*
 *技术文档*
    用VB将命令行软件Windows化
    在Visual Basic中终止Windows 95
    PowerBuild 的高级菜单设计技术
    用C++BUILDER建立自己的WEB浏览器 
    怎样在C++Builder中创建使用DLL
    用DELPHI编写TAPI应用程序
    利用Delphi编程发送E-mail 
    FoxPro中的陷阱技术及应用
 *有问必答*

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

◆刊首语◆
    
    真要命,我的E-mail已经罢工大半周了,可至今还没有恢复,真可恨,
从本期的有问必答栏目中就可以看的出。可能有不少朋友的提问信或者解
答信就这样迷失在茫茫的网海之中。在此向这些朋友打声招呼,我也实在
是没办法。免费的东西毕竟不是这么好用的,我现在只盼望着不要丢信就
可以了。记得不久前一次邮件系统故障,我整整两天没有收到一封信,平
时我可是每天有二十来封啊!痛心啊,说不定错过了什么“终身大事”:-)

***********************************************************
***********************************************************

◆技术文档◆
  
                 用VB将命令行软件Windows化

                           刘强

    有很多深受欢迎的软件,如ARJ,UNDISK等都是在DOS环境下以命令行的形
式出现的。其特点就是依靠大量的参数和开关变量来实现其丰富的功能。利
用Visual Basic可以简单地把此类软件改写成WINDOWS版本,其中大量的开关
参数可用菜单、列表框、组合框和复选框等一一映射成图形界面。而命令的
调用。可以用VB提供的SHELL函数,其语法为:

        shell(命令字符串[,窗口风格])

    如以下VB小程序:

        Sub Command3D1_Click ()

        Dim x

        x = Shell("c:\tools\arj.exe a a:\demo c:\demo\*.*")

        End Sub

    但使用SHELL函数 会出现WINDOWS界面和DOS黑色界面的突然切换,显得
不美观。如何解决这个问题呢?使用WINDOWS的API函数WinExec,可以在隐含
的窗体中启动应用程序,使命令行程序完全在后台执行。下面给出一例,将
ARJ完全WINDOWS化,其效果完全可以乱真。

        Sub Command1_Click ( )

        Dim cmd As String

        Dim hWnd As Integer

        cmd = "c:\dos\ARJ.pif " & list1.Text & " -" & LIST2.Text &
" " & text2.Text & " " & text1.Text ’list1、list2输入参数,text1,text2输入文件路径

        hWnd = WinExec(cmdline, 0) ’参数为0则隐藏窗体

        If HWND < 32 Then ’hWin<32则启动应用程序失败

        MsgBox "error!"

        Exit Sub

        End If

        While GetModuleUsage(HWND%)

        mousepointer = 11 ‘鼠标呈沙漏状

        WAIT% = DoEvents()

        Wend

        mousepointer = 1 ’鼠标复原为箭头

        End Sub

    在此例中,笔者使用了WINDOWS的PIF编辑器将ARJ.EXE编辑成ARJ.PIF,
是因为类似ARJ这样的软件是以全屏方式执行的,而WINEXEC函数只能隐藏以
窗体方式运行的程序。在编辑PIF文件时显示方式选择“窗口”,执行方式
选择“后台”,这样就解决了上面提到的界面突换的问题。而调用API函数
GetModuleUsage以获得应用程序结束的标志,若运行完毕则返回TRUE,若
未运行完毕则让出CPU控制权,为运行ARJ提供时机。

    这样的小程序完全可以实现命令行软件的WINDOWS化,而且运行起来真
假难辨,有兴趣的读者不妨试一试。

***********************************************************
 
                 在Visual Basic中终止Windows 95

                              谭翁

    在Visual Basic程序中,可以使用Windows API函数来重新启动计算机
系统,文本介绍如何退出Windows 95并关闭计算机系统。

# 关闭计算机系统

    可以使用Windows API的ExitWindowsEx函数来从Visual Basic程序中
重新启动计算机系统。要使用该函数,需要将如下声明语句包含在窗体的
通常声明部分中:

        Private Declare Function ExitWindowsEx Lib "user32" (ByVal 
uFlags As Long, ByVal dwReserved As Long) As Long 

    ExitWindowsEx 函数需要2个参数,可以使用一个或多个下面的标识
的组合来告诉ExitWindowsEx函数希望进行关机过程。

    EWX_FORCE所有的进程都被强制终止。

    EWX_LOGOFF所有的进程被强制终止,并且用户退出登录(logged off)。

    EWX_POWEROFF计算机系统被关机,并且如果支持节电特性,则计算机被物理关机。

    EWX_REBOOT计算机系统被关机并重新启动。

    EWX_SHUTDOWN计算机被物理地安全地关机。

    下面的样例程序中使用了上面的三个标识的组合。该标识组合
(EWX_LOGOFF,EWX_FORCE, 以及EWX_REBOOT)告诉Windows95退出所有正
在执行的进程,使用户退出网络登录,使计算机系统处于准备状态以供用
户关机。

# 样例程序

    该样例程序显示了如何关闭计算机系统。

    1.在Visual Basic中开始一个新的项目,采用缺省的方法建立Form1。

    2.将如下常量和声明语句添加到Form1的通常声明部分中(注意该声
明语句需要书写在一行内):

        Private Declare Function ExitWindowsEx Lib "user32" (ByVal 
uFlags As Long, ByVal dwReserved As Long) As Long

        Const EWX_LOGOFF = 0

        Const EWX_SHUTDOWN = 1

        Const EWX_REBOOT = 2

        Const EWX_FORCE = 4

        Const EWX_POWEROFF = 8

        Const EWX_RESET = EWX_LOGOFF + EWX_FORCE + EWX_REBOOT

    3.在Form1上添加一个命令按钮控件,采用缺省的方法建立Comand1。
将它的Caption属性设置为“重新启动计算机”。

    4.将如下代码添加到Command1的单击事件中: 

        Private Sub Command1_Click()

        Dim X As Long

        X = ExitWindowsEx(EWX_RESET, dwReserved)

        End Sub

    按下F5来运行上述样例程序,单击命令按钮,即可重新启动计算机系统。
                     
***********************************************************

                     PowerBuild 的高级菜单设计技术

                      武警学院计算机中心 程连孚
            
  做为事件驱动的系统,菜单所起的作用是明显的。一个好的菜单,能给
程序起到锦上添花的作用。PowerBuild 5.0(以下简称PB5)在这方面给用户
提供了很大的灵活性,使用户能根据自已的爱好和需求设计出各种不同风格
的菜单。下面就谈谈如何在PB5中实现两种别致的菜单:动态菜单和声音菜单。
一、动态菜单
如果一个程序的选项复杂,那么菜单项也会相应地增多。在主界面上设置过
多的菜单项会影响界面的简洁,有时也会使用户无所适从。如果将菜单设置
成动态菜变化的菜单,在一个功能下只显示相应的菜单,那么用户使用起来
会效果更好。
菜单在PB5中是窗口的一个属性,我们可在通过改变这种属性来改变窗口菜
单的显示。我们假设在已存在一个库test.pbl,该库中有一个标准的File菜
单(m_file),

窗口上有一个按钮"Change to Another Applicatiuon",按下后,程序将启
动另一个应用模块,该模块将用自己的菜单来替代现有的菜单。我们可以通
过下面的方法来实现这一功能。     
    1、在菜单模板下,创建一个菜单,设为 m_test,它与前面的file菜单
有完全不同的设置
    2、利用"Change to Another Application"按钮的脚本来改变菜单的显示。
        单现"Script"按钮,在其中添加如下的语句:
        Parent.ChangeMenu(m_test)
    3、运行程序,即可得到结果。
需要说明地是,改变菜单项必须通过ChangeMenu( )函数,而不能通过标
准的"."来无成,因为在PB5中,菜单对窗口来说是保护(protected)属
性,该属性只能通过界面函数来访问。另外,如果在菜单项中添加脚本来
动态改变菜单,则脚本中应该使用语名:
        ParentWindow.ChangeMenu(m_test)
二、为菜单添加声音
在多媒体演示产品中,我们经常会遇到这样的情形,当鼠标单击某一菜单
或按钮时,音箱会发出某种音效(如果有这种设备的话),这使得软件更
加生动。在 PB中我们也可以很容易地实现这一点。
PB中没有直接调用多媒体功能的函数,要想为一个程序加入多媒体功能,
必须通过调用Windows API函数"SndPlaySound()"或"PlaySound()"来完成。
假设我们己有有了一个库"test.pbl",其菜单也如前所示,具体实现步骤
如下 :

1、在"Declare"菜单中选择"Local External Functions…",弹出的对话
框中填入如下的声明语句:
Function Boolean sndPlaySound(String s_file,&
UINT u_flags) Library "WINMM.dll"
    Function UINT LoadLibrary(String as_library) "kernel32.dll" 
    Subroutine FreeLibrary(UINT Hinstance)Library "kernel32.dll"
实际上PB中的菜单也是动态的,"Declare"必须在编辑菜单时才出现     
2、为每个菜单项选择相应的声音文件" .WAV"
    3、为菜单项添加脚本,驱动声音文件,以"new"菜单为例:
        sndPlaySound ("new.wav",0)
    sndPlaySound函数有两个参数,前面的一个为声音文件名,后面的一
个为播放方式,主要用到有如下几个:
        0--同步播放
        1--异步播放
        2--找不到声音文件即返回
        4--播放声音文件在内存中的映象
    声音文件最好是放在当前目录下,否则系统将按如下的顺序进行查
找:当前目录,Windows目录,Windows系统目录,PATH中列出的目录,
网络映射目录。     
    完成上述步骤后,运行程序即可听到菜单的声音了。     

作者地址:河北省廊坊市武警学院计算机中心
邮编: 065000
E_mail:chlf@hotmail.com 
                 
***********************************************************
     
                用C++BUILDER建立自己的WEB浏览器 

                   中央民族大学计算机系 杨超

---- 用够了IE和NETCAPE的朋友,有没有想过也编制一个自己的浏览器呢?
用C++BUILDE使得你能够方便高效的创建自己的INTERNET程序.由于C++BUILDER
的基本语言是C++,所以它几乎可以做任何事情,通过C++BUILDER的组件设置,
你可以象其他应用程序一样建立INTERNET应用,意味着你可以扩展这些组件来
增强他们的功能,如果需要的话,它也可以处理低水平的API细节,因为它是基
于c++的.如果直接使用API(如ISAPI)建立INTERNET应用,你选用的工具必须能
使用并建立DLL,而且能利用这些DLL公布的接口. 

---- 让我们看一下它的INTERNET组件及功能: 
---------------------------------------------------------
FTP 支持远程机器间交换文件
THTML 支持分析和规划html数据并提供一个
当前html页的可滚动视图
THTTP 提供访问超级文本传输协议
TNTTP 提供读取新闻组的能力
TPOP 提供访问pop3电子邮件协议
TSMTP 支持传送Internet邮件报文组给SMTP服务器
TTCP 提供访问winsock传送控制协议(客户和服务器端)
TUDP 提供访问winsock用户数据图协议(客户端和服务器端)
---- 现在我们就可以开始建立我们的浏览器了: 

---- 1.先建立一个新的工程文件 

---- 创建一个新表单,设它的Caption属性为mybrowse,Position的属性为
PoScreeCenter将一个TTabControl组件放在表单顶部,这个控制在你浏览中
列出的URL使你很容易返回到你已经访问过的节点,设置Align的属性为alTop,
这样以使程序运行时它总处于表单的顶端,再放置一个Tpanel并设置Align属
性为alBottom,使它运行时处于底端, 在对象观察器中删除Caption属性,并
设TabOder为0.再向表单中加入另一 Tpanel,清除其Caption属性,并放置两
个TBitBtn,Caption分别设置为GO和HOME,在表单的底部放置一个TcomBoBox
并删除他的Text属性,程序运行时,你将在它里面键入或下拉选择你要访问
的URL ..最后在表单上放置一个THml组件,这将显示你访问的网页.下面就
可以编写代码了. 

---- 2. (1).为TabControl的OnChange事件( 使cbURL与tcURL同步)编写
代码: 

cbURL- >Text=tcURL- >Tabs-
>Strings[tcURL- >TabIndex];
cbURL- >SelectAll( );
bbGo- >Click( ); //使点击go与点表格相同效果
---- (2).为THtml的OnbeginRetrieve事件编写代码: 

Cursor=(TCursor)crHourGlass;
if (cbURL- >Items- >indexOf(htBrowser- >URL)==-1)
{

⌨️ 快捷键说明

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