能否用vb改变windows下所有msgbox对话框的样式?

来源:百度知道 编辑:UC知道 时间:2024/06/22 10:14:03
如题,答好会加分哦
用挂钩行不行。有没有钩住弹出msgbox对话框的挂钩
不要小看vb哦,他也可以用挂钩的,hmkikikaki,方法是什么?

不能。
VB里面的控件也是利用Windows API函数做出来的,而大多数Windows风格的程序都是直接调用Windows API函数。除非改变Windows API函数了,但那是不可能。

我知道你的想法了,你是想自己做一个对话框,然后用钩子拦截所有系统的msgbox消息,使它弹出来的是自己做的对话框对吧。
用C/C++语言能做到,Basic语言可能还不能做到这种底层的东西。要编出这样的程序需要对Windows有很详细的了解吧,还要精通C/C++语言,有点难度啊!

做对话框当然不难啦,问题是拦截所有系统的对话框消息,那就难了,如果做到了,你就可以写出很强悍的病毒了。
反正我做不到,拿2分走人。

rightmin说的是有道理的,不过也不全对,因为要做windows的应用程序,就必须使用windows API,即便是C/C++也不例外,VC++的MFC就是API的一个封装,而做钩子函数连C语言实现起来都不容易,用汇编才是最好的办法。好在VB可以引用其他语言的程序,从这个意义上说,VB可以做出其他任何语言能做的事情。

回到正题:
如何调用自定义的msgbox?
使用API,messageBox()

Public Declare Function MessageBoxEx Lib "user32" Alias "MessageBoxExA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal uType As Long, ByVal wLanguageId As Long) As Long

参数的定义:
hWnd是指向父窗口的句柄,如果没有父窗口,可以把这个参数设置为NULL。
lpText是需要显示的文字。显示字符串的起始地址。
lpCaption是在窗口上标题显示。
uType是窗口组合按钮和显示图标的类型。后面再详细说明。
返回值是一个整数,如果有取消按钮,并且按下ESC键就返回IDCANCEL。如果