Windows应用程序未在vista的任务栏中显示

时间:2010-03-02 20:10:49

标签: c# visual-studio windows-vista windows-xp

我们有一个适用于Windows XP和Windows Vista的C#应用​​程序但是不显示任务栏(仅限Vista)。在windows vista中,应用程序在底部工具栏中没有图标,即如果我打开应用程序,然后我转到另一个应用程序,我可以回到应用程序的唯一方法是通过alt + tab通过,我无法单击图标在底部。

该应用程序的其他功能在XP& Vista系统。请告知如何将其带回Vista?

此致

2 个答案:

答案 0 :(得分:1)

Windows使用扩展样式位来决定窗口是否应该有任务栏图标。这些样式不能在C#中直接访问,但是当表单是普通的应用程序表单时应该正确设置。

控制此标志的标志是顶级表单窗口的扩展样式中设置的WS_EX_APPWINDOW。来自CreateWindowEx文档

  

WS_EX_APPWINDOW当窗口可见时,强制顶层窗口进入任务栏。

您可以使用Spy ++查看是否为您的窗口设置了该标志。我知道确定设置它的唯一方法是使用互操作。

[DllImport("user32.dll")]
static extern int SetWindowLong(IntPtr hWnd, int nIndex, IntPtr dwNewLong);

[DllImport("user32.dll", SetLastError = true)]
static extern int GetWindowLong(IntPtr hWnd, int nIndex);

const int GWL_EXSTYLE = -20;
const int WS_EX_APPWINDOW = 0x00040000;

int ExStyle = GetWindowLong(form.Handle, GWL_EXSTYLE);
SetWindowLong(form.Handle, GWL_EXSTYLE, new IntPtr(ExStyle | WS_EX_APPWINDOW));

答案 1 :(得分:1)

我们通过将表单属性showintaskbar属性设置为true来修复它。

奇怪的是,所有Windows操作系统都没有以相同的方式运行应用程序!