diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2013-05-10 01:13:37 +0200 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2013-05-10 01:13:37 +0200 |
commit | 080266d8189dd05756e27a9ddd92c4124d8e3ca0 (patch) | |
tree | 84e0d035f75e4968791f1c42742a58f4a13280e3 | |
parent | 7b7e7543d6b6975d31f4c8d53ae18919cd5b7258 (diff) |
Project Evil: set path automatically for Wine
-rw-r--r-- | ftnoir_protocol_wine/opentrack-wrapper-wine-main.cxx | 4 | ||||
-rw-r--r-- | ftnoir_protocol_wine/opentrack-wrapper-wine-windows.cxx | 26 |
2 files changed, 30 insertions, 0 deletions
diff --git a/ftnoir_protocol_wine/opentrack-wrapper-wine-main.cxx b/ftnoir_protocol_wine/opentrack-wrapper-wine-main.cxx index 9d8914bd..39bef955 100644 --- a/ftnoir_protocol_wine/opentrack-wrapper-wine-main.cxx +++ b/ftnoir_protocol_wine/opentrack-wrapper-wine-main.cxx @@ -3,6 +3,9 @@ #include "ftnoir_protocol_ft/fttypes.h" #include "ftnoir_protocol_wine/wine-shm.h" #include "ftnoir_tracker_base/ftnoir_tracker_types.h" + +void create_registry_key(void); + class ShmPosix { public: ShmPosix(const char *shmName, const char *mutexName, int mapSize); @@ -41,6 +44,7 @@ int main(void) WineSHM* shm_posix = (WineSHM*) lck_posix.mem; FTMemMap* shm_wine = (FTMemMap*) lck_wine.mem; TFreeTrackData* data = &shm_wine->data; + create_registry_key(); while (1) { (void) Sleep(10); lck_posix.lock(); diff --git a/ftnoir_protocol_wine/opentrack-wrapper-wine-windows.cxx b/ftnoir_protocol_wine/opentrack-wrapper-wine-windows.cxx index a0f444c2..86ba4a41 100644 --- a/ftnoir_protocol_wine/opentrack-wrapper-wine-windows.cxx +++ b/ftnoir_protocol_wine/opentrack-wrapper-wine-windows.cxx @@ -5,3 +5,29 @@ #include "ftnoir_protocol_ft/fttypes.h" #include "compat/compat.h" #include "compat/compat.cpp" +#include <string.h> + +void create_registry_key(void) { + char dir[8192]; + + if (GetCurrentDirectoryA(8192, dir) < 8192) + { + HKEY hkpath; + if (RegCreateKeyExA(HKEY_CURRENT_USER, + "Software\\NaturalPoint\\NATURALPOINT\\NPClient Location", + 0, + NULL, + 0, + KEY_ALL_ACCESS, + NULL, + &hkpath, + NULL) == ERROR_SUCCESS) + { + for (int i = 0; dir[i]; i++) + if (dir[i] == '\\') + dir[i] = '/'; + (void) RegSetValueExA(hkpath, "Path", 0, REG_SZ, (BYTE*) dir, strlen(dir) + 1); + RegCloseKey(hkpath); + } + } +} |