0

我正在创建一个基本的 MSI installshield 安装程序。为了选择安装路径,我调用了 FolderBrowserDialog。一切正常,除了 FolderBrowserDialog 在后台出现。我想将其设置为前景窗口。如果没有打开其他窗口,此代码始终返回 true 并且可以正常工作。

如何检查 dialogHandle 是否是我的对话框句柄?

这是我的方法:

/// <param name="fPath">INSTALLPATH</param>
    /// <param name="handle">installshield handle</param>
    /// <returns></returns>
    public string NetworkFolderDialog(string sFilePath, IntPtr handle)
    {

        FolderBrowserDialog dialog = new FolderBrowserDialog();

        IntPtr handle2 = GetDesktopWindow();
        IntPtr dialogHandle = GetWindow(handle2, 5);

        bool set = SetForegroundWindow(dialogHandle);

        DialogResult result = dialog.ShowDialog();

        MessageBox.Show(set.ToString());

        if (result == DialogResult.OK)
            return dialog.SelectedPath;
        else
            return sFilePath;
    }

谢谢您的帮助。

4

2 回答 2

0

我认为您应该从代码中删除以下几行:

IntPtr handle2 = GetDesktopWindow();
IntPtr dialogHandle = GetWindow(handle2, 5);

bool set = SetForegroundWindow(dialogHandle);
于 2009-09-30T10:18:04.403 回答
0

这里有一个关于这个的讨论:.Net 中的自定义安装程序显示安装程序后面的表单

于 2011-06-16T06:15:09.200 回答