相关疑难解决方法(0)

无法在DLL"ComCtl32"中找到名为"TaskDialogIndirect"的入口点

我们有一台特定的Vista x64机器,在运行我们的C#WinForms应用程序时,会显示以下错误:

System.EntryPointNotFoundException:无法在DLL"ComCtl32"中找到名为"TaskDialogIndirect"的入口点.

这个相同的代码在其他Vista机器上运行良好.出于某种原因,这台特殊的Vista机器总是抛出这个例外.

我们该如何解决这个问题?

c# pinvoke windows-vista

5
推荐指数
1
解决办法
4736
查看次数

Windows Server 2008中没有气球工具提示关闭按钮

我的程序在应用程序中使用气球通知气泡来引导用户,在Windows XP中,气球窗口在右上角几乎没有'X',以便在单击时关闭窗口,如果单击其中的任何位置,窗口也会关闭,即使你不要点击'X'.

但是,当程序在Windows Server 2008上运行时,气球会出现,但没有"X"按钮,当我点击它们时也不会关闭.

偶然我设法通过删除包含以下内容的.MANIFEST文件来复制Windows XP中的行为:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <assemblyIdentity version="2.0.0.0" processorArchitecture="x86" name="SofrwareName" type="win32" />
    <dependency>
        <dependentAssembly>
            <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" publicKeyToken="<Removed>" language="*" processorArchitecture="x86" />
        </dependentAssembly>
    </dependency>
</assembly>
Run Code Online (Sandbox Code Playgroud)

当我删除此清单并在Windows XP中运行我的程序时,气球的行为就像它在Windows Server 2008中一样.我假设这可能意味着某种与Windows Server 2008中的Common Controls v6不兼容.

有没有人知道什么可能导致气球不能在点击时关闭并且没有'X'关闭按钮?

更新:这是气球创建代码:

m_tool = new MessageTool(); //internal class MessageTool : NativeWindow {...}

CreateParams cp = new CreateParams();
cp.ClassName = TOOLTIPS_CLASS; //TOOLTIPS_CLASS = "tooltips_class32";
cp.Style =
    WS_POPUP |
    TTS_BALLOON |
    TTS_NOPREFIX |
    TTS_ALWAYSTIP |
    TTS_CLOSE;

m_ti = new TOOLINFO(); …
Run Code Online (Sandbox Code Playgroud)

c# notifications .net-4.0 winforms common-controls

5
推荐指数
1
解决办法
519
查看次数