Из [expr.delete] / 3 в стандарте C ++ 17 (хотя это правило восходит к C ++ 11 и, возможно, к более раннему, но у меня нет этой спецификации под рукой) :
, если статический тип удаляемого объекта отличается от его динамического типа, статический тип должен быть базовым классом динамического типа удаляемого объекта, а статический тип должен иметь виртуальный деструктор или поведение не определено.
blockquote>Динамический тип объекта, на который указывает объект, -
uint32_t
. Тип указателя -char
. Это не одно и то же, иchar
не является базовым классомuint32_t
, поэтому поведение не определено.
В OnInitialized
метод еще не был создан дескриптор . Но Вы на правильном пути. При помещении вызова в Loaded
событие , дескриптор будет создан, и это должно возвратить корректное дескриптор .
[DllImport("user32.dll", EntryPoint = "FindWindowEx")]
public static extern int FindWindowEx(int hwndParent, int hwndEnfant, int lpClasse, string lpTitre);
int hwnd = FindWindowEx(0, 0, 0, title);//where title is the windowtitle
//verification of the window
if (hwnd == 0)
{
throw new Exception("Window not found");
}
Самое раннее место, где вы можете получить дескриптор, это OnSourceInitialized