diff --git a/Luna's DirectInput8/Luna's DirectInput8.vcxproj b/Luna's DirectInput8/Luna's DirectInput8.vcxproj index 0dede89..130b052 100644 --- a/Luna's DirectInput8/Luna's DirectInput8.vcxproj +++ b/Luna's DirectInput8/Luna's DirectInput8.vcxproj @@ -29,7 +29,7 @@ false v143 true - Unicode + NotSet @@ -79,7 +79,7 @@ true true false - dinput8.lib;dxguid.lib;%(AdditionalDependencies) + dinput8.lib;dxguid.lib;Shlwapi.lib;%(AdditionalDependencies) diff --git a/Luna's DirectInput8/config.c b/Luna's DirectInput8/config.c index 00cc986..55bcc15 100644 --- a/Luna's DirectInput8/config.c +++ b/Luna's DirectInput8/config.c @@ -37,8 +37,9 @@ void loadConfig(void) { fclose(cptr); } - if (config.configVersion != 0x0100); - restoreDefaults(); + if (config.configVersion != 0x0100) { + restoreDefaults(); + } } void restoreDefaults(void) { diff --git a/Luna's DirectInput8/directinput.c b/Luna's DirectInput8/directinput.c index be240d7..eb1d56f 100644 --- a/Luna's DirectInput8/directinput.c +++ b/Luna's DirectInput8/directinput.c @@ -73,7 +73,10 @@ void DInputInit(HINSTANCE hinst, HWND hwnd) { } } - result= IDirectInputDevice8_Acquire(lpdiKeyboard); //Acquires input device + result = DIERR_OTHERAPPHASPRIO; + while (result == DIERR_OTHERAPPHASPRIO) { + result = IDirectInputDevice8_Acquire(lpdiKeyboard); //Acquires input device + } if (fptr != 0) { switch (result) { @@ -102,7 +105,10 @@ void DInputGetKeys(HINSTANCE hinst, HWND hwnd) { if (GetForegroundWindow() == hwnd) { if (result == DIERR_INPUTLOST) { - result = IDirectInputDevice8_Acquire(lpdiKeyboard); //Re-acquires dinput device after lost focus. + result = DIERR_OTHERAPPHASPRIO; + while (result == DIERR_OTHERAPPHASPRIO) { + result = IDirectInputDevice8_Acquire(lpdiKeyboard); //Re-acquires dinput device after lost focus. + } } } } diff --git a/Luna's DirectInput8/gui.c b/Luna's DirectInput8/gui.c index b87c884..a3fe275 100644 --- a/Luna's DirectInput8/gui.c +++ b/Luna's DirectInput8/gui.c @@ -25,7 +25,10 @@ BOOL CALLBACK DlgProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam) case WM_INITDIALOG: IDirectInputDevice8_Unacquire(lpdiKeyboard); HRESULT result = IDirectInputDevice8_SetCooperativeLevel(lpdiKeyboard, hwndDlg, DISCL_NONEXCLUSIVE | DISCL_BACKGROUND); - result = IDirectInputDevice8_Acquire(lpdiKeyboard); + result = DIERR_OTHERAPPHASPRIO; + while (result == DIERR_OTHERAPPHASPRIO) { + result = IDirectInputDevice8_Acquire(lpdiKeyboard); + } hDlgItem = GetDlgItem(hwndDlg, IDC_MODIFIERS); memset(&LvColumn, 0, sizeof(LvColumn)); @@ -57,7 +60,10 @@ BOOL CALLBACK DlgProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam) EndDialog(hwndDlg, 0); IDirectInputDevice8_Unacquire(lpdiKeyboard); IDirectInputDevice8_SetCooperativeLevel(lpdiKeyboard, parentVariable, DISCL_NONEXCLUSIVE | DISCL_FOREGROUND); - IDirectInputDevice8_Acquire(lpdiKeyboard); + result = DIERR_OTHERAPPHASPRIO; + while (result == DIERR_OTHERAPPHASPRIO) { + result = IDirectInputDevice8_Acquire(lpdiKeyboard); + } break; case WM_NOTIFY: @@ -105,14 +111,20 @@ BOOL CALLBACK DlgProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam) EndDialog(hwndDlg, 0); IDirectInputDevice8_Unacquire(lpdiKeyboard); IDirectInputDevice8_SetCooperativeLevel(lpdiKeyboard, parentVariable, DISCL_NONEXCLUSIVE | DISCL_FOREGROUND); - IDirectInputDevice8_Acquire(lpdiKeyboard); + result = DIERR_OTHERAPPHASPRIO; + while (result == DIERR_OTHERAPPHASPRIO) { + result = IDirectInputDevice8_Acquire(lpdiKeyboard); + } break; case IDOK: saveConfig(); EndDialog(hwndDlg, 0); IDirectInputDevice8_Unacquire(lpdiKeyboard); HRESULT result = IDirectInputDevice8_SetCooperativeLevel(lpdiKeyboard, parentVariable, DISCL_NONEXCLUSIVE | DISCL_FOREGROUND); - result = IDirectInputDevice8_Acquire(lpdiKeyboard); + result = DIERR_OTHERAPPHASPRIO; + while (result == DIERR_OTHERAPPHASPRIO) { + result = IDirectInputDevice8_Acquire(lpdiKeyboard); //Acquires input device + } break; case IDC_RESTOREDEFAULTS: restoreDefaults();