1

私はWPFアプリケーションを持っています。Windows7 でアプリをテストしたところ、ヘルプを開くことができないことがわかりました。

基本的に、chm ヘルプ ファイルを開くには、次のように呼び出します。

Process.Start("help.chm");

そして、何も起こりません。Vista SP1 でもアプリを試しましたが、同じ結果でした。私は両方のOSの管理者です

この問題をグーグルで検索しましたが、解決策が見つかりませんでした。

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

このような非互換性を経験したことがありますか。

ありがとう!

4

3 に答える 3

3

ShellExecute を試しましたか?

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 )

于 2009-05-13T20:31:13.957 に答える
1

このSO スレッドが役立ちます。また、UAC と昇格方法に関するかなり詳細な記事もあります。

于 2009-05-13T05:50:50.947 に答える
1

.chm ファイルだけですか? デフォルトでは、信頼できない場所にある chm ファイルはブロックされているため、開いていない可能性があります。参照: KB902225この記事から、最初に Sysinternals の stream.exe を起動するだけでも (記事で参照されているように)、プログラムでブロックを解除できる可能性があるようです。

于 2009-05-13T20:40:06.487 に答える