난 당신이 comctl32.dll
에서 자신을 TaskDialog
기능을 가져와야합니다 생각 :
static class TaskDialogWrapper
{
[DllImport("comctl32.dll", CharSet = CharSet.Unicode, EntryPoint = "TaskDialog")]
static extern int TaskDialog(IntPtr hWnd, IntPtr hInstance, string pszWindowTitle, string pszMainInstruction, string pszContent, TaskDialogCommonButton dwCommonButtons, IntPtr pszIcon, out IntPtr pnButton);
public static TaskDialogCommonButton Show(IntPtr handle, IntPtr instance, string title, string instructionText, string content, TaskDialogCommonButton commonButtons, TaskDialogCommonIcon commonIcon)
{
IntPtr resultButton;
if (TaskDialog(handle, instance, title, instructionText, content, commonButtons, new IntPtr((int)commonIcon), out resultButton) != 0)
throw new InvalidOperationException();
return (TaskDialogCommonButton)resultButton;
}
}
[Flags()]
enum TaskDialogCommonButton
{
Ok = 0x1,
Yes = 0x2,
No = 0x4,
Cancel = 0x8,
Retry = 0x10,
Close = 0x20
}
enum TaskDialogCommonIcon
{
ShieldGrey = 65527,
ShieldOk = 65528,
ShieldError = 65529,
ShieldWarning = 65530,
ShieldBlue = 65531,
Shield = 65532,
Information = 65533,
Error = 65534,
Warning = 65535,
}
파일에서 자신의 아이콘을 사용하려면 TaskDialogIndirect
을 가져와야합니다. .
가 (, BTW 내가 TaskDialogCommonIcon
많은 다른 흥미로운 아이콘 스타일을 발견 당신은 예를 추가 할 수 있습니다.
enum TaskDialogCommonIcon
{
None = 0,
Sheet = 2,
ExplorerFolderOpen = 3,
ExplorerFolderFlat = 5,
ExplorerFolderLeft = 6,
Search = 8,
ExplorerFolderClosed = 10,
ExplorerGames = 14,
Application = 15,
TransparentSpace = 17,
ExplorerSearch = 18,
TextFile = 19,
Letter = 20,
Picture = 21,
Diashow = 103,
// ...
}
나는 조금 더 오래되었지만 ("BTW"섹션에서)이 특정 열거 형은 어디에서 찾았습니까? 수동으로 식별 할 필요없이 어딘가에서 전체 목록을 찾을 수 있는지 알고 싶습니다. Nuget (https://www.nuget.org/packages/WindowsAPICodePack-Core/)의 WindowsAPICodePack을 사용하여 Icon 속성을 캐스팅 된 값으로 설정하여 호출 할 수 있음을 알았습니다 ('CType (65528, TaskDialogCommonIcon)'), 가능한 한 전체 목록을 얻으려고합니다. –
실망 시키는게 두렵습니다. 그러나이 상수를 발견 한 방법은 모두 그들을 시험해 보았습니다. 그럼에도 불구하고 동일한 순서로 같은 아이콘을 저장하는 DLL이 존재할 수 있습니다 (예 : imageres? 나도 몰라요.). 아이콘의 공식적인 의미를 알아 내기 위해 google을 사용할 수 있습니다. – KnorxThieus