Реально ли получить иконку из ресурсов 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
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Захотел я идти в ногу со временем, посмотрел новые фишки и плюшки C#6/7, воодушевилсяТам так всё вкусно и круто, что грех не пользоваться
Как корректно обработать исключение Format Exception на проверку введенных значений в TextBox?