2009-05-13 17 views
1

私はWPFアプリケーションを持っています。 Windows7で自分のアプリケーションをテストした後、オープニングヘルプが機能しないことに気付きました。.NET WPF Process.Start()はVistaとWindows 7では動作しません

Process.Start("help.chm"); 

、何も起こります。基本的に私が呼ぶCHMヘルプファイルを開くために

。私はVista SP1でも同じ結果を試しました。 私は両方のOSで管理者です

私はこの問題を抱えていますが、解決策が見つかりませんでした。

この問題を解決する方法はありますか?

このような非互換性がありますか。

ありがとうございました!

答えて

3

あなたはShellExecuteを試しましたか?

using System.Runtime.InteropServices;

[DllImport( "shell32.dll"、CharSet = CharSet.Auto)]static extern bool ShellExecuteEx(ref SHELLEXECUTEINFO lpExecInfo);

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] 
public struct SHELLEXECUTEINFO 
{ 
    public int cbSize; 
    public uint fMask; 
    public IntPtr hwnd; 
    [MarshalAs(UnmanagedType.LPTStr)] 
    public string lpVerb; 
    [MarshalAs(UnmanagedType.LPTStr)] 
    public string lpFile; 
    [MarshalAs(UnmanagedType.LPTStr)] 
    public string lpParameters; 
    [MarshalAs(UnmanagedType.LPTStr)] 
    public string lpDirectory; 
    public int nShow; 
    public IntPtr hInstApp; 
    public IntPtr lpIDList; 
    [MarshalAs(UnmanagedType.LPTStr)] 
    public string lpClass; 
    public IntPtr hkeyClass; 
    public uint dwHotKey; 
    public IntPtr hIcon; 
    public IntPtr hProcess; 
} 

とあなたがプロセスを開始しようとすることができます

 SHELLEXECUTEINFO info = new SHELLEXECUTEINFO(); 
     info.cbSize = System.Runtime.InteropServices.Marshal.SizeOf(info); 
     info.lpVerb = "open"; 
     info.lpFile = "help.chm"; 
     info.nShow = 5; 
     info.fMask = 12; 

     ShellExecuteEx(ref info); 

http://www.pinvoke.net/default.aspx/shell32.ShellExecuteEx

+2

ShellExecuteを直接ピンボーイングし、UseShellExecute = trueを指定してProcessStart(ProcessStartInfo)を呼び出すのは何ですか? – Nir

1

それだけで.CHMファイルですか?そうであれば、デフォルトでは、信頼できない場所にあるchmファイルがブロックされているため、オープンしていない可能性があります。参照:KB902225this articleから、Sysinternals streams.exeを最初に起動しただけでも(プログラムで参照されているように)、プログラムでブロック解除することができるようです。

関連する問題