Отправка сообщения WebBrowser ' у
От: ArickS  
Дата: 22.05.07 15:08
Оценка:
Здравствуйте!

В Buildere я отсылал клавиатурные сообщения так:

CppWebBrowser1->ControlInterface->QueryInterface<IOleControl>(&pOle);
                if (pOle)
                {
                        MSG msg1;
                        for (int i=0;i<count;i++)
                        {
                                message = msg+i;
                                msg1.hwnd = CppWebBrowser1->Handle;
                                msg1.message = message->message; 
                                msg1.wParam = message->wParam;
                                msg1.lParam = message->lParam;//0x020001;//0x036<<16;
                                pOle->OnMnemonic(&msg1);
                        }
                        pOle->Release();
                }


подскажите, как заставить WebBrowser обрабатывать эти сообщения,
иными сдовами как у компонента получить указатель на интерфейс IOleControl
или какой другой способ.
Заранее спасибо.
Re: Отправка сообщения WebBrowser ' у
От: ArickS  
Дата: 23.05.07 14:54
Оценка:
Рахобрался сам:

На всякий случай, вдруг кто столкнется с той же проблемой:
private void KeyboardClick(object sender, EventArgs e)
        {
            MSG msg = new MSG();
            msg.hwnd = webBrowser1.Handle;
            msg.message = 258;
            msg.wParam = (System.IntPtr)116;
            msg.lParam = (System.IntPtr)0;
            IOleControl ax = (IOleControl)webBrowser1.ActiveXInstance;

            ax.OnMnemonic(ref msg);
        }

        [ComImport, Guid("B196B288-BAB4-101A-B69C-00AA00341D07"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
        public interface IOleControl
        {
            [PreserveSig]
            int GetControlInfo([Out] object pCI);
            [PreserveSig]
            int OnMnemonic([In] ref MSG pMsg);
            [PreserveSig]
            int OnAmbientPropertyChange(int dispID);
            [PreserveSig]
            int FreezeEvents(int bFreeze);
        }

        [Serializable, StructLayout(LayoutKind.Sequential)]
        public struct MSG
        {
            public IntPtr hwnd;
            public int message;
            public IntPtr wParam;
            public IntPtr lParam;
            public int time;
            public int pt_x;
            public int pt_y;
        }

Достаточно было описать интерфейсы
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.