Zitat von
MathiasSimmack:
bei der Delphi-Version machen würde. Aber das klappt nicht. Wo liegt mein Denkfehler?
Dein Denkfehler ist, das du den String "104" übergibst, anstatt dem Integer 104.
Du bräuchtest im Import nicht einmal string als typen nehmen sondern einfach direkt TaskDialogIcon.
Sicherheitshalber könntest du TaskDialogIcon so deklarieren, dass es von Int32 "ableitet", aber wirklich nötig sollte das nicht sein. Enum sind ja per default 32Bit-Integer.
Ungetestet, aber es sollte so gehen:
Code:
[DllImport(Win32Libraries.ComCtl32, CharSet = CharSet.Auto, SetLastError = true)]
internal static extern void TaskDialog(IntPtr hwndParent,
IntPtr hInstance,
string pszWindowTitle,
string pszMainInstruction,
string pszContent,
TaskDialogButtons dwCommonButtons,
[MarshalAs(UnmanagedType.LPWStr)]
TaskDialogIcon pszIcon,
[In, Out]
ref int pnButton);
public enum TaskDialogIcon : int
{
Blank = 100,
Warning,
Question,
Error,
Information,
BlankAgain,
Shield
}