var isTouchDevice =
(('ontouchstart' in window) ||
(navigator.MaxTouchPoints > 0) ||
(navigator.msMaxTouchPoints > 0));
if(!isTouchDevice){
/* Code for touch device /*
}else{
/* Code for non touch device */
}
Веселись!
Вот как перечислить классы событий WMI в пространстве имен root \ cimv2
с помощью C # и System.Management
:
using System;
using System.Management;
class Program
{
static void Main()
{
string query =
@"Select * From Meta_Class Where __This Isa '__Event'";
ManagementObjectSearcher searcher =
new ManagementObjectSearcher(query);
foreach (ManagementBaseObject cimv2Class in searcher.Get())
{
Console.WriteLine(cimv2Class.ClassPath.ClassName);
}
}
}
root \ cimv2
- это пространство имен WMI по умолчанию, поэтому вам не нужно использовать экземпляр ManagementScope
. WQL-запрос, переданный в ManagementObjectSearcher
, является запросом метаданных WMI. Он использует:
Meta_Class
для обозначения запроса как запрос схемы и __ This
для рекурсивного перечисления подклассов __ Event
Класс WMI является классом событий, если его поставщик реализован как поставщик событий WMI и должен быть подклассом __ Event
. Это не значит, что нельзя использовать "обычный" Классы WMI, такие как Win32_Process
и Win32_Service
в запросах событий WQL. Вам просто нужно использовать один из производных вспомогательных классов __ InstanceOperationEvent
, например __ InstanceCreationEvent
или __ InstanceDeletionEvent
, и WMI будет использовать свою собственную подсистему событий для доставки событий.
Вот пример WQL-запроса, который подписывается на события создания Win32_Process
:
Select * From __InstanceCreationEvent Within 5 Where TargetInstance Isa 'Win32_Process'
В этом случае вы должны использовать предложение Within
.
Создатель кода WMI - отличный инструмент для изучения WMI, который, помимо прочего, позволяет исследовать классы событий WMI на локальном или удаленном компьютере и генерировать код для получения уведомлений о событиях.
Изменить: Поскольку вы пометили свой вопрос как C # , вас может заинтересовать код для получения списка классов событий, полученных программным путем из определенного класса:
using System.Management;
...
string ancestor = "WMIEvent"; // the ancestor class
string scope = "root\\wmi"; // the WMI namespace to search within
try
{
EnumerationOptions options = new EnumerationOptions();
options.ReturnImmediately = true;
options.Rewindable = false;
ManagementObjectSearcher searcher =
new ManagementObjectSearcher(scope, "SELECT * FROM meta_class", options);
foreach (ManagementClass cls in searcher.Get())
{
if (cls.Derivation.Contains(ancestor))
{
Console.WriteLine(cls["__CLASS"].ToString());
}
}
}
catch (ManagementException exception)
{
Console.WriteLine(exception.Message);
}
Doesn't MSDN have a list of all the MSMCA classes here
UPDATE:
I don't do tons of work with WMI, but I just found this WMI tool that would have been helpful. It gives you a GUI for viewing the WMI hierarchy of objects, and even allows you to register and consume events. This should give you the information you need.