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();