Я пытаюсь узнать, развернуто ли конкретное окно. Я это делаю с помощью hWID. Когда я делаю это после компиляции для отладки, я получаю сообщение «3», когда окно действительно развернуто. Однако, если я компилирую для выпуска, я получаю сообщение «-1», независимо от состояния окна.
Следующий код находится в проекте WPF, который упакован в пакет UWP и запущен как FullTrustProcess:
private unsafe void IsMaxed(IntPtr hWID)
{
WINDOWPLACEMENT plc = new WINDOWPLACEMENT();
plc.length = (UIntPtr)sizeof(WINDOWPLACEMENT);
WINDOWPLACEMENT* pplc = &plc;
GetWindowPlacement(hWID, pplc);
MessageBox.Show(((int) plc.showCmd).ToString());
}
[DllImport("user32.dll", CharSet = CharSet.Ansi)]
private static unsafe extern bool GetWindowPlacement(IntPtr hWnd, WINDOWPLACEMENT* lpwndpl);
Компилируется ли проект wpf с полным доверием в модели выпуска?
@ NicoZhu-MSFT Да, но, к счастью, использование кода pinvoke решило проблему.





Я не знаю, почему это не работает в выпуске, но вам не нужно писать небезопасный код, чтобы вызвать это. См. pinvoke.net, чтобы узнать, как вызвать его с помощью безопасного кода.