unsafe public static extern int DirectOutput_RegisterSoftButtonCallback(void* hDevice, ButtonCallbackDelegate pfnCb, int pCtxt);
public bool Acquire() { if (!ApiDLLFound) return false; Acquiring = true; Acquired = false; Unacquiring = false; try { pageCallback = new PageCallbackDelegate(PageCallback); Debug.Print("PageCallbackDelegate created"); buttonCallback = new ButtonCallbackDelegate(ButtonCallback); Debug.Print("ButtonCallbackDelegate created"); var result = 0; result = DirectOutput_Initialize(PROGRAMNAME); Debug.Print( "DirectOutput_Initialize result = {0}", result ); if( ApiVersion <= 6 ) { result = DirectOutput_RegisterDeviceChangeCallback(new DeviceCallbackDelegate(DeviceCallback), 0); Debug.Print("DirectOutput_RegisterDeviceChangeCallback result = {0}", result); result = DirectOutput_Enumerate(); Debug.Print( "DirectOutput_Enumerate result = {0}", result ); result = DirectOutput_RegisterPageChangeCallback(m_hDevice, pageCallback, 0); Debug.Print( "DirectOutput_RegisterPageChangeCallback result = {0}", result ); result = DirectOutput_RegisterSoftButtonChangeCallback(m_hDevice, buttonCallback, 0); Debug.Print( "DirectOutput_RegisterSoftButtonChangeCallback result = {0}", result ); } else { result = DirectOutput_RegisterDeviceCallback(new DeviceCallbackDelegate(DeviceCallback), 0); Debug.Print( "v7 DirectOutput_RegisterDeviceCallback result = {0}", result ); result = DirectOutput_Enumerate( new EnumerateCallbackDelegate( EnumerateCallback ),0); Debug.Print( "v7 DirectOutput_Enumerate result = {0}", result ); result = DirectOutput_RegisterPageCallback(m_hDevice, pageCallback, 0); Debug.Print( "v7 DirectOutput_RegisterPageCallback result = {0}", result ); result = DirectOutput_RegisterSoftButtonCallback(m_hDevice, buttonCallback, 0); Debug.Print( "v7 DirectOutput_RegisterSoftButtonCallback result = {0}", result ); } Acquired = true; Acquiring = false; } catch { Debug.Print("Saitek X52 pro acquire error!"); if (OnError != null) OnError(this, EventArgs.Empty); return false; } return true; }