2017-02-09 9 views
0

Может быть, я просто отсутствуют какие-то глупые ссылки на MSDN, но я не могу показаться, чтобы найти список возможных значений RegisterWindowMessage() может приниматьRegisterWindowMessage Возможные значения

только один я могу найти «WM_HTML_GETOBJECT». Я нашел это на pinvoke.net. Это, однако, я считаю, что это разбивает мое заявление, потому что я пытаюсь получить это IHTMLDialog и не IHTMLDocument

Я посмотрел на

Message Reference

Message Constants

SendMessage

OCM_BASE

WM_USER

A google search for RegisterWIndowMessage list of possible values

Another google search for send message types

Может быть, я ищу неправильные вещи, но я уверен, что не могу найти его.

Моя заявка не здесь:

Dialog = (IHTMLDialog)ObjectFromLresult(lRes, typeof(IHTMLDialog).GUID, IntPtr.Zero); 

Однако я считаю, что проблема произошло дальше вверх по трубопроводу здесь:

uint iMsg = RegisterWindowMessage("WM_HTML_GETOBJECT"); 

Поскольку это не HTML документ, но на самом деле диалог.

Если это поможет я получаю HWND в диалоге так:

IntPtr hwnd = FindWindow("Internet Explorer_TridentDlgFrame", "Google -- Webpage Dialog"); 

Вот полный фрагмент того, что я пытаюсь сделать, если это поможет:

 UIntPtr lRes; 
     IHTMLDialog Dialog; 
     IntPtr hwnd = FindWindow("Internet Explorer_TridentDlgFrame", "Google -- Webpage Dialog"); 
     uint iMsg = RegisterWindowMessage("WM_HTML_GETOBJECT"); 

     if (SendMessageTimeout(hwnd, iMsg, IntPtr.Zero, IntPtr.Zero, SendMessageTimeoutFlags.SMTO_ABORTIFHUNG, 1000, out lRes) == IntPtr.Zero) 
     { 
      MessageBox.Show("operation failed"); 
     } 
     else 
     { 
      Dialog = (IHTMLDialog)ObjectFromLresult(lRes, typeof(IHTMLDialog).GUID, IntPtr.Zero); 

     } 

ответ

1

RegisterWindowMessage принимает строковый аргумент. Вы можете передать любое значение. Если вы регистрируете сообщения для своего приложения, обязательно используйте уникальные строковые значения (например, строковые представления GUID).

Помимо этого нет полного списка строковых значений, которые вы можете передать, поскольку любое приложение может зарегистрировать свой собственный набор сообщений. Вам нужно будет обратиться к документации, которая поставляется с этими приложениями, чтобы узнать, какие сообщения она поддерживает (если есть).

+0

Спасибо за разъяснение, что для меня. Значит, сама строка не важна, если приложение поддерживает ее? Это означает, что мой код не работает в ObjectFromLresult по другой причине. Я буду исследовать и задавать отдельный вопрос по мере необходимости. –

+0

@AlexanderRyanBaggett: Не ясно, чего вы пытаетесь достичь. 'RegisterWindowMessage' is *" обычно используется для регистрации сообщений для связи между двумя взаимодействующими приложениями. "* Пример, который вы использовали [был введен с IE 4] (https://support.microsoft.com/en-us/help/249232/). Он больше не может поддерживаться. Но что вы в конечном итоге пытаетесь достичь? – IInspectable

+0

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

 Смежные вопросы

  • Нет связанных вопросов^_^