c语言调用大漠插件例子

记录下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加载和释放占用时间,太多,有空再优化下

 

 

给TA捐赠
共{{data.count}}人
人已捐赠
其他

影子系统电脑重新启动瞬间还原工具软件清单2019年11月7日 (草稿版)

2019-11-7 16:21:54

其他

编写DLL供AHK调用

2019-11-12 21:54:12

9 条回复 A文章作者 M管理员
  1. hexuren

    是win10系统吗?

  2. hexuren

    之前我用ahk调用大漠没成功!希望你能把调用的前前后后写一个通俗的教程。来个视频也可以!

  3. 转角遇到抢劫的

    上文没有出现dm的定义与声明,哪来的dm.CreateDispatch(“dm.dmsoft”); ?????

  4. yukingzou

    谢谢大神分享,学习

个人中心
购物车
优惠劵
有新私信 私信列表
搜索