博客 | 彩信 | 影视 | 两性 | 笑话 | 文学 | QQ酷 | 游戏 | 动漫 | 健康 | 人才 | 星座 | 心理 | 网摘 | 图库 | 下载 | 旅游 | 交友 |
社会百态 | 美图写真 | 精彩网文 | 动漫卡通 | 搞笑猎奇 | 历史军事 | 文化旅游 | 明星娱乐 | 两性话题 | 恐怖灵异 | FLASH小游戏 |
您的位置:首页>技术开发>Script>正文
 

Delphi Shell

时间:2006-5-28 17:28:37 | 来自:网络收集 | 浏览:收藏到新浪ViVi 收藏到365KEY

Delphi Shell

因为ShellExecute总还是在经常用到。而且平率比较高。但我不打算重点讲shell

的参数。因为我打算做个面向对象封装。避开不必要参数方面下次调用。

和其它界面API的参数差不多句柄。要实行的操作。程序名。后面两个不重要

的参数。然后是消息。ShellExecute主要实施的操作是。打开。查找。打印。

因此我打算做三个函数分别封装其具体。由于要打开不同的应用程序重点

是句柄和程序名。所以两个属性。就是它们了。然后我打算加入一个其他功能

就是关闭应用程序。其实就是对要关闭的应用程序发送WM_CLOSE消息。

OK我们就来封装。

//这里自定义一个异常以方便我们使用

unit myShell;

interface

uses
  Windows,  SysUtils, ShellAPI;//shellexecute就定义在ShellApi单元中
Type
    TShellException = class (Exception)
end;

Type
  TShellExecute = class
  private
    FExeName : string ;
    FHandle  : HWND;
    procedure SetExeName(Value : string);
    procedure SetHandle (Value : HWND);
  public
   constructor Create(h : HWND;PrgName : string );
   property  ExeName : string read FExeName write SetExeName;
   property  Handle  : HWND   read FHandle  write SetHandle;
   procedure Execute ;
   procedure FindExe;
   procedure PrintExe;
   procedure ClosePrg;
End;

implementation

Constructor TShellExecute.Create(h : HWND;PrgName : string );
begin
    if (h>0) and (PrgName<>'') then
    begin
     self.ExeName:=PrgName;
     self.Handle :=h;
    end
    else
    raise TShellException.Create('Handle or PrgName is Null');
end;

//执行网页,Email,普通程序
procedure TShellExecute.Execute ;
begin
ShellExecute(self.FHandle,'open',PChar(self.FExeName),nil,nil, SW_SHOW);
end;

//查找指定文件
procedure TShellExecute.FindExe;
begin
ShellExecute(self.FHandle,'find',PChar(self.FExeName),nil,nil, SW_SHOW);
end;

//打印文件
procedure TShellExecute.PrintExe;
begin
ShellExecute(self.FHandle,'print',PChar(self.FExeName),nil,nil, SW_HIDE);
end;

//关闭程序
procedure TShellExecute.ClosePrg;
begin
 self.FHandle:=FindWindow(nil,PChar(self.FExeName));
  if FHandle<>0 then
    SendMessage(self.FHandle,WM_Close,0,0)
  Else
    raise TShellException.Create('The Programm is null')
end;

procedure TShellExecute.SetExeName(Value : string);
begin
 if value <> '' then
    self.FExeName:=Value
 else
    raise TShellException.Create('The Name should not Null');
end;

procedure TShellExecute.SetHandle (Value : HWND);
begin
  if Value > 0 then
     self.FHandle:=value
  else
     raise TShellException.Create('The Handle should not Null');
end;

end.



打印
上一篇:在DELPHI中更简单的存取JPEG文件到SQLSERVER数据库 下一篇:Delphi开发单机瘦数据库程序要点 

版权申明:
  本站属于54stu个人网站,大部分文章来自网络搜集,大家可以自由转载本站的文章,但原作者和来自我站的链接必须保留。文章版权归原作者所有。
  五四电脑技术资讯网(54stu.com)依法保护知识产权,如果我们的文章有涉及或侵犯您的有关权益,请即时与我们联系,注明网址及文章,我们会即时处理或删除,感谢您的合作!

站点最新

·菜鸟手册 诺基亚手机日常问题解答
·如何防范手机被蓝牙病毒“咬”伤
·蓝牙适配器的具体安装及使用方法
·06月22日值得注意病毒列表
·Work 2.0时代,服务决定一切
·06月21日值得注意病毒列表
·紫光华宇拼音输入法5.0版正式发布
·微软即付即用计划:无奈还是阴谋
·期盼:微软正在开发Windows XP S
·9991阴魂不散!多多QQ表情病毒奥
·隐藏文档索财 国内截获首例敲诈病
·没有防火墙的安全 是明智还是愚蠢
·SoBus公交搜宝让您成为公交通(上
·SoBus公交搜宝让您成为公交通(下
·既然有妙笔,干嘛你不来?——纽
·病毒伪装成世界杯球票 已出现多个
·让P2P穿透防火墙:微软再推两新服
·中望CAD2006发布会在广州成功举行
·笔记本的噩耗:Vista将是电量杀手
·江苏省软件产品检测中心对浩辰IC
·腾讯将于6月15日推出QQ会员等级体
·可标记文章已读:IE7 Beta3八月推
·电脑病毒“班沃母”现身为世界杯
·全球最大BT网站即将重新开张!
·微软杀毒新贵Live OneCare正式发
·全球最大BT下载网站遭警方突袭
·病毒借达芬奇密码作乱 教您如何防
·找客户--为您找到新客户,开拓新财
·腾讯公司关于“QQ密码修改方式”
·专业助手!Excel 2007 beta 2 试用

站点推荐

Adobe Premiere 6.0认证考试大纲
网络工程师专业术语大集合之路由

支持我们
 
五四娱乐网--新五四,新娱乐!-WwW.54stu.com 用心生活-娱乐万家(本站法律顾问:陈律师)
五四娱乐网版权所有 All Rights Reserved 蜀ICP备05025894号  投诉QQ:3458124