Сбой API GetComboBoxinfo с кодом ошибки 87 в 64-битной ОС - PullRequest
0 голосов
/ 23 января 2020

Я пытаюсь подключить события мыши к списку. пример кода здесь .

Но он работает нормально, если сохранить свойства проекта [Предпочитать 32-битное ИСТИНА], но API GetComboBoxInfo завершается ошибкой с кодом ошибки 87, если я сохраняю Предпочитать 32-битный ЛОЖЬ.

Вот место, где код не работает:

public static IntPtr GetChildListWindowHandle(Control ctrl)
        {
            Win32.ComboBoxInfo comboBoxInfo = new Win32.ComboBoxInfo();
            comboBoxInfo.cbSize = (uint)Marshal.SizeOf(comboBoxInfo);

            Win32.GetComboBoxInfo(ctrl.Handle, ref comboBoxInfo);
            uint error = GetLastError() ;

            if (true == Win32.GetComboBoxInfo(ctrl.Handle, ref comboBoxInfo))
            {
                return comboBoxInfo.hwndList;
            }
            return IntPtr.Zero;
        }


[StructLayout(LayoutKind.Sequential)]
        public struct ComboBoxInfo
        {

            public uint cbSize;

            public RECT rcItem;

            public RECT rcButton;

            public IntPtr stateButton;

            public IntPtr hwndCombo;

            public IntPtr hwndEdit;

            public IntPtr hwndList;
        }

 [DllImport("user32.dll")]
        public static extern bool GetComboBoxInfo(IntPtr hwndCombo, ref ComboBoxInfo info);
...