public void InitializeDlll(string path) { //TO DO FIX dllHandle = WindowsUtilities.LoadLibrary(Path.Combine(path, "HookCostume.dll")); if (dllHandle != null) { var initGameAddress = WindowsUtilities.GetProcAddress(dllHandle, "InitGame"); if (initGameAddress != IntPtr.Zero) { initGame = (InitGame)Marshal.GetDelegateForFunctionPointer(initGameAddress, typeof(InitGame)); } var closeGameAddress = WindowsUtilities.GetProcAddress(dllHandle, "CloseGame"); if (closeGameAddress != IntPtr.Zero) { closeGame = (CloseGame)Marshal.GetDelegateForFunctionPointer(closeGameAddress, typeof(CloseGame)); } var setUserHWndAddress = WindowsUtilities.GetProcAddress(dllHandle, "SetUserHWND"); if (setUserHWndAddress != IntPtr.Zero) { setUserHWnd = (SetUserHWND)Marshal.GetDelegateForFunctionPointer(setUserHWndAddress, typeof(SetUserHWND)); } var executeCmdAddress = WindowsUtilities.GetProcAddress(dllHandle, "ExecuteCommand"); if (executeCmdAddress != IntPtr.Zero) { executeCmd = (ExecuteCommand) Marshal.GetDelegateForFunctionPointer(executeCmdAddress, typeof(ExecuteCommand)); } var getHoveredNPCInfoAddress = WindowsUtilities.GetProcAddress(dllHandle, "GetHoveredNPCInfo"); if (getHoveredNPCInfoAddress != IntPtr.Zero) { getHoveredNPCInfo = (GetHoveredNPCInfo) Marshal.GetDelegateForFunctionPointer(getHoveredNPCInfoAddress, typeof(GetHoveredNPCInfo)); } var getMouseXYZInGameAddress = WindowsUtilities.GetProcAddress(dllHandle, "GetMouseXYZInGame"); if (getMouseXYZInGameAddress != IntPtr.Zero) { getMouseXYZInGame = (GetMouseXYZInGame) Marshal.GetDelegateForFunctionPointer(getMouseXYZInGameAddress, typeof(GetMouseXYZInGame)); } var checkGameDoneAddress = WindowsUtilities.GetProcAddress(dllHandle, "CheckGameDone"); if (checkGameDoneAddress != IntPtr.Zero) { checkIfGameLoaded = (CheckIfGameLoaded) Marshal.GetDelegateForFunctionPointer(checkGameDoneAddress, typeof(CheckIfGameLoaded)); } var detectCollisionAddress = WindowsUtilities.GetProcAddress(dllHandle, "CollisionDetection"); if (checkGameDoneAddress != IntPtr.Zero) { detectCollision = (DetectCollision) Marshal.GetDelegateForFunctionPointer(detectCollisionAddress, typeof(DetectCollision)); } } }