我们有一个适用于Windows XP和Windows Vista的C#应用程序但是不显示任务栏(仅限Vista)。在windows vista中,应用程序在底部工具栏中没有图标,即如果我打开应用程序,然后我转到另一个应用程序,我可以回到应用程序的唯一方法是通过alt + tab通过,我无法单击图标在底部。
该应用程序的其他功能在XP& Vista系统。请告知如何将其带回Vista?
此致
答案 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操作系统都没有以相同的方式运行应用程序!