mirror of
https://github.com/qTox/qTox.git
synced 2024-03-22 14:00:36 +08:00
chore: Make the windows code compatible with TCHAR.
This adds support for multi-byte builds. Users building qTox in multi-byte instead of unicode mode would otherwise get compiler errors. This is one step in the direction of making qTox a library with the UI being just one application of it: it gives library users a choice of how they build it.
This commit is contained in:
parent
76c4cf7d39
commit
e20dffab07
|
@ -24,35 +24,48 @@
|
|||
#include <windows.h>
|
||||
#include <string>
|
||||
|
||||
#ifdef UNICODE
|
||||
/**
|
||||
* tstring is either std::wstring or std::string, depending on whether the user
|
||||
* is building a Unicode or Multi-Byte version of qTox. This makes the code
|
||||
* easier to reuse and compatible with both setups.
|
||||
*/
|
||||
using tstring = std::wstring;
|
||||
static inline tstring toTString(QString s) { return s.toStdWString(); }
|
||||
#else
|
||||
using tstring = std::string;
|
||||
static inline tstring toTString(QString s) { return s.toStdString(); }
|
||||
#endif
|
||||
|
||||
namespace Platform
|
||||
{
|
||||
inline std::wstring currentCommandLine()
|
||||
inline tstring currentCommandLine()
|
||||
{
|
||||
return ("\"" + QApplication::applicationFilePath().replace('/', '\\') + "\" -p \"" +
|
||||
Settings::getInstance().getCurrentProfile() + "\"").toStdWString();
|
||||
return toTString("\"" + QApplication::applicationFilePath().replace('/', '\\') + "\" -p \"" +
|
||||
Settings::getInstance().getCurrentProfile() + "\"");
|
||||
}
|
||||
|
||||
inline std::wstring currentRegistryKeyName()
|
||||
inline tstring currentRegistryKeyName()
|
||||
{
|
||||
return (QString("qTox - ") + Settings::getInstance().getCurrentProfile()).toStdWString();
|
||||
return toTString("qTox - " + Settings::getInstance().getCurrentProfile());
|
||||
}
|
||||
}
|
||||
|
||||
bool Platform::setAutorun(bool on)
|
||||
{
|
||||
HKEY key = 0;
|
||||
if (RegOpenKeyEx(HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\CurrentVersion\\Run",
|
||||
0, KEY_ALL_ACCESS, &key) != ERROR_SUCCESS)
|
||||
if (RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Run"),
|
||||
0, KEY_ALL_ACCESS, &key) != ERROR_SUCCESS)
|
||||
return false;
|
||||
|
||||
bool result = false;
|
||||
std::wstring keyName = currentRegistryKeyName();
|
||||
tstring keyName = currentRegistryKeyName();
|
||||
|
||||
if (on)
|
||||
{
|
||||
std::wstring path = currentCommandLine();
|
||||
tstring path = currentCommandLine();
|
||||
result = RegSetValueEx(key, keyName.c_str(), 0, REG_SZ, (PBYTE)path.c_str(),
|
||||
path.length() * sizeof(wchar_t)) == ERROR_SUCCESS;
|
||||
path.length() * sizeof(TCHAR)) == ERROR_SUCCESS;
|
||||
}
|
||||
else
|
||||
result = RegDeleteValue(key, keyName.c_str()) == ERROR_SUCCESS;
|
||||
|
@ -64,13 +77,13 @@ bool Platform::setAutorun(bool on)
|
|||
bool Platform::getAutorun()
|
||||
{
|
||||
HKEY key = 0;
|
||||
if (RegOpenKeyEx(HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\CurrentVersion\\Run",
|
||||
0, KEY_ALL_ACCESS, &key) != ERROR_SUCCESS)
|
||||
if (RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Run"),
|
||||
0, KEY_ALL_ACCESS, &key) != ERROR_SUCCESS)
|
||||
return false;
|
||||
|
||||
std::wstring keyName = currentRegistryKeyName();;
|
||||
tstring keyName = currentRegistryKeyName();
|
||||
|
||||
wchar_t path[MAX_PATH] = { 0 };
|
||||
TCHAR path[MAX_PATH] = { 0 };
|
||||
DWORD length = sizeof(path);
|
||||
DWORD type = REG_SZ;
|
||||
bool result = false;
|
||||
|
|
Loading…
Reference in New Issue
Block a user