Вот пример создания пункта меню Quicklist типа Флажка:
# Create toggle-able menu item for urgency
urgent_menu_item = Dbusmenu.Menuitem.new ()
# Set the tab's name as the menu item's name
urgent_menu_item.property_set (Dbusmenu.MENUITEM_PROP_LABEL, _('Urgent'))
# Make the menu item toggle-able
urgent_menu_item.property_set(Dbusmenu.MENUITEM_PROP_TOGGLE_TYPE, Dbusmenu.MENUITEM_TOGGLE_CHECK)
urgent_menu_item.property_set_int(Dbusmenu.MENUITEM_PROP_TOGGLE_STATE, Dbusmenu.MENUITEM_TOGGLE_STATE_UNCHECKED)
urgent_menu_item.connect('item_activated', self.urgent_menu_item_activated)
# Make the menu item visible
urgent_menu_item.property_set_bool (Dbusmenu.MENUITEM_PROP_VISIBLE, True)
# Add the section's menu item to the Quicklist menu
quicklist.child_append(urgent_menu_item)
И вот один для того, чтобы сделать Радио-пункт меню Quicklist типа:
# Create a new item for this section
section_menu_item = Dbusmenu.Menuitem.new ()
# Set the tab's name as the menu item's name
section_menu_item.property_set (Dbusmenu.MENUITEM_PROP_LABEL, tab_name)
# Make the menu item toggle-able
section_menu_item.property_set(Dbusmenu.MENUITEM_PROP_TOGGLE_TYPE, Dbusmenu.MENUITEM_TOGGLE_RADIO)
# Make the menu item visible
section_menu_item.property_set_bool (Dbusmenu.MENUITEM_PROP_VISIBLE, True)
# When the menu item is clicked, make it call menu_item_activated
# with the tab id, which is used to make that the active tab
section_menu_item.connect('item_activated', self.section_menu_item_activated, tab_id)
# Add the section's menu item to the Quicklist menu
quicklist.child_append(section_menu_item)
Согласно Microsoft, Центр безопасности Windows использует двухуровневый подход для определения статуса. Один уровень является ручным, а другой - автоматическим с помощью инструментария управления Windows (WMI). В ручном режиме обнаружения Центр обеспечения безопасности Windows выполняет поиск ключей и файлов реестра, предоставленных Microsoft независимыми производителями программного обеспечения. Эти ключи и файлы реестра позволяют Центру обеспечения безопасности Windows определять статус независимого программного обеспечения. В режиме WMI производители программного обеспечения определяют статус своего продукта и сообщают об этом статусе в Центр обеспечения безопасности Windows через поставщика WMI. В обоих режимах Центр обеспечения безопасности Windows пытается определить, верно ли следующее:
Присутствует антивирусная программа.
Сигнатуры антивируса актуальны.
Для антивирусных программ включено сканирование в реальном времени или сканирование при доступе.
Для брандмауэров Windows Security Center определяет, установлен ли брандмауэр стороннего производителя и включен ли брандмауэр.
Таким образом, чтобы определить наличие антивирусного программного обеспечения, вы можете использовать WMI для подключения к пространству имен root \ SecurityCenter
(начиная с Windows Vista необходимо использовать пространство имен root \ SecurityCenter2
), а затем запросить AntiVirusProduct
Класс WMI.
Взгляните на этот пример кода
using System;
using System.Text;
using System.Management;
namespace ConsoleApplication1
{
class Program
{
public static bool AntivirusInstalled()
{
string wmipathstr = @"\\" + Environment.MachineName + @"\root\SecurityCenter";
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher(wmipathstr, "SELECT * FROM AntivirusProduct");
ManagementObjectCollection instances = searcher.Get();
return instances.Count > 0;
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
return false;
}
public static void Main(string[] args)
{
bool returnCode = AntivirusInstalled();
Console.WriteLine("Antivirus Installed " + returnCode.ToString());
Console.WriteLine();
Console.Read();
}
}
}