递归火山软件开发平台

标题: Messagebox这个函数很强大。 [打印本页]

作者: urenai    时间: 2023-8-29 19:20
标题: Messagebox这个函数很强大。
不知道有没有人研究过他。
他可以直接调用系统进程弹信息框,而且他的实现过程有很多个系统函数,其目的就是信息框。



值        含义
MB_ABORTRETRYIGNORE
0x00000002L
消息框包含三个按钮: 中止、 重试和 忽略。
MB_CANCELTRYCONTINUE
0x00000006L
消息框包含三个按钮:“取消”、“重试”、“继续”。 使用此消息框类型而不是MB_ABORTRETRYIGNORE。
MB_HELP
0x00004000L
向消息框添加 “帮助 ”按钮。 当用户单击“ 帮助 ”按钮或按 F1 时,系统会向所有者发送 WM_HELP 消息。
MB_OK
0x00000000L
消息框包含一个按钮: “确定”。 这是默认值。
MB_OKCANCEL
0x00000001L
消息框包含两个按钮: “确定” 和“ 取消”。
MB_RETRYCANCEL
0x00000005L
消息框包含两个按钮: 重试 和 取消。
MB_YESNO
0x00000004L
消息框包含两个按钮: “是 ”和“ 否”。
MB_YESNOCANCEL
0x00000003L
消息框包含三个按钮: “是”、“ 否”和 “取消”。

若要在消息框中显示图标,请指定以下值之一。
值        含义
MB_ICONEXCLAMATION
0x00000030L
消息框中会显示一个感叹号图标。
MB_ICONWARNING
0x00000030L
消息框中会显示一个感叹号图标。
MB_ICONINFORMATION
0x00000040L
消息框中将显示一个由圆圈中的小写字母 i 组成的图标。
MB_ICONASTERISK
0x00000040L
消息框中将显示一个由圆圈中的小写字母 i 组成的图标。
MB_ICONQUESTION
0x00000020L
消息框中会显示一个问号图标。 不再建议使用问号消息图标,因为这种图标无法清楚地表示特定类型的消息,并且作为问题的消息表述可应用于任何消息类型。 此外,用户可能会将问号消息符号与帮助信息混淆。 因此,不要在消息框中使用问号消息符号。 系统继续支持它包含的内容,只为满足反向兼容性。
MB_ICONSTOP
0x00000010L
消息框中会显示一个停止符号图标。
MB_ICONERROR
0x00000010L
消息框中会显示一个停止符号图标。
MB_ICONHAND
0x00000010L
消息框中会显示一个停止符号图标。

若要指示默认按钮,请指定以下值之一。
值        含义
MB_DEFBUTTON1
0x00000000L
第一个按钮是默认按钮。
除非指定了MB_DEFBUTTON2、MB_DEFBUTTON3或MB_DEFBUTTON4,否则MB_DEFBUTTON1为默认值。
MB_DEFBUTTON2
0x00000100L
第二个按钮是默认按钮。
MB_DEFBUTTON3
0x00000200L
第三个按钮是默认按钮。
MB_DEFBUTTON4
0x00000300L
第四个按钮是默认按钮。

若要指示对话框的形式,请指定以下值之一。
值        含义
MB_APPLMODAL
0x00000000L
用户必须先响应消息框,然后才能在 hWnd 参数标识的窗口中继续工作。 但是,用户可以移动到其他线程的窗口并在这些窗口中工作。
根据应用程序中窗口的层次结构,用户可能能够移动到线程中的其他窗口。 将自动禁用消息框父级的所有子窗口,但弹出窗口不会禁用。
如果既未指定MB_SYSTEMMODAL,也未指定MB_TASKMODAL,则MB_APPLMODAL为默认值。
MB_SYSTEMMODAL
0x00001000L
与MB_APPLMODAL相同,只是消息框具有 WS_EX_TOPMOST 样式。 使用系统模式消息框通知用户严重、可能具有破坏性的错误,这些错误需要立即关注 (例如内存不足) 。 此标志不会影响用户与与 hWnd 关联的窗口以外的其他窗口交互的能力。
MB_TASKMODAL
0x00002000L
与 MB_APPLMODAL相同, 只不过,如果 hWnd 参数为 NULL,则禁用属于当前线程的所有顶级窗口。 当调用应用程序或库没有可用的窗口句柄,但仍需要阻止输入调用线程中的其他窗口而不挂起其他线程时,请使用此标志。

若要指定其他选项,请使用以下一个或多个值。
值        含义
MB_DEFAULT_DESKTOP_ONLY
0x00020000L
与交互式窗口工作站的桌面相同。 有关详细信息,请参阅 窗口工作站。
如果当前输入桌面不是默认桌面,则在用户切换到默认桌面之前 ,MessageBox 不会返回。
MB_RIGHT
0x00080000L
文本右对齐。
MB_RTLREADING
0x00100000L
在希伯来语和阿拉伯语系统上使用从右到左的阅读顺序显示消息和描述文字文本。
MB_SETFOREGROUND
0x00010000L
消息框将成为前台窗口。 在内部,系统为消息框调用 SetForegroundWindow 函数。
MB_TOPMOST
0x00040000L
消息框是使用 WS_EX_TOPMOST 窗口样式创建的。
MB_SERVICE_NOTIFICATION
0x00200000L
调用方是通知用户某个事件的服务。 函数在当前活动桌面上显示一个消息框,即使没有用户登录到计算机也是如此。
终端服务: 如果调用线程具有模拟令牌,函数会将消息框定向到模拟令牌中指定的会话。
如果设置了此标志, 则 hWnd 参数必须为 NULL。 这样,消息框就可以出现在与 hWnd 对应的桌面以外的桌面上。
有关使用此标志的安全注意事项的信息,请参阅 Interactive Services。 具体而言,请注意,此标志可以在锁定的桌面上生成交互式内容,因此应仅用于一组非常有限的方案,例如资源耗尽。




作者: shuimiao    时间: 2023-8-29 20:11
有没有特殊的发现?比如给信息框设置字体字号?
作者: urenai    时间: 2023-8-29 20:27
因为有两种情况,1是自身进程弹的框,这个可以hook解决。2是cre什么.exe进程弹的就没办法了
作者: 创世魂    时间: 2023-8-29 20:34
是的
作者: 小蜗牛    时间: 2023-8-29 22:19
没发现有啥特殊的
作者: urenai    时间: 2023-8-30 01:08
小蜗牛 发表于 2023-8-29 22:19
没发现有啥特殊的

康们卑鄙

试试这段代码:
  1. @ MessageBoxW(0,_T("提示信息"),_T("标题"),0x00020000L);
复制代码





欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4