因电脑上没有安装ai 软件,用ShellExecute命令打开ai文件时出错...能不能像双击那样,出现个未关联提示?   请大侠指点var
 fileName: string;
begin
 fileName := 'C:\temp46.ai';
  ShellExecute(handle, 'Open', PChar(fileName), nil, nil, SW_NORMAL); //打开文件
end;

解决方案 »

  1.   

    ShellExecute(GetDesktopWindow,   'open',   'rundll32.exe', PChar('shell32.dll   OpenAs_RunDLL'   +   '   C:\temp46.ai'),nil,     SW_SHOWNORMAL);
      

  2.   


    var
      fileName: string;
    begin
      fileName := 'C:\temp46.ai';
      if ShellExecute(handle, 'Open', PChar(fileName), nil, nil, SW_NORMAL) = SE_ERR_NOASSOC then
    //    ShellExecute(0, 'Open', PChar('notepad.exe'), PChar(filename), nil, SW_NORMAL);
        ShellExecute(GetDesktopWindow, nil, 'RUNDLL32.EXE',
          PChar('shell32.dll, OpenAs_RunDLL ' + fileName),
          PChar(ExtractFilePath(ParamStr(0))), SW_NORMAL);
      

  3.   


    出现个新问题,
    打开txt\jpg\word   文件都提示 打开方式...
      

  4.   

    SE_ERR_NOASSOC 判断有没加?这个问题有两个关键点
    1、SE_ERR_NOASSOC 判断 
    2、'rundll32.exe' 调用系统对话框
      

  5.   


    提示出错!
    Access violation at address 7C9301B3 in module 'ntdll.dll'. Write of address 7D5CD6BA
      

  6.   

    是其它代码报的错吧,调试一下看
    或者把D7重启一下,有时候可能是IDE的错误