diff options
Diffstat (limited to 'protocol-wine/opentrack-wrapper-wine-windows.cxx')
| -rw-r--r-- | protocol-wine/opentrack-wrapper-wine-windows.cxx | 40 | 
1 files changed, 40 insertions, 0 deletions
| diff --git a/protocol-wine/opentrack-wrapper-wine-windows.cxx b/protocol-wine/opentrack-wrapper-wine-windows.cxx new file mode 100644 index 00000000..19ee8ffd --- /dev/null +++ b/protocol-wine/opentrack-wrapper-wine-windows.cxx @@ -0,0 +1,40 @@ +#ifndef __WIN32 +#   error "bad cross" +#endif + +#define PortableLockedShm ShmWine +#include "opentrack-compat/shm.h" +#include "opentrack-compat/shm.cpp" +#include "wine-shm.h" + +static void write_path(const char* key, const char* subkey) +{ +    char dir[8192]; + +    if (GetCurrentDirectoryA(8192, dir) < 8190) +    { +        HKEY hkpath; +        if (RegCreateKeyExA(HKEY_CURRENT_USER, +                            key, +                            0, +                            NULL, +                            0, +                            KEY_ALL_ACCESS, +                            NULL, +                            &hkpath, +                            NULL) == ERROR_SUCCESS) +        { +            for (int i = 0; dir[i]; i++) +                if (dir[i] == '\\') +                    dir[i] = '/'; +            strcat(dir, "/"); +            (void) RegSetValueExA(hkpath, subkey, 0, REG_SZ, (BYTE*) dir, strlen(dir) + 1); +            RegCloseKey(hkpath); +        } +    } +} + +void create_registry_key(void) { +    write_path("Software\\NaturalPoint\\NATURALPOINT\\NPClient Location", "Path"); +    write_path("Software\\Freetrack\\FreeTrackClient", "Path"); +} | 
