求教acptvb,怎样能使我写的VB 函数可以接受函数地址作为参数?

Amoon 2001-09-03 09:16:53
我的想法就是在我写的函数里可以根据传入的一个函数地址参数调用该函数。
...全文
267 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
zeng_zhh 2001-09-07
  • 打赏
  • 举报
回复
gz
Chice_wxg 2001-09-07
  • 打赏
  • 举报
回复
问题全部解决,去http://www.csdn.net/expert/topic/275/275790.shtm看看。
问题全部解决,去http://www.csdn.net/expert/topic/275/275790.shtm看看。
问题全部解决,去http://www.csdn.net/expert/topic/275/275790.shtm看看。
问题全部解决,去http://www.csdn.net/expert/topic/275/275790.shtm看看。
问题全部解决,去http://www.csdn.net/expert/topic/275/275790.shtm看看。
问题全部解决,去http://www.csdn.net/expert/topic/275/275790.shtm看看。
问题全部解决,去http://www.csdn.net/expert/topic/275/275790.shtm看看。
问题全部解决,去http://www.csdn.net/expert/topic/275/275790.shtm看看。
问题全部解决,去http://www.csdn.net/expert/topic/275/275790.shtm看看。
问题全部解决,去http://www.csdn.net/expert/topic/275/275790.shtm看看。
Chice_wxg 2001-09-07
  • 打赏
  • 举报
回复
问题全部解决,去http://www.csdn.net/expert/topic/275/275790.shtm看看。
chkecopy 2001-09-07
  • 打赏
  • 举报
回复
這個問題我也不太明白,過來學一下。
另外,若然真是高手的,請去看看"真的沒人幫的了我?怎樣實現均衡器",鄙人將感之不盡
Amoon 2001-09-07
  • 打赏
  • 举报
回复
好啊
Chice_wxg 2001-09-06
  • 打赏
  • 举报
回复
OK,搞定了。

不过我是用C语言写的调用部分(还有部分汇编,呵呵)
因为我没时间了,马上要去外地,所以没法再修改。

如果有哪位好心的大侠帮忙把这个函数(XCall)写成DLL,那么就可以直接在VB中调用了!非常方便。(以后如果我有时间我也会写一个DLL的)

#include "stdafx.h"
#include "windows.h"
void XCall(void *proc, UINT count, DWORD *param)
{
__asm
{
mov eax,param;
mov ebx,[eax];
push ebx;
mov ecx,count;
dec ecx;
loop_count:
dec ecx;

add eax,4;
mov ebx,[eax];
push ebx;

cmp ecx,0;
jnz loop_count;

call proc;
}
}
int main(int argc, char* argv[])
{
//示例。
char *s1="This is S1111111",*s2="This is S2222222";
DWORD p[4];

//注意:所有参数都要传递指针,而且要倒着放在数组里。

p[0]=MB_YESNO; //按钮样式
p[1]=(UINT)s1; //这个是标题
p[2]=(UINT)s2; //这个是消息内容
p[3]=0; //hwnd

XCall(MessageBox,4,p);

return 0;
}




哎,刚才竟然头脑发晕……你去看看http://www.csdn.net/expert/topic/275/275311.shtm就知道了……把你(AMoon)跟HowardOK混了……
Amoon 2001-09-05
  • 打赏
  • 举报
回复
这样啊,是不是太......太麻烦了?没有稍微简单点的办法么?
Chice_wxg 2001-09-05
  • 打赏
  • 举报
回复
关于内嵌汇编你可以看看
http://www.csdn.net/expert/topic/257/257597.shtm

下载:http://loveqianyi.8u8.com/vbasm.zip

(不是我写的哦)
Chice_wxg 2001-09-05
  • 打赏
  • 举报
回复

可以做到。需要内嵌部分汇编。


比如这样:

private sub mysub()
许多代码,只为保留一定空间
end sub

然后修改mysub的入口指令,改成 JMP *YourFunction

具体可能更复杂,需要考虑函数返回之类的问题。

NowCan 2001-09-05
  • 打赏
  • 举报
回复
还真是有难度。
Chice_wxg 2001-09-05
  • 打赏
  • 举报
回复
我就这办法了……还是VC好 ^_^
Amoon 2001-09-04
  • 打赏
  • 举报
回复
to playyuer(女㊣爱):谢谢斑竹关心,可好像不行。根本就没有执行Addressof 后面的函数。我的意思是在我的程序中能通过那个传入的地址来调用该函数,而那个函数。就像VC++里可用*YourFunctioin()一样。
Un1 2001-09-04
  • 打赏
  • 举报
回复
http://www.csdn.net/expert/TopicView.asp?id=2750
Amoon 2001-09-04
  • 打赏
  • 举报
回复
VB7啊,学它的时间肯定比解决这个问题的时间长多了吧。我现在急用呢。
Ninputer 2001-09-04
  • 打赏
  • 举报
回复
用VB7的Delegate类型
Jneu 2001-09-04
  • 打赏
  • 举报
回复
Addressof (函数名)
cwerror 2001-09-04
  • 打赏
  • 举报
回复
把函数声明为一个对象,其句柄不可以用吗?
Amoon 2001-09-04
  • 打赏
  • 举报
回复
要被淹死了
up,up,up,up!
playyuer 2001-09-04
  • 打赏
  • 举报
回复
YourMasterFunction MyAddressOf(AddressOf YourFunction)


Private Function MyAddressOf(AddressOfX As Long) As Long
MyAddressOf = AddressOfX
End Function
DevilXelloss 2001-09-04
  • 打赏
  • 举报
回复
http://www.greatmidnight.com/redir.asp?id=artshome

  《检测 Shell 部件的版本》,里面介绍了一种通过地址调用函数的方法。不过目标函数只能有一个参数。更加复杂的方法,可以参考 http://www.greatmidnight.com/cgi-bin/bbs/bbs.cgi?menu=show&id=MKSSu&slttitle=20010304111353&see=18 ,用 VC++ 或者汇编和 VB 混合编译,通过 VC++ 或者汇编来实现。
加载更多回复(8)

7,765

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧