记录下c语言调用大漠的例子
CoInitialize(NULL); HMODULE hmod= LoadLibrary("C:\\DmReg.dll");//加载路径 DWORD dlladdr=(DWORD)GetProcAddress(hmod,"SetDllPathA"); DWORD dmdlladdr= (DWORD)(char *)"C:\\dm.dll"; dm.CreateDispatch("dm.dmsoft"); MessageBox(dm.Ver()); string color; long start = clock(); for(int i=0;i<1000;i++) { color = dm.GetColor(872, 1011); } long stop = clock(); char outputString[10]={0}; sprintf(outputString,"%d",stop-start); MessageBox(outputString); MessageBox((char*)color.c_str());
autohotkey调用dm的例子
iPath := A_ScriptDir . "\dm.dll" iResult := DllCall("DmReg.dll\SetDllPathW", "Str", iPath, "Int", 0) MsgBox % iResult dm := ComObjCreate("dm.dmsoft") ;PixelGetColor, color, 872, 1011 StartTime := A_TickCount loop,1000 { ver := dm.GetColor(872, 1011) } ElapsedTime := A_TickCount - StartTime MsgBox, % ElapsedTime
通过执行上面两个例子,发下调用1000次坐标颜色获取函数,是16600左右
执行autohotkey本身的颜色获取命令
StartTime := A_TickCount loop,1000 { PixelGetColor, color, 872, 1011 } ElapsedTime := A_TickCount - StartTime MsgBox, % ElapsedTime
只用了15ms左右
执行系统自身的DLL
StartTime := A_TickCount loop,1000 { hdc := DllCall("GetDC", "uint", 0) color:=DllCall("GetPixel", "uint", hdc, "int", 872, "int", 1011, "uint*", ARGB) } ElapsedTime := A_TickCount - StartTime MsgBox, % ElapsedTime
和大漠差不多也是1600ms左右
我怀疑慢的原因是dll加载和释放占用时间,太多,有空再优化下
是win10系统吗?
之前我用ahk调用大漠没成功!希望你能把调用的前前后后写一个通俗的教程。来个视频也可以!
已添加
厉害
大佬,问一问 C语言调用大漠 dm.CreateDispatch(“dm.dmsoft”); 这个dm对象是哪里声明的[/大哭]
这个对象的CreateDispatch函数声明哪里来的, 我并没有找到这个函数
同
上文没有出现dm的定义与声明,哪来的dm.CreateDispatch(“dm.dmsoft”); ?????
谢谢大神分享,学习