private int GetDDfunAddress(IntPtr hinst) { IntPtr ptr; ptr = GetProcAddress(hinst, "DD_btn"); if (ptr.Equals(IntPtr.Zero)) { return(-1); } btn = Marshal.GetDelegateForFunctionPointer(ptr, typeof(pDD_btn)) as pDD_btn; if (ptr.Equals(IntPtr.Zero)) { return(-1); } ptr = GetProcAddress(hinst, "DD_whl"); whl = Marshal.GetDelegateForFunctionPointer(ptr, typeof(pDD_whl)) as pDD_whl; if (ptr.Equals(IntPtr.Zero)) { return(-1); } ptr = GetProcAddress(hinst, "DD_mov"); mov = Marshal.GetDelegateForFunctionPointer(ptr, typeof(pDD_mov)) as pDD_mov; if (ptr.Equals(IntPtr.Zero)) { return(-1); } ptr = GetProcAddress(hinst, "DD_key"); key = Marshal.GetDelegateForFunctionPointer(ptr, typeof(pDD_key)) as pDD_key; if (ptr.Equals(IntPtr.Zero)) { return(-1); } ptr = GetProcAddress(hinst, "DD_movR"); movR = Marshal.GetDelegateForFunctionPointer(ptr, typeof(pDD_movR)) as pDD_movR; if (ptr.Equals(IntPtr.Zero)) { return(-1); } ptr = GetProcAddress(hinst, "DD_str"); str = Marshal.GetDelegateForFunctionPointer(ptr, typeof(pDD_str)) as pDD_str; if (ptr.Equals(IntPtr.Zero)) { return(-1); } ptr = GetProcAddress(hinst, "DD_todc"); todc = Marshal.GetDelegateForFunctionPointer(ptr, typeof(pDD_todc)) as pDD_todc; return(1); }
//取函数地址返回值 -1:取通用函数地址错误 , 0:仅取通用函数地址正确 , 1:取通用函数和增强函数地址都正确 private int GetDDfunAddress(IntPtr hinst) { IntPtr ptr; ptr = GetProcAddress(hinst, "DD_btn"); if (ptr.Equals(IntPtr.Zero)) { return(-1); } btn = Marshal.GetDelegateForFunctionPointer(ptr, typeof(pDD_btn)) as pDD_btn; if (ptr.Equals(IntPtr.Zero)) { return(-1); } ptr = GetProcAddress(hinst, "DD_whl"); whl = Marshal.GetDelegateForFunctionPointer(ptr, typeof(pDD_whl)) as pDD_whl; if (ptr.Equals(IntPtr.Zero)) { return(-1); } ptr = GetProcAddress(hinst, "DD_mov"); mov = Marshal.GetDelegateForFunctionPointer(ptr, typeof(pDD_mov)) as pDD_mov; if (ptr.Equals(IntPtr.Zero)) { return(-1); } ptr = GetProcAddress(hinst, "DD_key"); key = Marshal.GetDelegateForFunctionPointer(ptr, typeof(pDD_key)) as pDD_key; if (ptr.Equals(IntPtr.Zero)) { return(-1); } ptr = GetProcAddress(hinst, "DD_movR"); movR = Marshal.GetDelegateForFunctionPointer(ptr, typeof(pDD_movR)) as pDD_movR; if (ptr.Equals(IntPtr.Zero)) { return(-1); } ptr = GetProcAddress(hinst, "DD_str"); str = Marshal.GetDelegateForFunctionPointer(ptr, typeof(pDD_str)) as pDD_str; if (ptr.Equals(IntPtr.Zero)) { return(-1); } ptr = GetProcAddress(hinst, "DD_todc"); todc = Marshal.GetDelegateForFunctionPointer(ptr, typeof(pDD_todc)) as pDD_todc; //下面四个函数,只有在增强版中才可用 ptr = GetProcAddress(hinst, "DD_MouseMove"); //鼠标移动 if (!ptr.Equals(IntPtr.Zero)) { MouseMove = Marshal.GetDelegateForFunctionPointer(ptr, typeof(pDD_MouseMove)) as pDD_MouseMove; } ptr = GetProcAddress(hinst, "DD_SnapPic"); //抓取图片 if (!ptr.Equals(IntPtr.Zero)) { SnapPic = Marshal.GetDelegateForFunctionPointer(ptr, typeof(pDD_SnapPic)) as pDD_SnapPic; } ptr = GetProcAddress(hinst, "DD_PickColor"); //取色 if (!ptr.Equals(IntPtr.Zero)) { PickColor = Marshal.GetDelegateForFunctionPointer(ptr, typeof(pDD_PickColor)) as pDD_PickColor; } ptr = GetProcAddress(hinst, "DD_GetActiveWindow"); //获取激活窗口句柄 if (!ptr.Equals(IntPtr.Zero)) { GetActiveWindow = Marshal.GetDelegateForFunctionPointer(ptr, typeof(pDD_GetActiveWindow)) as pDD_GetActiveWindow; } if (MouseMove == null || SnapPic == null || PickColor == null || GetActiveWindow == null) { return(0); } return(1); }