如何调用按键精灵中的QMDispatch.dll 达到找图的目的

zhuJIM 2008-02-20 03:16:12
按键精灵中有一个FindPic函数,很是好用,我想把它借用到C++Builder中来
按键精灵中的用法是这样的VBSCall Call FindPic(211,654,402,725,"AutoSpeak.bmp",1.0,intX,intY)
前面四个参数是:左上X,Y座标,右下X,Y座标,接下来是要查找的图片文件名,相似度1.0表示100% ,再后面是找到对应图片的位置X,Y座标
我是这么写的:

void (*FindPic)(int x,int y,int xx,int yy,String Str,float bili, int GetX,int GetY);
HINSTANCE hInst;

hInst = LoadLibrary("QMDispatch.DLL");

(FARPROC &)FindPic=GetProcAddress(hInst,"FindPic");
int TheX,TheY;
FindPic(211,654,402,725,"maimai.bmp",1.0,TheX,TheY);
ShowMessage(TheX);
ShowMessage(TheY);
运行后提示:Access violation at address 00000000,Read of Address 00000000

我在网上搜了一下,有人用VC成功调用了这个函数,可是我不懂,请高手帮个忙
...全文
2045 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wind027 2008-03-07
  • 打赏
  • 举报
回复
是怎么解决的啊,我的怎么提示‘无效的类别字符串’呀
zhuJIM 2008-02-21
  • 打赏
  • 举报
回复
问题解决了,谢了
zhuJIM 2008-02-21
  • 打赏
  • 举报
回复

int TheX,TheY;
QMFunctionPtr qf;
qf.CreateInstance(CLSID_QMFunction);
qf->FindPic(0,0,1024,768,"maimai.bmp",0.9,TheX,TheY);

得到[C++ Error] Unit1.cpp(24): E2285 Could not find a match for 'IQMFunction::FindPic(int,int,int,int,char *,double,int,int)'
查了一下,这里定义的FindPic和按键精灵中VBS CALL FindPic(211,654,402,725,"maimai.bmp",1.0,TheX,TheY); 不一样呀,调用不了这个函数
Waiting4you 2008-02-21
  • 打赏
  • 举报
回复
BCB6是这样的:
Project --> Import Type Library...

然后点"Add..."按钮打开QMDispatch.dll
在Unit dir name项里选好输入目录
点"Create Unit"按钮就生成QMDISPATCHLib_TLB.h和QMDISPATCHLib_TLB.cpp文件了
zhuJIM 2008-02-21
  • 打赏
  • 举报
回复
TO:Waiting4you

谢谢你的回复,我不知道怎么导入ActiveX库,我这是这么做的,Componet > Inport ActiveX Control... 再点Add 加入那个QMDispatch.dll 可是加不进来呀,我用的是BCB6
Waiting4you 2008-02-20
  • 打赏
  • 举报
回复
用exescope看了一下QMDispatch,发现它是一个ActiveX库。

不是普通DLL, 你应该用BCB的导入ActiveX库功能,得到qmdispatchlib_tlb.h和qmdispatchlib_tlb.cpp:

然后:
QMFunctionPtr qf;
qf.CreateInstance(CLSID_QMFunction);
qf->FindPic(...)
zhuJIM 2008-02-20
  • 打赏
  • 举报
回复
TO: ydlchina
http://topic.csdn.net/u/20080220/17/b8a20630-54f5-42dc-b99b-5416af78ac2d.html
我在这个贴中重新发了DLL附件,麻烦你去看一下
zhuJIM 2008-02-20
  • 打赏
  • 举报
回复
回复ydlchina:
这个路径是没有问题的,就是我写文件的同一个路径呀
zhuJIM 2008-02-20
  • 打赏
  • 举报
回复
晕了,我传文件的时候没有传全,现在没办法修改附件呀,还有二个DLL要用到
laowang2 2008-02-20
  • 打赏
  • 举报
回复
木用过。
ydlchina 2008-02-20
  • 打赏
  • 举报
回复
这个提示可能是
hInst = LoadLibrary("QMDispatch.DLL");
路径不对,使用完全路径试试
,另外你的DLL文件在BCB使用可能有问题,提示需要一个helper.dll

13,824

社区成员

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

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