用DELPHI怎么才能打开WINDOWS的小画家 假如我现在有图片的路径保存在数据库中,我用DBGRID显示,我怎么能通过双击DBGRID的 图片路径的字段打开小画家来显示图片!!请各位大哥大姐给予指导!!!先谢了!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我们常用的函数有两个,WinExec 和 ShellExecute。 1) 使用 WinExec 函数 (属于 WinProcs单元) · 声明形式 UNIT WinExec(LPCSTR lpCmdLine, UINT uCmdShow); [例] var SDir:string; SetLength(SDir,144); GetWindowsDirectory(PChar(SDir),144); SetLength(SDir,StrLen(PChar(SDir))); SDir:=SDir+'\notepad.exe'+' '+savedialog1.FileName; WinExec(PChar(SDir), SW_SHOWMAXIMIZED); 注意:如果 SDir 不是有效路径不会提示错误。 [例] winexec('command.com /c copy *.* c:\',SW_Normal); [例] winexec('start abc.txt'); 2)使用 ShellExecute 函数(属于ShellAPI单元) 它的几个参数: · hwnd:窗体的句柄; · lpOperation:打开程序执行的操作,共预留有"open"、"explore"、 "print"三种方式,此参数可以省略,此时将依据打开的文件(lpFile)的类型执行相应的操作,比如:如果lpFile为一文本文件,那么将会在与该文件相关联的程序中打开它 · lpFile:文件名; · lpParamerters:打开文件时所需的参数; · lpDirectory:文件名所在的路径,当然,一般来说,在Windows中登记过的程序(如WinWord)不必提供此参数; · nShowCmd:打开文件后程序窗体如何显示。 (1)运行可执行文件 [例] 以"记事本"为例 procedure TForm1.OpenBtnClick(Sender:TObject); begin ShellExecute(handle,'open','notepad.exe',nil,nil,SW_ShowNormal); end; 此外,ShellExeCute() 还可以进行链接网络。 [例] procedure TForm1.HttpClick(Sender: TObject); begin ShellExecute(handle,'open','http://liangming.163.net', nil,nil,SW_ShowNormal); end; (2)打开在Windows注册的外部文件 如果一个文件已经在Windows的注册表中注册了,那我们就可以通过以下方法运行他,首先要在uses部分加入: uses Shellapi; 接着定义一个过程 procedure URLink(URL:PChar); begin ShellExecute(0, nil, URL, nil, nil, SW_NORMAL); end; 在要调用的地方使用: URLink('Readme.txt'); 要链接到主页就改用: URLink('http://vortex.yeah.net'); 要发邮件就要在邮件地址前加: mailto URLink('mailto:[email protected]'); 如果是打开外部执行程序的话,那么也可以直接调用。 use ShellapiShellExecute(Handle,'open',PChar('mspaint.exe'),nil,nil, SW_SHOWNORMAL); 老兄:我想问一下,我用: mailto URLink('mailto:[email protected]'); 打开OutLook后,怎么才能把我的附属文档自动加到OutLook的附件中?请给指教!! 寻个Delphi6的企业版 发送邮件问题,都快烦死了 如何遍历treeview的第一级根结点? 请大师们再帮我看个程序(增加操作),指点指点我,先谢谢各位!!! INDY9.0.18如何安装啊?有没有DX能帮忙写一个安装的教材啊!有多少分就给多少! 我想用TClientSocket做一个登录网站的登录工具(输入用户名,密码后登录),该如何做? 请问如何清空Char的数据? 你会选择考哪个试会比较实用一点?为什么? 请问如何修改系统时间?用什么函数? 关于ADO的连接问题,麻烦大侠指点 十进制怎样转换成十六进制 DB...类的控件
· 声明形式 UNIT WinExec(LPCSTR lpCmdLine, UINT uCmdShow);
[例] var SDir:string;
SetLength(SDir,144);
GetWindowsDirectory(PChar(SDir),144);
SetLength(SDir,StrLen(PChar(SDir)));
SDir:=SDir+'\notepad.exe'+' '+savedialog1.FileName;
WinExec(PChar(SDir), SW_SHOWMAXIMIZED);
注意:如果 SDir 不是有效路径不会提示错误。
[例] winexec('command.com /c copy *.* c:\',SW_Normal);
[例] winexec('start abc.txt'); 2)使用 ShellExecute 函数(属于ShellAPI单元)
它的几个参数:
· hwnd:窗体的句柄;
· lpOperation:打开程序执行的操作,共预留有"open"、"explore"、 "print"三种方式,此参数可以省略,此时将依据打开的文件(lpFile)的类型执行相应的操作,比如:如果lpFile为一文本文件,那么将会在与该文件相关联的程序中打开它
· lpFile:文件名;
· lpParamerters:打开文件时所需的参数;
· lpDirectory:文件名所在的路径,当然,一般来说,在Windows中登记过的程序(如WinWord)不必提供此参数;
· nShowCmd:打开文件后程序窗体如何显示。 (1)运行可执行文件
[例] 以"记事本"为例
procedure TForm1.OpenBtnClick(Sender:TObject);
begin ShellExecute(handle,'open','notepad.exe',nil,nil,SW_ShowNormal); end;
此外,ShellExeCute() 还可以进行链接网络。
[例] procedure TForm1.HttpClick(Sender: TObject);
begin
ShellExecute(handle,'open','http://liangming.163.net', nil,nil,SW_ShowNormal);
end; (2)打开在Windows注册的外部文件
如果一个文件已经在Windows的注册表中注册了,那我们就可以通过以下方法运行他,首先要在uses部分加入: uses Shellapi;
接着定义一个过程
procedure URLink(URL:PChar);
begin
ShellExecute(0, nil, URL, nil, nil, SW_NORMAL);
end;
在要调用的地方使用: URLink('Readme.txt');
要链接到主页就改用: URLink('http://vortex.yeah.net');
要发邮件就要在邮件地址前加: mailto URLink('mailto:[email protected]');
如果是打开外部执行程序的话,那么也可以直接调用。
SW_SHOWNORMAL);
打开OutLook后,怎么才能把我的附属文档自动加到OutLook的附件中?请给指教!!