怎么比较科学一点来用程序打开机器里的默认邮件管理工具?(30分)

  • 主题发起人 主题发起人 bpearl
  • 开始时间 开始时间
B

bpearl

Unregistered / Unconfirmed
GUEST, unregistred user!
怎么比较科学一点来用程序打开机器里的默认邮件管理工具(Outlook或
Foxmail等)?我会用ShellAPI打开新邮件编辑窗口,但怎么能用程序仅
仅打开OutLook或Foxmail呢?当然,直接去调exe文件本身可行,但总是
让人感觉不科学嘛。拜托大家啦!
 
怎样是科学??
 
ShellExecute("mailto:aaa@bbb.com"
是否科学一点?
 
Pipi.说的这样还是会只打开“新邮件”窗口而非Outlook本身。 :-(
 
你怎么运行程序的,还不是打文件名吗? 最科学了。
 
c++builder的源程序,自己翻译吧。
regkey.RootKey=HKEY_CLASSES_ROOT;
regkey.OpenKey("mailto//shell//open//command",false);

AnsiString MailPath=regkey.ReadString("");
MailPath=MailPath.SubString(2,MailPath.Pos(".exe")+MailPath.Pos(".EXE")+2);
delete &regkey;
WinExec( (MailPath+" /mailurl:").c_str() , SW_SHOW);
 
heman的答案还可行,等会儿给你加分.但随之出现了个新问题:若目录字符串里面有
被系统的PATH定义了的"快捷"目录,比如"%ProgramFiles%",则WinExec打开就不行
了,没反映.该怎么办?
 
下面这段代码可以打开了,谢谢大家。(没有算法求精)

procedure TForm1.Button1Click(Sender: TObject);
var RegKey:TRegistry;
strtmp,StrExe:AnsiString;
i:integer;
begin
RegKey:=TRegistry.Create;
RegKey.RootKey:=HKEY_CLASSES_ROOT;
if RegKey.OpenKey('mailto/shell/open/command',false) then
begin
strtmp:=RegKey.ReadString('');
i:=2;
StrExe:='';
repeat
StrExe:=StrExe+strtmp;
i:=i+1;
until strtmp='"';
RegKey.Free;

strtmp:='';
for i:=1 to length(StrExe) do
begin
strtmp:=strtmp+StrExe;
if StrExe='/' then strtmp:='';
end;
StrExe:=strtmp;

ShellExecute(Handle,nil,PChar(StrExe),nil,nil,SW_SHOWNormal);
end
else RegKey.Free;
end;
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部