سؤال

نافذة لا تظهر في شريط المهام، فقط في علبة النظام. كيف يمكنني أن أجعلها تظهر في شريط المهام كذلك؟

حاولت التعليمة البرمجية التالية، لكنها لم يكن لها أي تأثير:

int windowStyle = GetWindowLong(pMainWindow, GWL_EXSTYLE);
SetWindowLong(pMainWindow, GWL_EXSTYLE, windowStyle & WS_EX_TOOLWINDOW);

وهذا ليس النموذج الخاص بي! أحصل على مقبض من Process.getProcessSByname وأنا لا أعرف كيفية الوصول إلى خصائص فئة النموذج:

Process[] processes = Process.GetProcessesByName("somename");
someProcess = processes[0];

pMainWindow = someProcess.MainWindowHandle;
هل كانت مفيدة؟

المحلول

ما يلي يبدو أن الخدعة. إذا قمت بإخفاء وإعادة تشكيل النافذة بعد استدعاء setwindowlong ثم يظهر في شريط المهام.

أنا تكافح لإيجاد طريقة لإزالتها من شريط المهام بمجرد تقليل النافذة ...

[DllImport("User32.Dll")]                
public static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);

[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

private const int SW_HIDE = 0x00;
private const int SW_SHOW = 0x05;

private const int WS_EX_APPWINDOW = 0x40000;
private const int GWL_EXSTYLE = -0x14;

private void ShowWindowInTaskbar(IntPtr pMainWindow)
{                       
    SetWindowLong(pMainWindow, GWL_EXSTYLE, WS_EX_APPWINDOW);

    ShowWindow(pMainWindow, SW_HIDE);
    ShowWindow(pMainWindow, SW_SHOW);      
}

نصائح أخرى

يمر WS_EX_APPWINDOW بدلا من WS_EX_TOOLWINDOW. وبعد من المستندات:

WS_EX_APPWINDOW: يجبر نافذة المستوى الأعلى على شريط المهام عندما تكون النافذة مرئية.

WS_EX_TOOLWINDOW: ... نافذة أداة لا تظهر في شريط المهام أو في مربع الحوار الذي يظهر عند الضغط على المستخدم ALT + TAB ...

اضبط ملكية.

هل يمكنك إلقاء معالجة الكائنات التي تم إرجاعها. getprocessesbyname () كاستكشاف، ثم قم بتعيين خاصية هل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top