0

このチュートリアルに従って、Windowsシェル拡張統合用のdllを作成しましたhttp://blogs.msdn.com/b/codefx/archive/2010/09/14/writing-windows-shell-extension-with-net-framework-4 -c-vb-net-part-1.aspx [^]

今、私はそのdllにWindowsフォームを追加しました、私は次のことをしています:

void OnVerbDisplayFileName(IntPtr hWnd)
{
    ShowSelectedFiles form = new ShowSelectedFiles();
    form.Show(selectedFiles);
}

すべてが正常に機能し、フォームアイコンだけがタスクバーに表示されず、フォームを実行するプロセスが見つかりません。

この問題を解決するためのヒントはありますか?たぶん、新しいプロセスを開始してからフォームを表示することによって?

ありがとう

4

2 に答える 2

0

これを解決する唯一の方法は、別のプロセスを作成することです。

    void OnVerbDisplayFileName(IntPtr hWnd)
    {
        string file = (new System.Uri(Assembly.GetExecutingAssembly().CodeBase)).AbsolutePath;
        string executableName = file.Substring(0, file.LastIndexOf("/"));
        executableName += "/MyApp.exe";

        Process gui = new Process();

        gui.StartInfo.FileName = executableName;
        gui.StartInfo.Arguments = selectedFiles.JoinFileNames(" ");

        gui.Start();
    }

乾杯!

于 2012-05-01T07:37:50.853 に答える
0

所有者ウィンドウを指定できるように、 Form.Showメソッド(IWin32Window)メソッドを使用してみてください。

hWndから所有者ウィンドウを指定する方法については、http://ryanfarley.com/blog/archive/2004/03/23/465.aspxを参照してください。

また、フォームのShowInTaskBarプロパティがtrueであることを確認してください。

于 2012-04-28T02:43:15.663 に答える