如何在程序里实现双击打开一个.ica文件?双击一个.ica 文件,就可以打开这个文件,好象是一个应用程序的窗口.
我现在想在程序中用程序实现这个双击打开?
如何操作呢?

解决方案 »

  1.   

    类似System.Diagnostics.Process.Start("mspaint.exe");
      

  2.   

    把mspaint.exe换成你的ica文件就可以了
      

  3.   

    楼主的意思是不是:双击一个扩展名为ica的文件,启动你自己的程序把这个文件打开?
    如果是的话,告诉我邮箱,我给你一个例子。
    [email protected]
      

  4.   

    修改注册表  
    hkey_Classes_Root  
    下面新建一个.ica的项  
    然后新建一个default的 value=ica的键值  然后再现键一个tlh的项  
    然后在下面新建一个shell的项  
    然后在下面再新建一个open的项  
    然后在下面再新建一个command的项目  
    然后在下面新建一个defalut的键值 value=""\Program Files\TBS\PatchClient\你的应用程序.exe"" ""%%1""   
    这样你在运行点.ica文件的时候会把路径传给应用程序.exe  
    从b.exe的 main(string[] args)里面取得  然后给你清洁工的代码........其实就你在程序打包的时候写进去就可以了 using Microsoft.Win32; 
    using System.Runtime.InteropServices; [DllImport("shell32.dll")] 
    private static extern void SHChangeNotify(uint wEventId, uint uFlags, 
        IntPtr dwItem1, IntPtr dwItem2); 
    private const uint SHCNE_ASSOCCHANGED = 0x08000000; 
    private const uint SHCNF_IDLIST = 0x0000; 
    private const uint SHCNF_FLUSH = 0x1000; private bool registryShell = false; // 是否关联文件 private void RegistryShell() 

        registryShell = true; 
        RegistryKey vRegistryKey = Registry.ClassesRoot.CreateSubKey(".xxx"); 
        vRegistryKey.SetValue("", "xxx Document"); 
        vRegistryKey = Registry.ClassesRoot.CreateSubKey( 
            @"xxx Document\shell\open\command", 
            RegistryKeyPermissionCheck.ReadWriteSubTree); 
        vRegistryKey.SetValue("", Application.ExecutablePath + " \"%1\""); 
        vRegistryKey = Registry.ClassesRoot.CreateSubKey( 
            @"xxx Document\DefaultIcon", 
            RegistryKeyPermissionCheck.ReadWriteSubTree); 
        vRegistryKey.SetValue("", Application.ExecutablePath + ",0");     SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST  ¦ SHCNF_FLUSH, 
            IntPtr.Zero, IntPtr.Zero); 
    } private void UnregistryShell() 

        registryShell = false; 
        bool changeRegistry = false; 
        RegistryKey vRegistryKey = Registry.ClassesRoot.OpenSubKey(".xxx"); 
        if (vRegistryKey != null) 
        { 
            changeRegistry = true; 
            vRegistryKey.Close(); 
            Registry.ClassesRoot.DeleteSubKeyTree(".xxx"); 
        }     vRegistryKey = Registry.ClassesRoot.OpenSubKey("xxx Document"); 
        if (vRegistryKey != null) 
        { 
            changeRegistry = true; 
            vRegistryKey.Close(); 
            Registry.ClassesRoot.DeleteSubKeyTree("xxx Document"); 
        } 
        if (changeRegistry) 
            SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST  ¦ SHCNF_FLUSH, 
                IntPtr.Zero, IntPtr.Zero); 
    } private bool IsRegistryShell() 

        RegistryKey vRegistryKey = Registry.ClassesRoot.OpenSubKey(".xxx"); 
        if (vRegistryKey == null) return false; 
        vRegistryKey = Registry.ClassesRoot.OpenSubKey( 
            @"xxx Document\shell\open\command"); 
        if (vRegistryKey == null) return false; 
        if (vRegistryKey.GetValue("").ToString().ToLower() != 
            Application.ExecutablePath.ToLower() + " \"%1\"") return false; 
        return true; 

    // 处理程序参数 
    private void Form1_Load(object sender, EventArgs e) 

        string[] vCommands = Environment.GetCommandLineArgs(); 
        if (vCommands.Length > 1) 
        { 
            OpenDocument(vCommands[1]); 
        }