Просто добавьте атрибут runAllManagedModulesForAllRequests="true"
к system.webServer\modules
в web.config.
Этот атрибут включен по умолчанию в MVC и Динамических проектах Данных.
У меня есть решение!
Ну, вроде того.
Если ваш оконный менеджер использует подсказки расширенного оконного менеджера (EWMH), вы можете запросить корневое окно, используя " _NET_CLIENT_LIST
" атом. Это возвращает список клиентских окон, которыми управляет оконный менеджер. Для получения дополнительной информации см. здесь .
Однако с этим есть некоторые проблемы. Для начала, используемый оконный менеджер должен поддерживать EWMH. KDE и GNOME делают, и я уверен, что некоторые другие тоже. Однако я уверен, что многие этого не делают. Кроме того, я заметил несколько проблем с KDE. Как правило, некоторые приложения, не относящиеся к KDE, не попадают в список. Например, если вы запустите xcalc под KDE, он не будет отображаться в этом списке.
Если кто-нибудь может предложить какие-либо улучшения этого метода, я был бы рад их услышать. Для справки, код, который я использую, приведен ниже:
Atom a = XInternAtom(m_pDisplay, "_NET_CLIENT_LIST" , true);
Atom actualType;
int format;
unsigned long numItems, bytesAfter;
unsigned char *data =0;
int status = XGetWindowProperty(m_pDisplay,
rootWindow,
a,
0L,
(~0L),
false,
AnyPropertyType,
&actualType,
&format,
&numItems,
&bytesAfter,
&data);
if (status >= Success && numItems)
{
// success - we have data: Format should always be 32:
Q_ASSERT(format == 32);
// cast to proper format, and iterate through values:
quint32 *array = (quint32*) data;
for (quint32 k = 0; k < numItems; k++)
{
// get window Id:
Window w = (Window) array[k];
qDebug() << "Scanned client window:" << w;
}
XFree(data);
}
Если вам не нужно использовать Xlib, используйте GDK's gdk_screen_get_window_stack ()
и gdk_window_get_window_type ()
может помочь вам в ваших нуждах.
Чтобы расширить предыдущее решение, если вы хотите получить имена окон:
// get window Id:
Window w = (Window) array[k];
char* name = '\0';
status = XFetchName(display, w, &name);
if (status >= Success)
{
if (name == NULL)
printf("Found: %ul NULL\n", w);
else
printf("Found: %ul %s\n", w, name);
}
XFree(name);