RegisterWindowMessage 可能的值
RegisterWindowMessage Possible values
也许我只是在 MSDN 上遗漏了一些愚蠢的 link,但我似乎找不到 RegisterWindowMessage() 可以采用
的可能值列表
我能找到的唯一一个是"WM_HTML_GETOBJECT"。我在 pinvoke.net 上找到了这个。
但是,我相信这会使我的应用程序崩溃,因为我想要获得的是 IHTMLDialog and not a IHTMLDocument
我看过
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 文档,而是一个对话框。
如果有帮助,我将通过这种方式获取对话框的提示:
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);
}
RegisterWindowMessage 采用字符串参数。您可以传递 any 字符串值。如果您要为您的应用程序注册消息,请确保使用唯一的字符串值(例如 GUID 的字符串表示形式)。
除此之外,没有您可以传递的字符串值的完整列表,因为任何应用程序都可以选择注册自己的消息集。您必须查阅这些应用程序附带的文档以了解它支持哪些消息(如果有)。
也许我只是在 MSDN 上遗漏了一些愚蠢的 link,但我似乎找不到 RegisterWindowMessage() 可以采用
的可能值列表我能找到的唯一一个是"WM_HTML_GETOBJECT"。我在 pinvoke.net 上找到了这个。 但是,我相信这会使我的应用程序崩溃,因为我想要获得的是 IHTMLDialog and not a IHTMLDocument
我看过
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 文档,而是一个对话框。
如果有帮助,我将通过这种方式获取对话框的提示:
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);
}
RegisterWindowMessage 采用字符串参数。您可以传递 any 字符串值。如果您要为您的应用程序注册消息,请确保使用唯一的字符串值(例如 GUID 的字符串表示形式)。
除此之外,没有您可以传递的字符串值的完整列表,因为任何应用程序都可以选择注册自己的消息集。您必须查阅这些应用程序附带的文档以了解它支持哪些消息(如果有)。