Реально ли получить иконку из ресурсов Windows
по типу объекта из DirectoryEntry
?
В dsuiext.dll
есть функция DsGetIcon
, которая по имени класса объекта LDAP вернет иконку для него. Для DirectoryEntry
класс объекта находится в свойстве objectclass
:
[Flags]
enum IconType : uint
{
DSGIF_ISNORMAL = 0x0000000,
DSGIF_ISOPEN = 0x0000001,
DSGIF_ISDISABLED = 0x0000002,
DSGIF_ISMASK = 0x000000f,
DSGIF_GETDEFAULTICON = 0x0000010,
DSGIF_DEFAULTISCONTAINER = 0x0000020
}
[DllImport("dsuiext.dll", CharSet = CharSet.Unicode)]
static extern IntPtr DsGetIcon(IconType dwFlags, string pszObjectClass, int cxImage, int cyImage);
[DllImport("user32.dll")]
static extern bool DestroyIcon(IntPtr hIcon);
private void Form1_Load(object sender, EventArgs e)
{
var entry = new DirectoryEntry("LDAP://DC=mydomain,DC=local");
var searcher = new DirectorySearcher(entry)
{
PageSize = int.MaxValue,
Filter = "<какой-то фильтр>"
};
var result = searcher.FindOne();
var objectClass = result.Properties["objectclass"][0].ToString();
var icon = DsGetIcon(IconType.DSGIF_ISNORMAL, objectClass, 32, 32);
if (icon != IntPtr.Zero) {
using (var img = Icon.FromHandle(icon)) {
pictureBox1.Image = img.ToBitmap();
}
DestroyIcon(icon);
}
}
Не для всех значений свойства objectclass
функция что-то возвращает. Однако, в dsuiext.dll можно найти строки, которые работают (без учета регистра):
builtInDomain
computer
configuration
rpcContainer
contact
container
domainDNS
domainPolicy
group
localGroup
localPolicy
nTDSConnection
nTDSDSA
nTDSSettings
organizationalPerson
organizationalUnit
person
printQueue
remoteMailRecipient
server
serverConnection
site
sitesContainer
storage
subnet
subnetContainer
user
volume
workStationAccount
licensingSiteSettings
nTDSSiteSettings
siteLink
siteLinkBridge
nTFRSSettings
nTFRSReplicaSet
nTFRSSubscriptions
nTFRSSubscriber
nTFRSMember
foreignSecurityPrincipal
interSiteTransport
interSiteTransportContainer
serversContainer
inetOrgPerson
msDS-ManagedServiceAccount
msDS-GroupManagedServiceAccount
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Захотел я идти в ногу со временем, посмотрел новые фишки и плюшки C#6/7, воодушевилсяТам так всё вкусно и круто, что грех не пользоваться
Как корректно обработать исключение Format Exception на проверку введенных значений в TextBox?