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

📄 delp002.html

📁 对于学习很有帮助
💻 HTML
字号:
<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>给CDROM安个软开关 </title>
<!--***********-->
<link rel="stylesheet" href="../../../fwolf_style.css"></head>

<body bgcolor="#FFFFFF" >
<table width="75%" border="0">
  <tr>
    <td>
      <center>
        <font color="#0000c0">
        <h2>给CDROM安个软开关 </h2>
        </font> 
        <h3> 湖北襄樊神龙汽车公司组织系统部 <br>
          黎云华 </h3>
      </center>
      <p><font color="#ffffff">----</font> 现在,CDROM已成为个人PC机的标准配置了。平常使用CDROM软件盘片较多的朋友,经常开关CDROM,开关次数一多,容易使开关磨损,造成接触不良。根据这种情况,最近我用Delphi编写了一个软件,功能就是开关CDROM,下面我给大家介绍:此程序一运行,就会以小图标驻留在系统的Tray小图标区。当鼠标经过小图标时,程序提示这是一个“CDROM软开关”程序,在小图标上单击鼠标右键,弹出菜单,点击Eject即可打开CDROM门,点击Close关闭CDROM门,点击Exit则退出应用程序。 
      <p><font color="#ffffff">----</font> 要实现此程序,有四个技术要点。 
      <p><font color="#ffffff">----</font> 1、如何控制CDROM开关? 
      <p><font color="#ffffff">----</font> 这可以利用MCI(Media Control Interface)函数中的mciSendString()来实现,MCI可以简单地看作是一组用来控制多媒体设备的函数,这些函数包含在动态连接库MMSYSTEM.DLL中,该库文件位于Windows3.x、Windows 
        95/98或Windows NT的SYSTEM子目录中。 
      <pre>
打开CDROM门:
 mciSendString('Set cdaudio door 
open wait', nil, 0, handle);
 关闭CDROM门:
 mciSendString('Set cdaudio door 
closed wait', nil, 0, handle);
</pre>
      <font color="#ffffff">----</font> 为了使用这个函数,记住在单元的USES子句中,一定要包含MMSystem单元。 
      <p><font color="#ffffff">----</font> 2、如何以小图标形式显示在系统的Tray小图标区? 
      <p><font color="#ffffff">----</font> Windows 95/98是基于事件驱动机制的操作系统。任何一个控件都是通过发消息或对系统消息的处理来实现功能的。系统的Tray小图标区实际上也是一个标准控件。对它的控制和操纵,与其他的标准控件一样,也是通过发送消息和处理消息进行的。应用程序通过系统功能调用Shell_NotifyIcon向Tray小图标区发送消息,即可达到我们的目的。 
      <pre>
 Shell_NotifyIcon函数包含在单元ShellApi中,说明如下:
 function Shell_NotifyIcon(dwMessage: DWORD; 
lpData: PNotifyIconData): BOOL; stdcall;
 其中:
 dwMessage:要发给Tray小图标区的消息,
可以取以下三个值:
NIM_ADD       在Tray小图标区上增加一个图标
NIM_MODIFY    修改一个Tray小图标区的图标
    NIM_DELETE    删除Tray小图标区的一个图标
 lpData:指向TNotifyIconDataA结构的指针,
此结构是要增加的图标的信息。
 PNotifyIconData = ^TNotifyIconDataA
 TNotifyIconDataA = record
    cbSize : DWORD;
    Wnd : HWND;
    uID : UINT;
    uFlags : UINT;
    uCallbackMessage : UINT;
    hIcon : HICON;
    szTip : array [0..63] of AnsiChar;
 end;
</pre>
      <font color="#ffffff">----</font> 各字段的含义如下所述: 
      <pre>
cbSize:记录TNotifyIconDataA的大小,
设置为SizeOf( TNotifyIconDataA);
Wnd:接收Tray小图标区鼠标事件的窗口
的句柄,例如:MainForm.Handle;
uID:图标的ID(Tray小图标区鼠标
事件的wPara参数的值);
uFlags:此条消息的有效范围(低三位有效)
NIF_MESSAGE    0x1 // uCallbackMessage参数有效
NIF_ICON    0x2 // hIcon is valid参数有效
NIF_TIP        0x4 // szTip is valid参数有效
uCallbackMessage:系统回送消息的ID;
hIcon:显示在Tray小图标区上的图标的句柄;
szTip:鼠标移动到图标上时系统显示的提示信息。
 
增加小图标程序如下:
 procedure TMainForm.InstallIcon;
 var IconData: TNotifyIconData;
 begin
      CdRomIcon := TIcon.Create;
      CdRomIcon.LoadFromFile( 'cddrive.ico' );
      IconData.cbSize := SizeOf( IconData );
      IconData.Wnd := Handle;
      IconData.uID := 1;
      IconData.uFlags := NIF_ICON 
      or NIF_MESSAGE or NIF_TIP;
      IconData.uCallBackMessage := WM_USER+1;
      IconData.hIcon := CdRomIcon.Handle;
      IconData.szTip := 'CDROM软开关';
      Shell_NotifyIcon( NIM_ADD, @IconData );
 end;
</pre>
      <font color="#ffffff">----</font> 记住,在单元的USES子句中,别忘了要加上ShellApi单元。 
      <p><font color="#ffffff">----</font> 3、如何响应Tray小图标区上图标的鼠标事件? 
      <p><font color="#ffffff">----</font> 当用户在你的图标上移动、点击时,Tray小图标区会向应用程序发送如下的消息: 
      <pre>
   messageID = uCallbackMessage
   wParam = uID
   lParam = mouse event (如:WM_LBUTTONDOWN)
</pre>
      <font color="#ffffff">----</font> 我们只需在主窗口的定义中,声明一个过程,来响应这个消息,在它的实现部分就可以对消息进行处理了。 
      消息处理函数声明: 
      <pre>
 procedure IconOnClick(var message:
 TMessage); message WM_USER+1;
 实现过程:
 procedure TMainForm.IconOnClick
( var message: Tmessage);
 var p : TPoint;
 begin
 if (message.lParam = WM_LBUTTONDOWN) then
   ShowWindow(Handle, SW_SHOW );
 if (message.lParam = WM_RBUTTONDOWN) then
 begin
 GetCursorPos(p);
 pop1.Popup( p.x ,p.y );
 end;
 end;</pre>
      <font color="#ffffff">----</font> 其中,pop1为在主窗口中定义的弹出式菜单。 
      <p><font color="#ffffff">----</font> 4、如何控制系统任务栏上不显示应用程序? 
      <p><font color="#ffffff">----</font> 通常的Windows程序在启动后,会在系统任务栏上显示一个小窗口,我们既然已有了小图标,就没必要再显示一个小窗口了。 
      <p><font color="#ffffff">----</font> 这可以通过下列函数实现 
      <pre>
SetWindowLong(Application.Handle,
GWL_EXSTYLE,WS_EX_TOOLWINDOW);
ShowWindow(Handle, SW_HIDE);

</pre>
      <font color="#ffffff">----</font> 把上述这些技术要点结合起来,就可以达到我们预想的目的了。本程序在中文Windows98、Delphi4.0下通过。运行效果良好。 
    </td>
  </tr>
</table>
<p>&nbsp; </p>
</body>
</html>

⌨️ 快捷键说明

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