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

📄 127.htm

📁 水木清华的BBS文章
💻 HTM
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>CTerm非常精华下载</title>
</head>
<body bgcolor="#FFFFFF">
<table border="0" width="100%" cellspacing="0" cellpadding="0" height="577">
<tr><td width="32%" rowspan="3" height="123"><img src="DDl_back.jpg" width="300" height="129" alt="DDl_back.jpg"></td><td width="30%" background="DDl_back2.jpg" height="35"><p align="center"><a href="http://bbs.tsinghua.edu.cn"><font face="黑体"><big><big>水木清华★</big></big></font></a></td></tr>
<tr>
<td width="68%" background="DDl_back2.jpg" height="44"><big><big><font face="黑体"><p align="center">         Delphi编程                            (BM: strayli FlyingBoy)          </font></big></big></td></tr>
<tr>
<td width="68%" height="44" bgcolor="#000000"><font face="黑体"><big><big><p   align="center"></big></big><a href="http://cterm.163.net"><img src="banner.gif" width="400" height="60" alt="banner.gif"border="0"></a></font></td>
</tr>
<tr><td width="100%" colspan="2" height="454"> <p align="center">[<a href="index.htm">回到开始</a>][<a href="100.htm">上一层</a>][<a href="128.htm">下一篇</a>]
<hr><p align="left"><small>关闭外部应用程序 <br>

  <br>

如何在 Delphi 应用程序中, 去关闭外部已开启的应用程序? <br>

下面给出一段在 Delphi 中关闭“计算器”程序为例: <br>

var <br>

HWndCalculator : HWnd; <br>

begin <br>

// find the exist calculator window <br>

HWndCalculator := Winprocs.FindWindow(nil, '计算器'); // close the exist <br>

Calculator <br>

if HWndCalculator <> 0 then <br>

SendMessage(HWndCalculator, WM_CLOSE, 0, 0); <br>

end; <br>

  <br>

                     程序中使用自定义的鼠标 <br>

  <br>

一.建立工程与一个资源档 <br>

用Image Editor编辑一个鼠游标 <br>

  (Fild | New | Resource File) <br>

新建一个 CURSOR_1 的 CURSOR, 设定好它的 Hot Spot <br>

  (Cursor | Set Hot Spot) <br>

存档时注意要和建立的Project存在同一个目录 <br>

在本例我们先假定为 MyCursor.res <br>



二. 程序部分 <br>

定义一个常数crMyCursor, 这个常数您必须设成大於零 <br>

的任何整数, 以 LoadCursor() 函数将自订的鼠标资源 <br>

load 进来, 以下为源代码: <br>

// unit.pas <br>

unit Unit1; <br>

interface <br>

uses <br>

SysUtils, WinTypes, WinProcs, Messages, Classes, <br>

Graphics, Controls, Forms, Dialogs; <br>

const <br>

crMyCursor = 1; (* 宣告一个常数 *) <br>

type <br>

TForm1 = class(TForm) <br>

procedure FormCreate(Sender: TObject); <br>

private <br>

{ Private declarations } <br>

public <br>

{ Public declarations } <br>

end; <br>

var <br>

Form1: TForm1; <br>

Form1: TForm1; <br>

{$R mycursor.res}//这行$R不可少, 否则自订的鼠游标就出不来了 <br>

implementation <br>

{$R *.DFM} <br>

procedure TForm1.FormCreate(Sender: TObject); <br>

begin <br>

//将鼠标资源 load 进来 <br>

Screen.Cursors[crMyCursor] := LoadCursor (hInstance,'CURSOR_1'); <br>

Cursor := crMyCursor;//指定 form1 的 cursor 为自订鼠标 <br>

Button1.Cursor := crMyCursor;//指定Button1的cursor为自订鼠标 <br>

end; <br>

end. <br>

  <br>

                  得到Windows用户名和序列号 <br>

  <br>

如何得到Windows的用户名称和产品序列号呢? <br>

1. 可以用 WNetGetUser() 这个函数来得到 user name; <br>

2. Windows 95 的产品序号可以用 TRegistry 到 Registry Database 中找出来; <br>

// 取得用户名称 <br>

function GetUserName: AnsiString; <br>

var <br>

lpName: PAnsiChar; <br>

lpUserName: PAnsiChar; <br>



lpnLength: DWORD; <br>

begin <br>

Result := ''; <br>

lpnLength := 0; <br>

WNetGetUser(nil, nil, lpnLength); // 取得字串长度 <br>

if lpnLength > 0 then <br>

begin <br>

GetMem(lpUserName, lpnLength); <br>

if WNetGetUser(lpName, lpUserName, lpnLength) = NO_ERROR then <br>

Result := lpUserName; <br>

FreeMem(lpUserName, lpnLength); <br>

end; <br>

end; { GetUserName } <br>

  <br>

// 取得 Windows 产品序号 <br>

function GetWindowsProductID: string; <br>

var <br>

reg: TRegistry; <br>

begin <br>

Result := ''; <br>

reg := TRegistry.Create; <br>

with reg do <br>

with reg do <br>

begin <br>

RootKey := HKEY_LOCAL_MACHINE; <br>

OpenKey('Software\Microsoft\Windows\CurrentVersion', False); <br>

Result := ReadString('ProductID'); <br>

end; <br>

reg.Free; <br>

end; <br>

  <br>

                              实现打开文件 <br>

  <br>

打开Windows已经注册的文件其实很简单,根据以下代码定义一个过程: <br>

procedure URLink(URL:PChar); <br>

begin <br>

ShellExecute(0, nil, URL, nil, nil, SW_NORMAL); <br>

end; <br>

在要调用的地方使用 <br>

URLink('Readme.txt'); <br>

如果是链接主页的话,那么改用 <br>

URLink('http://gui.yeah.net'); <br>

  <br>

                        得到执行程序的目录 <br>

  <br>

  <br>

  SysUtils 单元中有 ExtractFileDir 与 ExtractFilePath两个类似的函数, 用哪 <br>

一个?没有太大的关系。 <br>

  不过有以下的差别: ExtractFilePath 传回值的最後一个字元是反斜杠“/”。 <br>

procedure TForm1.Button1Click(Sender: TObject); <br>

begin <br>

ShowMessage(ExtractFileDir(Application.Exename)); <br>

// ie: c:\temp <br>

ShowMessage(ExtractFilePath(Application.Exename)); <br>

// ie: c:\temp\ <br>

end; <br>

相同点: 如果执行文件在根目录下(如:C:\SAMPLE.EXE)的话, 两者的传回值相同, <br>

且最后一个字符都是“/”。 <br>

  <br>

                       将鼠标锁定在一定范围 <br>

  <br>

如何将鼠标锁定在一定的范围内呢? <br>

请在Form中放置二个 Button, 然後分别为这两个按钮定义OnClick响应事件如下: <br>

// 限制 <br>

procedure TForm1.Button1Click(Sender: TObject); <br>

var <br>

rtButton2: TRect; <br>

begin <br>



rtButton2 := Button2.BoundsRect; <br>

MapWindowPoints(handle, 0, rtButton2, 2); // 座标换算 <br>

ClipCursor(@rtButton2); // 限制鼠标移动区域 <br>

end; <br>

  <br>

// 还原 <br>

procedure TForm1.Button2Click(Sender: TObject); <br>

var <br>

rtScreen: TRect; <br>

begin <br>

rtScreen := Rect(0, 0, Screen.Width, Screen.Height); <br>

ClipCursor(@rtScreen); <br>

end; <br>

</small><hr>
<p align="center">[<a href="index.htm">回到开始</a>][<a href="100.htm">上一层</a>][<a href="128.htm">下一篇</a>]
<p align="center"><a href="http://cterm.163.net">欢迎访问Cterm主页</a></p>
</body>
</html>

⌨️ 快捷键说明

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