Skip to content

Commit 4488c2a

Browse files
authored
fix: Problems with Windows and QT6 comaptibility
Pull request #972
2 parents 50bce15 + 19d5baa commit 4488c2a

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

src/logger.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@
2323
#include <QMetaObject>
2424
#include <QTime>
2525

26+
// only for QT 6
27+
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
28+
#include <QStringConverter>
29+
#endif
2630
#include <chrono>
2731
#include <thread>
2832

@@ -183,7 +187,11 @@ void Logger::setCurrentLogFile(QString filename)
183187
}
184188
instance->outFileStream.setDevice(&instance->outputFile);
185189
#if defined(Q_OS_WIN)
190+
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
191+
instance->outFileStream.setEncoding(QStringConverter::Utf8);
192+
#else
186193
instance->outFileStream.setCodec("UTF-8"); // to properly print special characters in files
194+
#endif
187195
#endif
188196
instance->setCurrentStream(&instance->outFileStream);
189197
}

src/winextras.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,14 @@ void WinExtras::removeFileAssociationFromRegistry()
330330
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0);
331331
}
332332

333+
// This functions works only with QT6 and newer C++
334+
const wchar_t *convertCharArrayToLPCWSTR(const char *charArray)
335+
{
336+
wchar_t *wString = new wchar_t[1024];
337+
MultiByteToWideChar(CP_ACP, 0, charArray, -1, wString, 1024);
338+
return wString;
339+
}
340+
333341
/**
334342
* @brief Attempt to elevate process using runas
335343
* @return Execution status
@@ -344,8 +352,13 @@ bool WinExtras::elevateAntiMicro()
344352
char *tempfile = ba.data();
345353
tempverb[5] = '\0';
346354
tempfile[antiProgramLocation.length()] = '\0';
355+
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
356+
sei.lpVerb = convertCharArrayToLPCWSTR(tempverb);
357+
sei.lpFile = convertCharArrayToLPCWSTR(tempfile);
358+
#else
347359
sei.lpVerb = tempverb;
348360
sei.lpFile = tempfile;
361+
#endif
349362
sei.hwnd = NULL;
350363
sei.nShow = SW_NORMAL;
351364
BOOL result = ShellExecuteEx(&sei);

0 commit comments

Comments
 (0)