2015年1月5日月曜日

IContextMenuの中でthrowするとProcmon.exeが起動しない?

C#を使い、IContextMenuを実装しています。

エラーを返す場合、GetCommandStringやInvokeCommandの中で、例外を使っていました。

public void GetCommandString(...) {
  ...
  throw Marshal.GetExceptionForHR(-2147467259);

}

プロトタイプ宣言がvoidなので仕方ない事だな、とばかり思っていました。

しかし、そのような実装をしていますと、ProcessMonitorが起動しない事が分かりまして、次の様に実装し直しました。

public uint GetCommandString(...) {
  ...
  return (0x80070057);
}

これで、ProcessMonitorが起動するようになりました。

何か、その、一時フォルダに Procmon64.exe を作成し、私のContext Menu Handlerに Open を投げ掛けて、起動しようとしていたようです。

0 件のコメント:

コメントを投稿