Найдено результатов: 2

MAPI и опыт работы с управляемым кодом?

Использование функций MAPI из управляемого кода официально не поддерживается. По-видимому, MAPI использует свое собственное управление памятью, и он аварийно завершает работу и сгорает в управляемом коде (см. здесь и здесь )

Все, что я хочу сделать, это запустить почтовый клиент по умолчанию с темой, телом, AND одним или несколькими вложениями .

Итак, я изучил MAPISendDocuments , и это, кажется, работает. Но мне так и не удалось набраться смелости, чтобы действительно использовать эту функцию в производственном коде.

Кто-нибудь часто пользовался этой функцией? У вас есть какие-нибудь страшилки?

PS. Нет, я не буду shellExecute Outlook.exe с аргументами командной строки для вложений.

PPS. Поддержка вложений -это требование , поэтому Mailto: решения не сокращают его для меня.

.net   email   pinvoke   mapi    

480   8   16:03, 1st July, 2020


FlashWindowEx FLASHW_STOP по-прежнему сохраняет цвет панели задач

Я разрабатываю приложение, которое управляет машиной.
Когда я получаю ошибку от машины, пользователи должны быть в состоянии непосредственно заметить ее, один из способов, который выполняется, - это мигание лотка на панели задач. Когда устройство устранит ошибку, лоток перестанет мигать.

Есть одно небольшое раздражение с помощью функции FlashWindowEx, когда я очищаю мигание окна, оно остается (в моем случае winXP) оранжевым (не мигает).
Sample of status


    [Flags]
        public enum FlashMode {
            /// 
            /// Stop flashing. The system restores the window to its original state.
            /// 
            FLASHW_STOP = 0,
            /// 
            /// Flash the window caption.
            /// 
            FLASHW_CAPTION = 1,
            /// 
            /// Flash the taskbar button.
            /// 
            FLASHW_TRAY = 2,
            /// 
            /// Flash both the window caption and taskbar button.
            /// This is equivalent to setting the FLASHW_CAPTION | FLASHW_TRAY flags.
            /// 
            FLASHW_ALL = 3,
            /// 
            /// Flash continuously, until the FLASHW_STOP flag is set.
            /// 
            FLASHW_TIMER = 4,
            /// 
            /// Flash continuously until the window comes to the foreground.
            /// 
            FLASHW_TIMERNOFG = 12
        }

        public static bool FlashWindowEx(IntPtr hWnd, FlashMode fm) {
            FLASHWINFO fInfo = new FLASHWINFO();

            fInfo.cbSize = Convert.ToUInt32(Marshal.SizeOf(fInfo));
            fInfo.hwnd = hWnd;
            fInfo.dwFlags = (UInt32)fm;
            fInfo.uCount = UInt32.MaxValue;
            fInfo.dwTimeout = 0;

            return FlashWindowEx(ref fInfo);
        }

        [StructLayout(LayoutKind.Sequential)]
        public struct FLASHWINFO {
            public UInt32 cbSize;
            public IntPtr hwnd;
            public UInt32 dwFlags;
            public UInt32 uCount;
            public UInt32 dwTimeout;
        }

В моем случае я использую FLASHW_TRAY, чтобы начать мигать и FLASHW_STOP, чтобы остановить мигание.

Я делаю что-то неправильно или это известная ошибка WinXP и есть ли исправление для нее?

c#   winapi   pinvoke    

464   4   04:02, 16th August, 2020