System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.EnableRaisingEvents = false;
proc.StartInfo.FileName = "rundll32.exe";
proc.StartInfo.Arguments = "shell32,OpenAs_RunDLL d:a.txt";
proc.Start();
//上面的代码可以打开一个文上件,对于未知文件可以打开WINDOWS的打开方式
//我现在想如果是未知文件,弹出提示框,“未知的文件”
//这样该如何写呢。。

解决方案 »

  1.   

     文档与程序的关联信息在注册表中   
      ;     t0是文件扩展名   
      ;     ttt是程序名   
      HKEY_CLASSES_ROOT\.t0   =   文档类型ID   
      HKEY_CLASSES_ROOT\ttt.Documenttid\shell\open\command   =   ttt.EXE   %1   
      HKEY_CLASSES_ROOT\ttt.Documenttid\shell\open\ddeexec   =   [open("%1")]   
      HKEY_CLASSES_ROOT\ttt.Documenttid\shell\open\ddeexec\application   =   ttt   
              ;   注意:此应用程序是可选的   
              ;(默认为“命令”中的应用程序名)   
      HKEY_CLASSES_ROOT\ttt.Documenttid   =   文档类型全称   
      -----------------------------------   
      有个API函数   打开指定文档,没有程序与该文档关联时显示“让用户选择应用程序的那个框框”   
      ShellExecute(this->m_hWnd,"open","c:\\abc.txt","","",SW_SHOW   );   
     
      

  2.   

    楼上你们说的我都实现了。。
    我不需要这样的。。
    我需要找开一个未知文件的时候,有一个提示信息:
    而不是打开WINDOWS的打开方式。。
      

  3.   

    打开文件应该是操作系统的事, 应该很难取得操作系统无法打开,而出现选择打开方式这个事件吧??window api不知道有没有这样一个??
      

  4.   

    process.start("d:\\123.456");
    试试看,如果你的电脑存在.456这样的文件,就会出现,那样的结果
      

  5.   

    trycatch打不开则未未知,不知是否可以,我没试过,个人感觉实在没办法可一试下
      

  6.   

    [DllImport("rundll32.dll")]...System.Diagnostics.Process.Start("rundll32.exe","shell32,OpenAs_RunDLL C:\1.txt"); 
      

  7.   

    楼主,请问你最后是怎么解决“找开一个未知文件的时候,有一个自定义的提示信息,不是打开WINDOWS的打开方式”这个问题的呢?是怎么实现拦截的?