当前位置:编程学习 > VB >>

VB MsgBox修改





怎么把企业经销存系统改成其他的文字,
我这MsgMox 是API设置的,不是建的窗体,
代码如下:
Private Declare Function ReleaseCapture Lib "user32" () As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
.....
MsgBox "错误的用户名或密码!", vbCritical
        Text2.Text = ""
        Text1.Text = ""

MsgBox "错误的用户名或密码!", vbCritical, "wangcheng564995941" FindWindow(窗口标题) API找到MessageBox窗口Handle
SetWindowText(新标题) API设置 FindWindow(窗口标题) API找到MessageBox窗口Handle
SetWindowText(新标题) API设置 在哪里?能不能具体一点的
你不会调用API函数?那你的代码怎么写的?用法具体google或者msdn下。 Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long
然后怎么设置的啊,MSDN里面是在哪个里面说的呢?
Dim h As Long
h = FindWindow("", "企业进销存管理系统")
SetWindowText(h, "新的标题") '这个SetWindowText需要你补全定义 我这是 SetWindowPos 应该怎么设置的啊
引用 8 楼 wangcheng564995941 的回复:
我这是 SetWindowPos 应该怎么设置的啊


无语,整个什么也不会。 要不我把我的程序发给你,你能给我改一下吗?急用 你有邮箱吗?能不能给我改一下啦,谢谢了,现在真的急用的 没那么复杂。

MsgBox "错误的用户名或密码!", vbCritical, "其他的文字"

如果没有第三个参数,就缺省为工程名。

引用 12 楼 of123 的回复:
没那么复杂。

MsgBox "错误的用户名或密码!", vbCritical, "其他的文字"

如果没有第三个参数,就缺省为工程名。

+1 你根本就不是用Api做的,用vb自带的Msgbox函数,你都没有搞明白什么叫Api MsgBox 的确是 VB 的内部函数,但不排除在底层调用了 API MessageBox:

Private Declare Function MessageBox Lib "user32" _
   Alias "MessageBoxA" _
  (ByVal hWnd As Long, _
   ByVal lpText As String, _
   ByVal lpCaption As String, _
   ByVal wType As Long) As Long

其中的 lpCaption 就是 MsgBox 中的第三个参数。 7楼是正解,好用!!!!!!!!!!!!!!!!!! 太歧义了,看起来理解错误的人不止我一个。

12楼还被人说不知道API,哈哈
引用 16 楼 hpygzhx520 的回复:
太歧义了,看起来理解错误的人不止我一个。

12楼还被人说不知道API,哈哈

我说的是楼主,不清楚请不要乱说!又不是第一次看到“of123”!我之所以说楼主是因为他的问题前后矛盾,原文“我这MsgMox 是API设置的,不是建的窗体,代码如下:”他说用Api设置的,代码却写个Msgbox!我还以为他用“MessageBox”!

引用 14 楼 of123 的回复:
MsgBox 的确是 VB 的内部函数,但不排除在底层调用了 API MessageBox:
Visual Basic code?123456Private Declare Function MessageBox Lib "user32" _   Alias "MessageBoxA" _  (ByVal hWnd As Long, _   ByVal lpText A……

莫非of123也误解了?
引用 15 楼 sbxom 的回复:
7楼是正解,好用!!!!!!!!!!!!!!!!!!


本来是程序内部显示的一个 MsgBox,自己就可以设置 Caption。

用对付外部程序窗口的方法来改动它,太绕了吧?

这就好比你程序中的 TextBox 不去自己给 Text 属性赋值,而是用 FindWindow、FindWindowEx 和 SendMessage API 去查找窗体改它。
没有误解,我是猜测 VB 的 MsgBox 实际上是在 Windows API MessageBox 基础上实现的。
VB的MsgBox应该是封装了API的,至于封装的是MessageBox还是MessageBoxTimeOut不清楚,好像还有MessageBoxEX这个API。无论是VB的,还是API的,都可以指定标题,如果不指定标题,系统将使用应该程序名称。
   VB中MsgBox学问很多呀。 我倒是认为楼主是想操作其它进程的消息框呢.

本进程的当然还是用内部函数方便. 这一点楼主恰恰没有说清楚。

不过从楼主贴出的代码 MsgBox "错误的用户名或密码!", vbCritical 来看,应该就是本进程的。只是楼主不晓得如果省略第三个参数的话,系统会用工程名自动填充。
干脆把弹出MessageBox的程序HOOK掉MessageBoxA和MessageBoxW算了。那时候,你想改什么就什么,长度不限。
补充:VB ,  API
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,