我想问两个问题:
1.如何通过一个应用程序调用另一个应用程序,Delphi里类似于VB里的Shell功能的函数是哪一个??如何用
2.两个不同的应用程序如何用自定义的消息进行通信?
1.如何通过一个应用程序调用另一个应用程序,Delphi里类似于VB里的Shell功能的函数是哪一个??如何用
2.两个不同的应用程序如何用自定义的消息进行通信?
解决方案 »
- 为什么同一个函数,却只能删除最后一条记录,如果删除其他记录就出错(急),分不够再加
- 求一个简单的SQL语句
- TChart图型曲线的打印问题!急求!
- 请教有关TREEVIEW的结点DATA属性的用法
- 请问如何取其应用程序的窗口句柄及如何取得它的编辑框及按钮列表....
- csdn难道没高手了吗,这个解决不了吗
- 大放血:知道的请指条道,不知道的请up捎带学习。每人10分以上,前370人有份。
- “操作必须使用一个可更新的查询”这是什么意思?
- > 和 <是什么意思?
- 在query中union的用法及功能是什么?书上找不到请指点
- 复制Clientdata?
- 怎样用字符串(如000111001)为系统分配权限?请看这部分不完全正确的代码,请更正
ShellExecute需要uses shellapi
比如我要运行"C:\1.exe"
ShellEXecute "C:\1.exr" 就行了??
两个函数有什么不一样,他们还有什么参数??
LPCTSTR lpOperation, // pointer to string that specifies operation to perform
LPCTSTR lpFile, // pointer to filename or folder name string
LPCTSTR lpParameters, // pointer to string that specifies executable-file parameters
LPCTSTR lpDirectory, // pointer to string that specifies default directory
INT nShowCmd // whether file is shown when opened
);
等等。
· 声明形式 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]');
如果是打开外部执行程序的话,那么也可以直接调用。