qt 6.8.0 fix
This commit is contained in:
parent
fcd9b0838c
commit
65ecb2d3f7
|
@ -9,6 +9,7 @@
|
|||
class C7zFileEngineIterator : public QAbstractFileEngineIterator
|
||||
{
|
||||
public:
|
||||
#if QT_VERSION < QT_VERSION_CHECK(6, 8, 0)
|
||||
C7zFileEngineIterator(QDir::Filters filters, const QStringList& filterNames,
|
||||
const QStringList& allEntries)
|
||||
: QAbstractFileEngineIterator(filters, filterNames), entries(allEntries), index(0) {}
|
||||
|
@ -25,7 +26,21 @@ public:
|
|||
{
|
||||
return index < entries.size();
|
||||
}
|
||||
#else
|
||||
C7zFileEngineIterator(const QString &path, QDir::Filters filters, const QStringList& filterNames,
|
||||
const QStringList& allEntries)
|
||||
: QAbstractFileEngineIterator(path, filters, filterNames), entries(allEntries), index(0) {}
|
||||
~C7zFileEngineIterator() {}
|
||||
|
||||
bool advance() override
|
||||
{
|
||||
if (index >= entries.size())
|
||||
return false;
|
||||
++index;
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
QString currentFileName() const override
|
||||
{
|
||||
if (index <= 0 || index > entries.size())
|
||||
|
@ -172,7 +187,11 @@ QAbstractFileEngine::Iterator *C7zFileEngine::beginEntryList(QDir::Filters filte
|
|||
allEntries.append(Path);
|
||||
}
|
||||
|
||||
#if QT_VERSION < QT_VERSION_CHECK(6, 8, 0)
|
||||
return new C7zFileEngineIterator(filters, filterNames, allEntries);
|
||||
#else
|
||||
return new C7zFileEngineIterator("", filters, filterNames, allEntries);
|
||||
#endif
|
||||
}
|
||||
|
||||
QAbstractFileEngine::FileFlags C7zFileEngine::fileFlags(FileFlags type) const
|
||||
|
@ -201,11 +220,19 @@ QString C7zFileEngine::fileName(FileName file) const
|
|||
return _filename;
|
||||
}
|
||||
|
||||
#if QT_VERSION < QT_VERSION_CHECK(6, 8, 0)
|
||||
QDateTime C7zFileEngine::fileTime(FileTime time) const
|
||||
#else
|
||||
QDateTime C7zFileEngine::fileTime(QFile::FileTime time) const
|
||||
#endif
|
||||
{
|
||||
switch (time)
|
||||
{
|
||||
#if QT_VERSION < QT_VERSION_CHECK(6, 8, 0)
|
||||
case QAbstractFileEngine::ModificationTime:
|
||||
#else
|
||||
case QFile::FileModificationTime:
|
||||
#endif
|
||||
default:
|
||||
return _datetime;
|
||||
break;
|
||||
|
@ -316,6 +343,7 @@ void C7zFileEngineHandler::Close()
|
|||
m_pArchive = NULL;
|
||||
}
|
||||
|
||||
#if QT_VERSION < QT_VERSION_CHECK(6, 8, 0)
|
||||
QAbstractFileEngine* C7zFileEngineHandler::create(const QString& filename) const
|
||||
{
|
||||
if (m_pArchive && filename.startsWith(m_Scheme))
|
||||
|
@ -323,3 +351,12 @@ QAbstractFileEngine* C7zFileEngineHandler::create(const QString& filename) const
|
|||
|
||||
return NULL;
|
||||
}
|
||||
#else
|
||||
std::unique_ptr<QAbstractFileEngine> C7zFileEngineHandler::create(const QString& filename) const
|
||||
{
|
||||
if (m_pArchive && filename.startsWith(m_Scheme))
|
||||
return std::unique_ptr<QAbstractFileEngine>(new C7zFileEngine(filename, m_pArchive, &m_Mutex));
|
||||
|
||||
return std::unique_ptr<QAbstractFileEngine>();
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -35,7 +35,11 @@ public:
|
|||
virtual bool isRelativePath() const;
|
||||
virtual FileFlags fileFlags(FileFlags type = FileInfoAll) const;
|
||||
virtual QString fileName(FileName file = DefaultName) const;
|
||||
virtual QDateTime fileTime(FileTime time) const;
|
||||
#if QT_VERSION < QT_VERSION_CHECK(6, 8, 0)
|
||||
virtual QDateTime fileTime(FileTime time) const;
|
||||
#else
|
||||
virtual QDateTime fileTime(QFile::FileTime time) const;
|
||||
#endif
|
||||
virtual void setFileName(const QString& file);
|
||||
bool atEnd() const;
|
||||
|
||||
|
@ -82,7 +86,11 @@ public:
|
|||
bool IsOpen() { return m_pArchive != NULL; }
|
||||
QString Prefix() { return m_Scheme; }
|
||||
|
||||
#if QT_VERSION < QT_VERSION_CHECK(6, 8, 0)
|
||||
QAbstractFileEngine* create(const QString& filename) const;
|
||||
#else
|
||||
std::unique_ptr<QAbstractFileEngine> create(const QString& filename) const;
|
||||
#endif
|
||||
|
||||
private:
|
||||
QString m_Scheme;
|
||||
|
|
|
@ -216,7 +216,7 @@ static LONG __stdcall MyCrashHandlerExceptionFilter(EXCEPTION_POINTERS* pEx)
|
|||
return EXCEPTION_CONTINUE_SEARCH;
|
||||
|
||||
wchar_t szMiniDumpFileName[128];
|
||||
wsprintf(szMiniDumpFileName, L"%s %s.dmp", s_szMiniDumpName, QDateTime::currentDateTime().toString("dd.MM.yyyy hh-mm-ss,zzz").replace(QRegularExpression("[:*?<>|\"\\/]"), "_").toStdWString().c_str());
|
||||
wsprintfW(szMiniDumpFileName, L"%s %s.dmp", s_szMiniDumpName, QDateTime::currentDateTime().toString("dd.MM.yyyy hh-mm-ss,zzz").replace(QRegularExpression("[:*?<>|\"\\/]"), "_").toStdWString().c_str());
|
||||
|
||||
/*wchar_t szMiniDumpPath[MAX_PATH] = { 0 };
|
||||
|
||||
|
@ -237,7 +237,7 @@ static LONG __stdcall MyCrashHandlerExceptionFilter(EXCEPTION_POINTERS* pEx)
|
|||
wcscat(szMiniDumpPath, L"\\");
|
||||
wcscat(szMiniDumpPath, szMiniDumpFileName);
|
||||
|
||||
HANDLE hFile = CreateFile(szMiniDumpPath, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||
HANDLE hFile = CreateFileW(szMiniDumpPath, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||
|
||||
if (hFile != INVALID_HANDLE_VALUE)
|
||||
{
|
||||
|
@ -255,10 +255,10 @@ static LONG __stdcall MyCrashHandlerExceptionFilter(EXCEPTION_POINTERS* pEx)
|
|||
|
||||
wchar_t szMiniDumpMessage[256];
|
||||
if (!bSuccess)
|
||||
wsprintf(szMiniDumpMessage, L"%s crashed!\r\nCrashdump creation failed.", s_szMiniDumpName);
|
||||
wsprintfW(szMiniDumpMessage, L"%s crashed!\r\nCrashdump creation failed.", s_szMiniDumpName);
|
||||
else
|
||||
wsprintf(szMiniDumpMessage, L"%s crashed!\r\nCrashdump saved to \"%s\".\r\nPlease report the crash and attach the file \"%s\".", s_szMiniDumpName, szMiniDumpPath, szMiniDumpFileName);
|
||||
MessageBox(NULL, szMiniDumpMessage, s_szMiniDumpName, MB_OK | MB_ICONERROR);
|
||||
wsprintfW(szMiniDumpMessage, L"%s crashed!\r\nCrashdump saved to \"%s\".\r\nPlease report the crash and attach the file \"%s\".", s_szMiniDumpName, szMiniDumpPath, szMiniDumpFileName);
|
||||
MessageBoxW(NULL, szMiniDumpMessage, s_szMiniDumpName, MB_OK | MB_ICONERROR);
|
||||
|
||||
// or return one of the following:
|
||||
// - EXCEPTION_CONTINUE_SEARCH
|
||||
|
@ -279,7 +279,7 @@ void InitMiniDumpWriter(const wchar_t* Name, const wchar_t* Path)
|
|||
|
||||
// Initialize the member, so we do not load the dll after the exception has occurred
|
||||
// which might be not possible anymore...
|
||||
s_hDbgHelpMod = LoadLibrary(L"dbghelp.dll");
|
||||
s_hDbgHelpMod = LoadLibraryW(L"dbghelp.dll");
|
||||
if (s_hDbgHelpMod != NULL)
|
||||
s_pMDWD = (tMDWD) GetProcAddress(s_hDbgHelpMod, "MiniDumpWriteDump");
|
||||
|
||||
|
|
|
@ -371,7 +371,7 @@ CSymbolProvider* CSymbolProvider::Instance()
|
|||
HMODULE DbgHelpMod = LoadLibrary((KitsRoot + "dbghelp.dll").toStdWString().c_str());
|
||||
HMODULE SymSrvMod = LoadLibrary((KitsRoot + "symsrv.dll").toStdWString().c_str());*/
|
||||
|
||||
HMODULE DbgHelpMod = LoadLibrary(L"dbghelp.dll");
|
||||
HMODULE DbgHelpMod = LoadLibraryW(L"dbghelp.dll");
|
||||
|
||||
__sys_SymFromAddr = (P_SymFromAddr)GetProcAddress(DbgHelpMod, "SymFromAddr");
|
||||
__sys_SymGetModuleInfoW64 = (P_SymGetModuleInfoW64)GetProcAddress(DbgHelpMod, "SymGetModuleInfoW64");
|
||||
|
|
|
@ -105,7 +105,7 @@ void CBoxBorder::ThreadFunc()
|
|||
m->ThumbWidth = GetSystemMetrics(SM_CXHTHUMB);
|
||||
m->ThumbHeight = GetSystemMetrics(SM_CYVTHUMB);
|
||||
|
||||
HMODULE dwmapi = LoadLibrary(L"dwmapi.dll");
|
||||
HMODULE dwmapi = LoadLibraryW(L"dwmapi.dll");
|
||||
if (dwmapi) {
|
||||
m->DwmIsCompositionEnabled = (P_DwmIsCompositionEnabled)GetProcAddress(dwmapi, "DwmIsCompositionEnabled");
|
||||
if (m->DwmIsCompositionEnabled) {
|
||||
|
@ -115,7 +115,7 @@ void CBoxBorder::ThreadFunc()
|
|||
}
|
||||
}
|
||||
|
||||
WNDCLASSEX wc;
|
||||
WNDCLASSEXW wc;
|
||||
wc.cbSize = sizeof(WNDCLASSEX);
|
||||
wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS | CS_GLOBALCLASS;
|
||||
wc.lpfnWndProc = ::DefWindowProc;
|
||||
|
@ -128,9 +128,9 @@ void CBoxBorder::ThreadFunc()
|
|||
wc.lpszMenuName = NULL;
|
||||
wc.lpszClassName = Sandboxie_WindowClassName;
|
||||
wc.hIconSm = NULL;
|
||||
if (ATOM lpClassName = RegisterClassEx(&wc))
|
||||
if (ATOM lpClassName = RegisterClassExW(&wc))
|
||||
{
|
||||
m->BorderWnd = CreateWindowEx(WS_EX_LAYERED | WS_EX_TRANSPARENT | WS_EX_NOACTIVATE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST, (LPCWSTR)lpClassName,
|
||||
m->BorderWnd = CreateWindowExW(WS_EX_LAYERED | WS_EX_TRANSPARENT | WS_EX_NOACTIVATE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST, (LPCWSTR)lpClassName,
|
||||
Sandboxie_WindowClassName, WS_POPUP | WS_CLIPSIBLINGS, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, NULL, NULL);
|
||||
}
|
||||
if (!m->BorderWnd)
|
||||
|
|
|
@ -19,9 +19,6 @@
|
|||
#include <QtConcurrent>
|
||||
#include "SandBox.h"
|
||||
#include "../SbieAPI.h"
|
||||
#ifdef _DEBUG
|
||||
#include <QGuiApplication>
|
||||
#endif
|
||||
|
||||
#include <ntstatus.h>
|
||||
#define WIN32_NO_STATUS
|
||||
|
@ -149,10 +146,10 @@ void CSandBox::SetFileRoot(const QString& FilePath)
|
|||
|
||||
SB_STATUS CSandBox::RunStart(const QString& Command, bool Elevated)
|
||||
{
|
||||
#ifdef _DEBUG
|
||||
/*#ifdef _DEBUG
|
||||
if ((QGuiApplication::queryKeyboardModifiers() & Qt::ControlModifier) != 0)
|
||||
return RunSandboxed(Command);
|
||||
#endif
|
||||
#endif*/
|
||||
return m_pAPI->RunStart(m_Name, Command, Elevated ? CSbieAPI::eStartElevated : CSbieAPI::eStartDefault);
|
||||
}
|
||||
|
||||
|
|
|
@ -235,7 +235,7 @@ void CSbieTemplates::CollectClasses()
|
|||
EnumWindows([](HWND hwnd, LPARAM lparam)
|
||||
{
|
||||
WCHAR clsnm[256];
|
||||
GetClassName(hwnd, clsnm, 250);
|
||||
GetClassNameW(hwnd, clsnm, 250);
|
||||
clsnm[250] = L'\0';
|
||||
|
||||
if (clsnm[0] && wcsncmp(clsnm, L"Sandbox:", 8) != 0)
|
||||
|
@ -257,14 +257,14 @@ void CSbieTemplates::CollectServices()
|
|||
return;
|
||||
|
||||
ULONG info_len = 10240;
|
||||
ENUM_SERVICE_STATUS* info = (ENUM_SERVICE_STATUS *)malloc(info_len);
|
||||
ENUM_SERVICE_STATUSW* info = (ENUM_SERVICE_STATUSW *)malloc(info_len);
|
||||
|
||||
ULONG ResumeHandle = 0;
|
||||
for(;;)
|
||||
{
|
||||
ULONG len;
|
||||
ULONG num;
|
||||
BOOL ret = EnumServicesStatus(hManager, SERVICE_TYPE_ALL, SERVICE_STATE_ALL, info, info_len, &len, &num, &ResumeHandle);
|
||||
BOOL ret = EnumServicesStatusW(hManager, SERVICE_TYPE_ALL, SERVICE_STATE_ALL, info, info_len, &len, &num, &ResumeHandle);
|
||||
if (!ret && GetLastError() != ERROR_MORE_DATA)
|
||||
break;
|
||||
|
||||
|
@ -298,7 +298,7 @@ void CSbieTemplates::CollectProducts()
|
|||
for(;;)
|
||||
{
|
||||
HKEY hkey;
|
||||
LONG rc = RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall", 0, DesiredAccess, &hkey);
|
||||
LONG rc = RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall", 0, DesiredAccess, &hkey);
|
||||
if (rc != 0)
|
||||
continue;
|
||||
|
||||
|
@ -306,7 +306,7 @@ void CSbieTemplates::CollectProducts()
|
|||
for(ULONG index = 0; rc != ERROR_NO_MORE_ITEMS; index++)
|
||||
{
|
||||
ULONG name_len = 120;
|
||||
rc = RegEnumKeyEx(hkey, index, name, &name_len, NULL, NULL, NULL, NULL);
|
||||
rc = RegEnumKeyExW(hkey, index, name, &name_len, NULL, NULL, NULL, NULL);
|
||||
if (rc == 0) {
|
||||
_wcslwr(name);
|
||||
m_Products.append(QString::fromWCharArray(name));
|
||||
|
@ -450,7 +450,7 @@ bool CSbieTemplates::CheckRegistryKey(const QString& Value)
|
|||
bool CSbieTemplates::CheckFile(const QString& Value)
|
||||
{
|
||||
std::wstring path = Value.toStdWString();
|
||||
if (GetFileAttributes(path.c_str()) != INVALID_FILE_ATTRIBUTES)
|
||||
if (GetFileAttributesW(path.c_str()) != INVALID_FILE_ATTRIBUTES)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
@ -507,7 +507,7 @@ void CSbieTemplates::InitExpandPaths(bool WithUser)
|
|||
keyPath += L"Shell Folders";
|
||||
|
||||
HKEY hkey;
|
||||
LONG rc = RegOpenKey(HKEY_CURRENT_USER, keyPath.c_str(), &hkey);
|
||||
LONG rc = RegOpenKeyW(HKEY_CURRENT_USER, keyPath.c_str(), &hkey);
|
||||
for (ULONG index = 0; rc == 0; index++)
|
||||
{
|
||||
WCHAR name[64];
|
||||
|
@ -518,11 +518,11 @@ void CSbieTemplates::InitExpandPaths(bool WithUser)
|
|||
|
||||
name_len = 60;
|
||||
value_len = MAX_PATH + 4;
|
||||
rc = RegEnumValue(hkey, index, name, &name_len, NULL, &type, (BYTE *)value, &value_len);
|
||||
rc = RegEnumValueW(hkey, index, name, &name_len, NULL, &type, (BYTE *)value, &value_len);
|
||||
if (rc == 0 && (type == REG_SZ || type == REG_EXPAND_SZ))
|
||||
{
|
||||
WCHAR expand[MAX_PATH + 8];
|
||||
ULONG len = ExpandEnvironmentStrings(value, expand, MAX_PATH + 4);
|
||||
ULONG len = ExpandEnvironmentStringsW(value, expand, MAX_PATH + 4);
|
||||
if (len > 0 && len <= MAX_PATH)
|
||||
{
|
||||
QString value = QString::fromWCharArray(expand);
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
#include "stdafx.h"
|
||||
#include <QDebug>
|
||||
#include <QStandardPaths>
|
||||
#ifdef _DEBUG
|
||||
#include <QGuiApplication>
|
||||
#endif
|
||||
#include "SbieAPI.h"
|
||||
|
||||
#include <ntstatus.h>
|
||||
|
@ -60,7 +57,7 @@ struct SSbieAPI
|
|||
if (!ProcessIdToSessionId(GetCurrentProcessId(), &sessionId))
|
||||
sessionId = 0;
|
||||
|
||||
wsprintf(QueueName, L"*%s_%08X", INTERACTIVE_QUEUE_NAME, sessionId);
|
||||
wsprintfW(QueueName, L"*%s_%08X", INTERACTIVE_QUEUE_NAME, sessionId);
|
||||
|
||||
lastMessageNum = 0;
|
||||
//lastRecordNum = 0;
|
||||
|
@ -156,7 +153,7 @@ bool CSbieAPI::IsSbieCtrlRunning()
|
|||
{
|
||||
static const WCHAR *SbieCtrlMutexName = SANDBOXIE L"_SingleInstanceMutex_Control";
|
||||
|
||||
HANDLE hSbieCtrlMutex = OpenMutex(MUTEX_ALL_ACCESS, FALSE, SbieCtrlMutexName);
|
||||
HANDLE hSbieCtrlMutex = OpenMutexW(MUTEX_ALL_ACCESS, FALSE, SbieCtrlMutexName);
|
||||
if (hSbieCtrlMutex) {
|
||||
CloseHandle(hSbieCtrlMutex);
|
||||
return true;
|
||||
|
@ -168,14 +165,14 @@ bool CSbieAPI::TerminateSbieCtrl()
|
|||
{
|
||||
static const WCHAR *WindowClassName = L"SandboxieControlWndClass";
|
||||
|
||||
HWND hwnd = FindWindow(WindowClassName, NULL);
|
||||
HWND hwnd = FindWindowW(WindowClassName, NULL);
|
||||
if (hwnd) {
|
||||
PostMessage(hwnd, WM_QUIT, 0, 0);
|
||||
}
|
||||
|
||||
for (int i = 0; i < 10 && hwnd != NULL; i++) {
|
||||
QThread::msleep(100);
|
||||
hwnd = FindWindow(WindowClassName, NULL);
|
||||
hwnd = FindWindowW(WindowClassName, NULL);
|
||||
}
|
||||
|
||||
return hwnd == NULL;
|
||||
|
@ -202,7 +199,7 @@ QString CSbieAPI__GetRegValue(HANDLE hKey, const WCHAR* pName)
|
|||
if (NT_SUCCESS(NtQueryValueKey(hKey, &uni, KeyValuePartialInformation, value, sizeof(buf) - 16, &len)))
|
||||
{
|
||||
WCHAR expand[MAX_PATH + 8];
|
||||
len = ExpandEnvironmentStrings((WCHAR*)value->Data, expand, MAX_PATH + 4);
|
||||
len = ExpandEnvironmentStringsW((WCHAR*)value->Data, expand, MAX_PATH + 4);
|
||||
|
||||
return QString::fromWCharArray(expand);
|
||||
}
|
||||
|
@ -291,7 +288,7 @@ SB_STATUS CSbieAPI::Connect(bool takeOver, bool withQueue)
|
|||
UpdateDriveLetters();
|
||||
|
||||
m_SbiePath = GetSbieHome();
|
||||
m->SbieMsgDll = LoadLibraryEx((m_SbiePath.toStdWString() + L"\\" SBIEMSG_DLL).c_str(), NULL, LOAD_LIBRARY_AS_DATAFILE);
|
||||
m->SbieMsgDll = LoadLibraryExW((m_SbiePath.toStdWString() + L"\\" SBIEMSG_DLL).c_str(), NULL, LOAD_LIBRARY_AS_DATAFILE);
|
||||
|
||||
m->lastMessageNum = 0;
|
||||
//m->lastRecordNum = 0;
|
||||
|
@ -911,7 +908,7 @@ void CSbieAPI::UpdateDriveLetters()
|
|||
for (wchar_t ltr = L'A'; ltr <= L'Z'; ltr++)
|
||||
{
|
||||
wchar_t drv[] = { ltr, L':', '\0' };
|
||||
uint size = QueryDosDevice(drv, lpTargetPath, MAX_PATH);
|
||||
uint size = QueryDosDeviceW(drv, lpTargetPath, MAX_PATH);
|
||||
if (size > 0)
|
||||
{
|
||||
SDrive Drive;
|
||||
|
@ -1161,7 +1158,7 @@ QString CSbieAPI__FormatNtStatus(long nsCode)
|
|||
{
|
||||
static HMODULE hNtDll = NULL;
|
||||
if(!hNtDll)
|
||||
hNtDll = GetModuleHandle(L"ntdll.dll");
|
||||
hNtDll = GetModuleHandleW(L"ntdll.dll");
|
||||
if (hNtDll == NULL)
|
||||
return QString();
|
||||
|
||||
|
@ -1810,7 +1807,7 @@ QByteArray CSbieAPI::MakeEnvironment(bool AddDeviceMap)
|
|||
foreach(const QString& Entry, EnvList)
|
||||
ExtraLength += Entry.length() + 1;
|
||||
|
||||
WCHAR *Environment = GetEnvironmentStrings();
|
||||
WCHAR *Environment = GetEnvironmentStringsW();
|
||||
ULONG EnvLength = 0;
|
||||
for(WCHAR* envPtr = (WCHAR*)Environment; *envPtr;)
|
||||
{
|
||||
|
@ -1860,10 +1857,10 @@ SB_STATUS CSbieAPI::RunSandboxed(const QString& BoxName, const QString& Command,
|
|||
BoxName.toWCharArray(req->boxname); // fix-me: potential overflow
|
||||
req->boxname[BoxName.length()] = L'\0';
|
||||
req->si_flags = STARTF_FORCEOFFFEEDBACK;
|
||||
#ifdef _DEBUG
|
||||
/*#ifdef _DEBUG
|
||||
if ((QGuiApplication::queryKeyboardModifiers() & Qt::ShiftModifier) != 0)
|
||||
req->si_flags |= 0x80000000;
|
||||
#endif
|
||||
#endif*/
|
||||
req->si_show_window = wShowWindow;
|
||||
if (req->si_show_window != SW_SHOWNORMAL)
|
||||
req->si_flags |= STARTF_USESHOWWINDOW;
|
||||
|
@ -2864,8 +2861,8 @@ QString CSbieAPI::GetSbieMsgStr(quint32 code, quint32 Lang)
|
|||
{
|
||||
ULONG FormatFlags = FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_ALLOCATE_BUFFER;
|
||||
WCHAR* ret_str = NULL;
|
||||
if (!m->SbieMsgDll || (FormatMessage(FormatFlags, m->SbieMsgDll, code, Lang, (LPWSTR)&ret_str, 4, NULL) == 0
|
||||
&& FormatMessage(FormatFlags, m->SbieMsgDll, code, 1033, (LPWSTR)&ret_str, 4, NULL) == 0))
|
||||
if (!m->SbieMsgDll || (FormatMessageW(FormatFlags, m->SbieMsgDll, code, Lang, (LPWSTR)&ret_str, 4, NULL) == 0
|
||||
&& FormatMessageW(FormatFlags, m->SbieMsgDll, code, 1033, (LPWSTR)&ret_str, 4, NULL) == 0))
|
||||
return QString("SBIE%0: %1; %2").arg(code & 0xFFFF, 4, 10);
|
||||
QString qStr = QString::fromWCharArray(ret_str);
|
||||
LocalFree(ret_str);
|
||||
|
@ -2877,12 +2874,12 @@ void CSbieAPI::LoadEventLog()
|
|||
QByteArray buff;
|
||||
buff.resize(8 * 1024);
|
||||
|
||||
HANDLE hEventLog = OpenEventLog(NULL, L"System");
|
||||
HANDLE hEventLog = OpenEventLogW(NULL, L"System");
|
||||
|
||||
while (hEventLog)
|
||||
{
|
||||
ULONG bytesRead, bytesNeeded;
|
||||
if(!ReadEventLog(hEventLog, EVENTLOG_SEQUENTIAL_READ | EVENTLOG_FORWARDS_READ, 0, buff.data(), buff.size(), &bytesRead, &bytesNeeded))
|
||||
if(!ReadEventLogW(hEventLog, EVENTLOG_SEQUENTIAL_READ | EVENTLOG_FORWARDS_READ, 0, buff.data(), buff.size(), &bytesRead, &bytesNeeded))
|
||||
break;
|
||||
|
||||
EVENTLOGRECORD *rec = (EVENTLOGRECORD *)buff.data();
|
||||
|
|
|
@ -49,10 +49,10 @@ QString ErrorString(qint32 err)
|
|||
QString Error;
|
||||
HMODULE handle = NULL; //err < 0 ? GetModuleHandle(L"NTDLL.DLL") : NULL;
|
||||
DWORD flags = 0; //err < 0 ? FORMAT_MESSAGE_FROM_HMODULE : 0;
|
||||
LPTSTR s;
|
||||
LPWSTR s;
|
||||
if (::FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | flags, handle, err, 0, (LPTSTR)&s, 0, NULL) > 0)
|
||||
{
|
||||
LPTSTR p = wcschr(s, L'\r');
|
||||
LPWSTR p = wcschr(s, L'\r');
|
||||
if (p != NULL) *p = L'\0';
|
||||
Error = QString::fromWCharArray(s);
|
||||
::LocalFree(s);
|
||||
|
|
|
@ -70,7 +70,7 @@ int GetServiceStatus(const wchar_t* name)
|
|||
if (!scm)
|
||||
return -1;
|
||||
|
||||
SC_HANDLE service = OpenService(scm, name, SERVICE_QUERY_STATUS);
|
||||
SC_HANDLE service = OpenServiceW(scm, name, SERVICE_QUERY_STATUS);
|
||||
if (!service) {
|
||||
CloseServiceHandle(scm);
|
||||
return 0;
|
||||
|
@ -211,7 +211,7 @@ SB_RESULT(void*) CSbieUtils::ElevateOps(const QStringList& Ops)
|
|||
std::wstring path = QCoreApplication::applicationFilePath().toStdWString();
|
||||
std::wstring params = L"-assist \"" + Ops.join("\" \"").toStdWString() + L"\"";
|
||||
|
||||
SHELLEXECUTEINFO shex;
|
||||
SHELLEXECUTEINFOW shex;
|
||||
memset(&shex, 0, sizeof(SHELLEXECUTEINFO));
|
||||
shex.cbSize = sizeof(SHELLEXECUTEINFO);
|
||||
shex.fMask = SEE_MASK_FLAG_NO_UI | SEE_MASK_NOCLOSEPROCESS;
|
||||
|
@ -221,7 +221,7 @@ SB_RESULT(void*) CSbieUtils::ElevateOps(const QStringList& Ops)
|
|||
shex.nShow = SW_SHOWNORMAL;
|
||||
shex.lpVerb = L"runas";
|
||||
|
||||
if (!ShellExecuteEx(&shex))
|
||||
if (!ShellExecuteExW(&shex))
|
||||
return SB_ERR(SB_NeedAdmin);
|
||||
return CSbieResult<void*>(OP_ASYNC, shex.hProcess);
|
||||
}
|
||||
|
@ -384,14 +384,14 @@ QString CSbieUtils::GetContextMenuStartCmd()
|
|||
{
|
||||
const wchar_t* key = L"Software\\Classes\\*\\shell\\sandbox\\command";
|
||||
HKEY hkey;
|
||||
LONG rc = RegOpenKeyEx(HKEY_CURRENT_USER, key, 0, KEY_READ, &hkey);
|
||||
LONG rc = RegOpenKeyExW(HKEY_CURRENT_USER, key, 0, KEY_READ, &hkey);
|
||||
if (rc != 0)
|
||||
return QString();
|
||||
|
||||
ULONG type;
|
||||
WCHAR path[512];
|
||||
ULONG path_len = sizeof(path) - sizeof(WCHAR) * 4;
|
||||
rc = RegQueryValueEx(hkey, NULL, NULL, &type, (BYTE *)path, &path_len);
|
||||
rc = RegQueryValueExW(hkey, NULL, NULL, &type, (BYTE *)path, &path_len);
|
||||
RegCloseKey(hkey);
|
||||
if (rc != 0)
|
||||
return QString();
|
||||
|
@ -409,12 +409,12 @@ void CSbieUtils::AddContextMenu(const QString& StartPath, const QString& RunStr,
|
|||
std::wstring explorer_path(512, L'\0');
|
||||
|
||||
HKEY hkeyWinlogon;
|
||||
LONG rc = RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"software\\microsoft\\windows nt\\currentversion\\winlogon", 0, KEY_READ, &hkeyWinlogon);
|
||||
LONG rc = RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"software\\microsoft\\windows nt\\currentversion\\winlogon", 0, KEY_READ, &hkeyWinlogon);
|
||||
if (rc == 0)
|
||||
{
|
||||
ULONG path_len = explorer_path.size() * sizeof(WCHAR);
|
||||
ULONG type;
|
||||
rc = RegQueryValueEx(hkeyWinlogon, L"Shell", NULL, &type, (BYTE *)explorer_path.c_str(), &path_len);
|
||||
rc = RegQueryValueExW(hkeyWinlogon, L"Shell", NULL, &type, (BYTE *)explorer_path.c_str(), &path_len);
|
||||
if (rc == 0 && (type == REG_SZ || type == REG_EXPAND_SZ))
|
||||
explorer_path.resize(path_len / sizeof(WCHAR));
|
||||
RegCloseKey(hkeyWinlogon);
|
||||
|
@ -423,7 +423,7 @@ void CSbieUtils::AddContextMenu(const QString& StartPath, const QString& RunStr,
|
|||
// get default explorer path
|
||||
if (*explorer_path.c_str() == L'\0' || _wcsicmp(explorer_path.c_str(), L"explorer.exe") == 0)
|
||||
{
|
||||
GetWindowsDirectory((wchar_t*)explorer_path.c_str(), MAX_PATH);
|
||||
GetWindowsDirectoryW((wchar_t*)explorer_path.c_str(), MAX_PATH);
|
||||
ULONG path_len = wcslen(explorer_path.c_str());
|
||||
explorer_path.resize(path_len);
|
||||
explorer_path.append(L"\\explorer.exe");
|
||||
|
@ -435,22 +435,22 @@ void CSbieUtils::AddContextMenu(const QString& StartPath, const QString& RunStr,
|
|||
void CSbieUtils::CreateShellEntry(const std::wstring& classname, const std::wstring& key, const std::wstring& cmdtext, const std::wstring& iconpath, const std::wstring& startcmd)
|
||||
{
|
||||
HKEY hkey;
|
||||
LONG rc = RegCreateKeyEx(HKEY_CURRENT_USER, (L"software\\classes\\" + classname + L"\\shell\\" + key).c_str(), 0, NULL, 0, KEY_WRITE, NULL, &hkey, NULL);
|
||||
LONG rc = RegCreateKeyExW(HKEY_CURRENT_USER, (L"software\\classes\\" + classname + L"\\shell\\" + key).c_str(), 0, NULL, 0, KEY_WRITE, NULL, &hkey, NULL);
|
||||
if (rc != 0)
|
||||
return;
|
||||
|
||||
RegSetValueEx(hkey, NULL, 0, REG_SZ, (BYTE *)cmdtext.c_str(), (cmdtext.length() + 1) * sizeof(WCHAR));
|
||||
RegSetValueEx(hkey, L"Icon", 0, REG_SZ, (BYTE *)iconpath.c_str(), (iconpath.length() + 1) * sizeof(WCHAR));
|
||||
RegSetValueExW(hkey, NULL, 0, REG_SZ, (BYTE *)cmdtext.c_str(), (cmdtext.length() + 1) * sizeof(WCHAR));
|
||||
RegSetValueExW(hkey, L"Icon", 0, REG_SZ, (BYTE *)iconpath.c_str(), (iconpath.length() + 1) * sizeof(WCHAR));
|
||||
|
||||
RegCloseKey(hkey);
|
||||
if (rc != 0)
|
||||
return;
|
||||
|
||||
rc = RegCreateKeyEx(HKEY_CURRENT_USER, (L"software\\classes\\" + classname + L"\\shell\\" + key + L"\\command").c_str(), 0, NULL, 0, KEY_WRITE, NULL, &hkey, NULL);
|
||||
rc = RegCreateKeyExW(HKEY_CURRENT_USER, (L"software\\classes\\" + classname + L"\\shell\\" + key + L"\\command").c_str(), 0, NULL, 0, KEY_WRITE, NULL, &hkey, NULL);
|
||||
if (rc != 0)
|
||||
return;
|
||||
|
||||
RegSetValueEx(hkey, NULL, 0, REG_SZ, (BYTE *)startcmd.c_str(), (startcmd.length() + 1) * sizeof(WCHAR));
|
||||
RegSetValueExW(hkey, NULL, 0, REG_SZ, (BYTE *)startcmd.c_str(), (startcmd.length() + 1) * sizeof(WCHAR));
|
||||
|
||||
RegCloseKey(hkey);
|
||||
}
|
||||
|
@ -465,7 +465,7 @@ bool CSbieUtils::HasContextMenu2()
|
|||
{
|
||||
const wchar_t* key = L"Software\\Classes\\*\\shell\\unbox\\command";
|
||||
HKEY hkey;
|
||||
LONG rc = RegOpenKeyEx(HKEY_CURRENT_USER, key, 0, KEY_READ, &hkey);
|
||||
LONG rc = RegOpenKeyExW(HKEY_CURRENT_USER, key, 0, KEY_READ, &hkey);
|
||||
if (rc != 0)
|
||||
return false;
|
||||
|
||||
|
@ -492,7 +492,7 @@ bool CSbieUtils::HasContextMenu3()
|
|||
const wchar_t* key = L"Software\\Classes\\*\\shell\\addforce\\command";
|
||||
//const wchar_t* key2 = L"Software\\Classes\\*\\Folder\\addforce\\command";
|
||||
HKEY hkey,hKey2;
|
||||
LONG rc = RegOpenKeyEx(HKEY_CURRENT_USER, key, 0, KEY_READ, &hkey);
|
||||
LONG rc = RegOpenKeyExW(HKEY_CURRENT_USER, key, 0, KEY_READ, &hkey);
|
||||
if (rc != 0)
|
||||
return false;
|
||||
|
||||
|
@ -529,7 +529,7 @@ bool CSbieUtils::HasContextMenu4()
|
|||
const wchar_t* key = L"Software\\Classes\\*\\shell\\addopen\\command";
|
||||
//const wchar_t* key2 = L"Software\\Classes\\*\\Folder\\addforce\\command";
|
||||
HKEY hkey, hKey2;
|
||||
LONG rc = RegOpenKeyEx(HKEY_CURRENT_USER, key, 0, KEY_READ, &hkey);
|
||||
LONG rc = RegOpenKeyExW(HKEY_CURRENT_USER, key, 0, KEY_READ, &hkey);
|
||||
if (rc != 0)
|
||||
return false;
|
||||
|
||||
|
@ -583,8 +583,8 @@ bool CSbieUtils::CreateShortcut(const QString& StartExe, QString LinkPath, const
|
|||
if (FAILED(hr))
|
||||
return false;
|
||||
|
||||
IShellLink *pShellLink;
|
||||
hr = pUnknown->QueryInterface(IID_IShellLink, (void **)&pShellLink);
|
||||
IShellLinkW *pShellLink;
|
||||
hr = pUnknown->QueryInterface(IID_IShellLinkW, (void **)&pShellLink);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
pShellLink->SetPath(StartExe.toStdWString().c_str());
|
||||
|
@ -620,8 +620,8 @@ bool CSbieUtils::CreateShortcut(const QString& StartExe, QString LinkPath, const
|
|||
bool CSbieUtils::GetStartMenuShortcut(CSbieAPI* pApi, QString &BoxName, QString &LinkPath, QString &IconPath, quint32& IconIndex, QString &WorkDir)
|
||||
{
|
||||
WCHAR MapName[128];
|
||||
wsprintf(MapName, SANDBOXIE L"_StartMenu_WorkArea_%08X_%08X", GetCurrentProcessId(), GetTickCount());
|
||||
HANDLE hMapping = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, 8192, MapName);
|
||||
wsprintfW(MapName, SANDBOXIE L"_StartMenu_WorkArea_%08X_%08X", GetCurrentProcessId(), GetTickCount());
|
||||
HANDLE hMapping = CreateFileMappingW(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, 8192, MapName);
|
||||
if (!hMapping)
|
||||
return false;
|
||||
|
||||
|
@ -710,13 +710,13 @@ BOOLEAN SelectFavoriteInRegedit(HWND RegeditWindow, std::wstring FavoriteName)
|
|||
|
||||
for (i = 3; i < count; i++) {
|
||||
|
||||
MENUITEMINFO info = { sizeof(MENUITEMINFO) };
|
||||
MENUITEMINFOW info = { sizeof(MENUITEMINFO) };
|
||||
WCHAR buffer[MAX_PATH];
|
||||
|
||||
info.fMask = MIIM_ID | MIIM_STRING;
|
||||
info.dwTypeData = buffer;
|
||||
info.cch = RTL_NUMBER_OF(buffer);
|
||||
GetMenuItemInfo(favoritesMenu, i, TRUE, &info);
|
||||
GetMenuItemInfoW(favoritesMenu, i, TRUE, &info);
|
||||
|
||||
if (info.cch > 0 && _wcsicmp(FavoriteName.c_str(),buffer) == 0) {
|
||||
id = info.wID;
|
||||
|
@ -737,13 +737,13 @@ bool ShellOpenRegKey(const QString& KeyName)
|
|||
{
|
||||
std::wstring keyName = KeyName.toStdWString();
|
||||
|
||||
HWND regeditWindow = FindWindow(L"RegEdit_RegEdit", NULL);
|
||||
HWND regeditWindow = FindWindowW(L"RegEdit_RegEdit", NULL);
|
||||
|
||||
if (!regeditWindow)
|
||||
{
|
||||
RegSetKeyValue(HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Regedit", L"LastKey", REG_SZ, keyName.c_str(), (keyName.size() + 1) * sizeof(WCHAR));
|
||||
RegSetKeyValueW(HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Regedit", L"LastKey", REG_SZ, keyName.c_str(), (keyName.size() + 1) * sizeof(WCHAR));
|
||||
|
||||
SHELLEXECUTEINFO sei = { sizeof(sei) };
|
||||
SHELLEXECUTEINFOW sei = { sizeof(sei) };
|
||||
sei.fMask = 0;
|
||||
sei.lpVerb = NULL;
|
||||
sei.lpFile = L"regedit.exe";
|
||||
|
@ -751,7 +751,7 @@ bool ShellOpenRegKey(const QString& KeyName)
|
|||
sei.hwnd = NULL;
|
||||
sei.nShow = SW_NORMAL;
|
||||
|
||||
ShellExecuteEx(&sei);
|
||||
ShellExecuteExW(&sei);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -761,13 +761,13 @@ bool ShellOpenRegKey(const QString& KeyName)
|
|||
QString FavoriteName = "A_Sandbox_" + QString::number((quint32)rand(), 16);
|
||||
std::wstring favoriteName = FavoriteName.toStdWString();
|
||||
|
||||
RegSetKeyValue(HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Regedit\\Favorites", favoriteName.c_str(), REG_SZ, keyName.c_str(), (keyName.size() + 1) * sizeof(WCHAR));
|
||||
RegSetKeyValueW(HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Regedit\\Favorites", favoriteName.c_str(), REG_SZ, keyName.c_str(), (keyName.size() + 1) * sizeof(WCHAR));
|
||||
|
||||
BOOLEAN result = SelectFavoriteInRegedit(regeditWindow, favoriteName);
|
||||
|
||||
HKEY key;
|
||||
RegOpenKey(HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Regedit\\Favorites", &key);
|
||||
RegDeleteValue(key, favoriteName.c_str());
|
||||
RegOpenKeyW(HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Regedit\\Favorites", &key);
|
||||
RegDeleteValueW(key, favoriteName.c_str());
|
||||
RegCloseKey(key);
|
||||
|
||||
return result;
|
||||
|
|
|
@ -227,9 +227,9 @@ HANDLE openRegKey(const QString& Key, bool bWrite = false)
|
|||
else if (RootPath.first == "HKEY_CURRENT_CONFIG") hRoot = HKEY_CURRENT_CONFIG;
|
||||
|
||||
if (bWrite)
|
||||
RegCreateKeyEx(hRoot, RootPath.second.toStdWString().c_str(), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, (PHKEY)&handle, NULL);
|
||||
RegCreateKeyExW(hRoot, RootPath.second.toStdWString().c_str(), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, (PHKEY)&handle, NULL);
|
||||
else
|
||||
RegOpenKeyEx(hRoot, RootPath.second.toStdWString().c_str(), REG_OPTION_NON_VOLATILE, KEY_READ, (PHKEY)&handle);
|
||||
RegOpenKeyExW(hRoot, RootPath.second.toStdWString().c_str(), REG_OPTION_NON_VOLATILE, KEY_READ, (PHKEY)&handle);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -262,7 +262,7 @@ QJSValue JSysObject::listRegKey(const QString& Key)
|
|||
for (DWORD dwIndex = 0; ; dwIndex++)
|
||||
{
|
||||
dwSubKeyNameSize = ARRAYSIZE(szSubKeyName);
|
||||
if (RegEnumKeyEx((HKEY)handle, dwIndex, szSubKeyName, &dwSubKeyNameSize, NULL, NULL, NULL, &ftLastWriteTime) != ERROR_SUCCESS)
|
||||
if (RegEnumKeyExW((HKEY)handle, dwIndex, szSubKeyName, &dwSubKeyNameSize, NULL, NULL, NULL, &ftLastWriteTime) != ERROR_SUCCESS)
|
||||
break;
|
||||
|
||||
QVariantMap entry;
|
||||
|
@ -283,7 +283,7 @@ QJSValue JSysObject::listRegKey(const QString& Key)
|
|||
{
|
||||
dwValueNameSize = MAX_VALUE_NAME;
|
||||
dwDataSize = MAX_VALUE_DATA;
|
||||
if (RegEnumValue((HKEY)handle, dwIndex, szValueName, &dwValueNameSize, NULL, &dwType, lpData, &dwDataSize) != ERROR_SUCCESS)
|
||||
if (RegEnumValueW((HKEY)handle, dwIndex, szValueName, &dwValueNameSize, NULL, &dwType, lpData, &dwDataSize) != ERROR_SUCCESS)
|
||||
break;
|
||||
|
||||
QVariantMap entry;
|
||||
|
@ -377,7 +377,7 @@ QJSValue JSysObject::setRegValue(const QString& Key, const QString& Name, const
|
|||
//case REG_FULL_RESOURCE_DESCRIPTOR: break;
|
||||
}
|
||||
|
||||
bRet = RegSetKeyValue((HKEY)handle, L"", Name.toStdWString().c_str(), dwType, lpData, dwDataSize);
|
||||
bRet = RegSetKeyValueW((HKEY)handle, L"", Name.toStdWString().c_str(), dwType, lpData, dwDataSize);
|
||||
CloseHandle(handle);
|
||||
}
|
||||
return bRet;
|
||||
|
@ -395,7 +395,7 @@ QJSValue JSysObject::getRegValue(const QString& Key, const QString& Name)
|
|||
BYTE* lpData = Buff.data();
|
||||
DWORD dwDataSize = MAX_VALUE_DATA;
|
||||
|
||||
if (RegQueryValueEx((HKEY)handle, Name.toStdWString().c_str(), 0, &dwType, lpData, &dwDataSize)) {
|
||||
if (RegQueryValueExW((HKEY)handle, Name.toStdWString().c_str(), 0, &dwType, lpData, &dwDataSize)) {
|
||||
switch (dwType)
|
||||
{
|
||||
case REG_SZ: value = QString::fromStdWString((wchar_t*)lpData); break;
|
||||
|
@ -435,7 +435,7 @@ QJSValue JSysObject::removeRegValue(const QString& Key, const QString& Name)
|
|||
HANDLE handle = openRegKey(Key, true);
|
||||
if (handle && handle != INVALID_HANDLE_VALUE)
|
||||
{
|
||||
RegDeleteValue((HKEY)handle, Name.toStdWString().c_str());
|
||||
RegDeleteValueW((HKEY)handle, Name.toStdWString().c_str());
|
||||
CloseHandle(handle);
|
||||
}
|
||||
return QJSValue();
|
||||
|
@ -463,7 +463,7 @@ QJSValue JSysObject::execute(const QString& Path, const QVariant& Arguments, con
|
|||
|
||||
if (Options["elevate"].toBool())
|
||||
{
|
||||
SHELLEXECUTEINFO shex;
|
||||
SHELLEXECUTEINFOW shex;
|
||||
memset(&shex, 0, sizeof(SHELLEXECUTEINFO));
|
||||
shex.cbSize = sizeof(SHELLEXECUTEINFO);
|
||||
shex.fMask = SEE_MASK_NOCLOSEPROCESS;
|
||||
|
@ -476,7 +476,7 @@ QJSValue JSysObject::execute(const QString& Path, const QVariant& Arguments, con
|
|||
shex.nShow = nShow;
|
||||
shex.lpVerb = L"runas";
|
||||
|
||||
if (ShellExecuteEx(&shex)) {
|
||||
if (ShellExecuteExW(&shex)) {
|
||||
hProcess = shex.hProcess;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -167,10 +167,10 @@ void FlashWindowBorder(HWND hwnd, BOOL fShowHidden)
|
|||
|
||||
void LoadFinderResources()
|
||||
{
|
||||
hBitmapDrag1 = LoadBitmap(GetModuleHandle(0), L"FINDER_FULL");
|
||||
hBitmapDrag2 = LoadBitmap(GetModuleHandle(0), L"FINDER_EMPTY");
|
||||
hBitmapDrag1 = LoadBitmapW(GetModuleHandle(0), L"FINDER_FULL");
|
||||
hBitmapDrag2 = LoadBitmapW(GetModuleHandle(0), L"FINDER_EMPTY");
|
||||
|
||||
hCursor = LoadCursor(GetModuleHandle(0), L"FINDER_CURSOR");
|
||||
hCursor = LoadCursorW(GetModuleHandle(0), L"FINDER_CURSOR");
|
||||
}
|
||||
|
||||
void FreeFinderResources()
|
||||
|
|
|
@ -23,7 +23,7 @@ static bool IsPlatformFullScreenMode()
|
|||
typedef HRESULT(WINAPI* SHQueryUserNotificationStatePtr)(
|
||||
QUERY_USER_NOTIFICATION_STATE* state);
|
||||
|
||||
HMODULE shell32_base = ::GetModuleHandle(L"shell32.dll");
|
||||
HMODULE shell32_base = ::GetModuleHandleW(L"shell32.dll");
|
||||
if (!shell32_base) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -76,7 +76,7 @@ void CReadDirectoryChanges::Terminate()
|
|||
}
|
||||
}
|
||||
|
||||
void CReadDirectoryChanges::AddDirectory( LPCTSTR szDirectory, BOOL bWatchSubtree, DWORD dwNotifyFilter, DWORD dwBufferSize )
|
||||
void CReadDirectoryChanges::AddDirectory(LPCWSTR szDirectory, BOOL bWatchSubtree, DWORD dwNotifyFilter, DWORD dwBufferSize )
|
||||
{
|
||||
if (!m_hThread)
|
||||
Init();
|
||||
|
@ -85,7 +85,7 @@ void CReadDirectoryChanges::AddDirectory( LPCTSTR szDirectory, BOOL bWatchSubtre
|
|||
QueueUserAPC(CReadChangesServer::AddDirectoryProc, m_hThread, (ULONG_PTR)pRequest);
|
||||
}
|
||||
|
||||
void CReadDirectoryChanges::DetachDirectory( LPCTSTR szDirectory )
|
||||
void CReadDirectoryChanges::DetachDirectory(LPCWSTR szDirectory )
|
||||
{
|
||||
if (!m_hThread)
|
||||
Init();
|
||||
|
|
|
@ -115,9 +115,9 @@ public:
|
|||
/// ReadDirectoryChangesW call for the given directory with the given flags.
|
||||
/// </para>
|
||||
/// </remarks>
|
||||
void AddDirectory( LPCTSTR wszDirectory, BOOL bWatchSubtree, DWORD dwNotifyFilter, DWORD dwBufferSize=16384 );
|
||||
void AddDirectory( LPCWSTR wszDirectory, BOOL bWatchSubtree, DWORD dwNotifyFilter, DWORD dwBufferSize=16384 );
|
||||
|
||||
void DetachDirectory( LPCTSTR wszDirectory );
|
||||
void DetachDirectory( LPCWSTR wszDirectory );
|
||||
|
||||
virtual void Notify( const std::wstring& strDirectory ) {}
|
||||
|
||||
|
|
|
@ -41,7 +41,7 @@ namespace ReadDirectoryChangesPrivate
|
|||
///////////////////////////////////////////////////////////////////////////
|
||||
// CReadChangesRequest
|
||||
|
||||
CReadChangesRequest::CReadChangesRequest(CReadChangesServer* pServer, LPCTSTR sz, BOOL b, DWORD dw, DWORD size)
|
||||
CReadChangesRequest::CReadChangesRequest(CReadChangesServer* pServer, LPCWSTR sz, BOOL b, DWORD dw, DWORD size)
|
||||
{
|
||||
m_pServer = pServer;
|
||||
m_dwFilterFlags = dw;
|
||||
|
|
|
@ -40,7 +40,7 @@ class CReadChangesServer;
|
|||
class CReadChangesRequest
|
||||
{
|
||||
public:
|
||||
CReadChangesRequest(CReadChangesServer* pServer, LPCTSTR sz, BOOL b, DWORD dw, DWORD size);
|
||||
CReadChangesRequest(CReadChangesServer* pServer, LPCWSTR sz, BOOL b, DWORD dw, DWORD size);
|
||||
|
||||
~CReadChangesRequest();
|
||||
|
||||
|
|
|
@ -137,7 +137,7 @@ bool GetVolumeInfo(wchar_t* w32_name, SVolumeInfo* info)
|
|||
PVOLUME_DISK_EXTENTS ext = (PVOLUME_DISK_EXTENTS)buff;
|
||||
DWORD dwBytes;
|
||||
|
||||
hVolume = CreateFile(w32_name, SYNCHRONIZE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
|
||||
hVolume = CreateFileW(w32_name, SYNCHRONIZE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
|
||||
if (hVolume == INVALID_HANDLE_VALUE)
|
||||
return false;
|
||||
|
||||
|
@ -186,7 +186,7 @@ std::list<SVolumeInfo> ListAllVolumes()
|
|||
std::list<SVolumeInfo> volumes;
|
||||
|
||||
wchar_t volumeName[MAX_PATH + 1];
|
||||
HANDLE hFindVolume = FindFirstVolume(volumeName, MAX_PATH + 1);
|
||||
HANDLE hFindVolume = FindFirstVolumeW(volumeName, MAX_PATH + 1);
|
||||
if (hFindVolume == INVALID_HANDLE_VALUE)
|
||||
return volumes;
|
||||
|
||||
|
@ -198,12 +198,12 @@ std::list<SVolumeInfo> ListAllVolumes()
|
|||
DWORD dwRetLen = 0;
|
||||
wchar_t mountPoints[0x1000];
|
||||
//QueryDosDevice(&volumeName[4], driveLetter, MAX_PATH + 1);
|
||||
if (GetVolumePathNamesForVolumeName(volumeName, mountPoints, ARRAYSIZE(mountPoints), &dwRetLen)) {
|
||||
if (GetVolumePathNamesForVolumeNameW(volumeName, mountPoints, ARRAYSIZE(mountPoints), &dwRetLen)) {
|
||||
for (wchar_t* mountPoint = mountPoints; *mountPoint; mountPoint += wcslen(mountPoint) + 1)
|
||||
info.mountPoints.push_back(mountPoint);
|
||||
}
|
||||
|
||||
volumeName[wcslen(volumeName) - 1] = 0; // strip trailing L'\\'
|
||||
volumeName[wcslen(volumeName) - 1] = 0; // strip tailing L'\\'
|
||||
|
||||
info.deviceName = QueryLinkTarget(volumeName);
|
||||
|
||||
|
@ -212,7 +212,7 @@ std::list<SVolumeInfo> ListAllVolumes()
|
|||
|
||||
volumes.push_back(info);
|
||||
|
||||
} while (FindNextVolume(hFindVolume, volumeName, MAX_PATH + 1));
|
||||
} while (FindNextVolumeW(hFindVolume, volumeName, MAX_PATH + 1));
|
||||
|
||||
FindVolumeClose(hFindVolume);
|
||||
|
||||
|
@ -228,19 +228,19 @@ std::wstring QueryDiskDeviceInterfaceString(PWSTR DeviceInterface, CONST DEVPROP
|
|||
ULONG deviceInstanceIdLength = MAX_DEVICE_ID_LEN;
|
||||
WCHAR deviceInstanceId[MAX_DEVICE_ID_LEN + 1] = L"";
|
||||
|
||||
if (CM_Get_Device_Interface_Property(DeviceInterface, &DEVPKEY_Device_InstanceId, &devicePropertyType, (PBYTE)deviceInstanceId, &deviceInstanceIdLength, 0 ) != CR_SUCCESS)
|
||||
if (CM_Get_Device_Interface_PropertyW(DeviceInterface, &DEVPKEY_Device_InstanceId, &devicePropertyType, (PBYTE)deviceInstanceId, &deviceInstanceIdLength, 0 ) != CR_SUCCESS)
|
||||
return L"";
|
||||
|
||||
if (CM_Locate_DevNode(&deviceInstanceHandle, deviceInstanceId, CM_LOCATE_DEVNODE_PHANTOM ) != CR_SUCCESS)
|
||||
if (CM_Locate_DevNodeW(&deviceInstanceHandle, deviceInstanceId, CM_LOCATE_DEVNODE_PHANTOM ) != CR_SUCCESS)
|
||||
return L"";
|
||||
|
||||
bufferSize = 0x40;
|
||||
std::wstring deviceDescription;
|
||||
deviceDescription.resize(bufferSize);
|
||||
|
||||
if ((result = CM_Get_DevNode_Property(deviceInstanceHandle, PropertyKey, &devicePropertyType, (PBYTE)deviceDescription.c_str(), &bufferSize, 0 )) != CR_SUCCESS) {
|
||||
if ((result = CM_Get_DevNode_PropertyW(deviceInstanceHandle, PropertyKey, &devicePropertyType, (PBYTE)deviceDescription.c_str(), &bufferSize, 0 )) != CR_SUCCESS) {
|
||||
deviceDescription.resize(bufferSize);
|
||||
result = CM_Get_DevNode_Property(deviceInstanceHandle, PropertyKey, &devicePropertyType, (PBYTE)deviceDescription.c_str(), &bufferSize, 0 );
|
||||
result = CM_Get_DevNode_PropertyW(deviceInstanceHandle, PropertyKey, &devicePropertyType, (PBYTE)deviceDescription.c_str(), &bufferSize, 0 );
|
||||
}
|
||||
|
||||
return deviceDescription.c_str(); // truncate
|
||||
|
@ -273,7 +273,7 @@ std::map<std::wstring, SDriveInfo> ListAllDrives()
|
|||
|
||||
deviceInterfaceList = (PWSTR)malloc(deviceInterfaceListLength * sizeof(WCHAR));
|
||||
memset(deviceInterfaceList, 0, deviceInterfaceListLength * sizeof(WCHAR));
|
||||
if (CM_Get_Device_Interface_List(pdevice->guid, NULL, deviceInterfaceList, deviceInterfaceListLength, CM_GET_DEVICE_INTERFACE_LIST_PRESENT) != CR_SUCCESS) {
|
||||
if (CM_Get_Device_Interface_ListW(pdevice->guid, NULL, deviceInterfaceList, deviceInterfaceListLength, CM_GET_DEVICE_INTERFACE_LIST_PRESENT) != CR_SUCCESS) {
|
||||
free(deviceInterfaceList);
|
||||
return drives;
|
||||
}
|
||||
|
@ -281,7 +281,7 @@ std::map<std::wstring, SDriveInfo> ListAllDrives()
|
|||
for (deviceInterface = deviceInterfaceList; *deviceInterface; deviceInterface += wcslen(deviceInterface) + 1)
|
||||
{
|
||||
|
||||
HANDLE deviceHandle = CreateFile(deviceInterface, FILE_READ_ATTRIBUTES | SYNCHRONIZE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
|
||||
HANDLE deviceHandle = CreateFileW(deviceInterface, FILE_READ_ATTRIBUTES | SYNCHRONIZE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
|
||||
if (deviceHandle != INVALID_HANDLE_VALUE)
|
||||
{
|
||||
STORAGE_DEVICE_NUMBER result;
|
||||
|
|
|
@ -25,14 +25,14 @@ int RunElevated(const std::wstring& Params, bool bGetCode)
|
|||
{
|
||||
// Launch itself as admin
|
||||
wchar_t szPath[MAX_PATH];
|
||||
if (!GetModuleFileName(NULL, szPath, ARRAYSIZE(szPath)))
|
||||
if (!GetModuleFileNameW(NULL, szPath, ARRAYSIZE(szPath)))
|
||||
return -104;
|
||||
return RunElevated(std::wstring(szPath), Params, bGetCode ? 10000 : 0);
|
||||
}
|
||||
|
||||
int RunElevated(const std::wstring& binaryPath, const std::wstring& Params, quint32 uTimeOut)
|
||||
{
|
||||
SHELLEXECUTEINFO sei = { sizeof(sei) };
|
||||
SHELLEXECUTEINFOW sei = { sizeof(sei) };
|
||||
sei.fMask = SEE_MASK_NOCLOSEPROCESS;
|
||||
sei.lpVerb = L"runas";
|
||||
sei.lpFile = binaryPath.c_str();
|
||||
|
@ -40,7 +40,7 @@ int RunElevated(const std::wstring& binaryPath, const std::wstring& Params, quin
|
|||
sei.hwnd = NULL;
|
||||
sei.nShow = SW_NORMAL;
|
||||
|
||||
if (!ShellExecuteEx(&sei))
|
||||
if (!ShellExecuteExW(&sei))
|
||||
{
|
||||
DWORD dwError = GetLastError();
|
||||
if (dwError == ERROR_CANCELLED)
|
||||
|
@ -115,17 +115,17 @@ bool IsAutorunEnabled()
|
|||
bool result = false;
|
||||
|
||||
HKEY hkey = nullptr;
|
||||
if (ERROR_SUCCESS == RegOpenKeyEx (HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_ALL_ACCESS, &hkey))
|
||||
if (ERROR_SUCCESS == RegOpenKeyExW(HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_ALL_ACCESS, &hkey))
|
||||
{
|
||||
// First, determine the required buffer size, including NUL terminator (in bytes). RegGetValue() always adds
|
||||
// an extra NUL terminator to size, even if one already exists, in case the stored value doesn't have one.
|
||||
DWORD size {0};
|
||||
if (ERROR_SUCCESS == RegGetValue(hkey, nullptr, AUTO_RUN_KEY_NAME, RRF_RT_REG_SZ, nullptr, nullptr, &size))
|
||||
if (ERROR_SUCCESS == RegGetValueW(hkey, nullptr, AUTO_RUN_KEY_NAME, RRF_RT_REG_SZ, nullptr, nullptr, &size))
|
||||
{
|
||||
// Then, allocate the buffer (in WCHARs) and retrieve the auto-run value. If successful, the size
|
||||
// variable will be set to the actual size, without the extra NUL terminator.
|
||||
auto buffer = std::make_unique< WCHAR[] >(size / sizeof(WCHAR));
|
||||
if (ERROR_SUCCESS == RegGetValue(hkey, nullptr, AUTO_RUN_KEY_NAME, RRF_RT_REG_SZ, nullptr, reinterpret_cast<LPBYTE>(buffer.get()), &size))
|
||||
if (ERROR_SUCCESS == RegGetValueW(hkey, nullptr, AUTO_RUN_KEY_NAME, RRF_RT_REG_SZ, nullptr, reinterpret_cast<LPBYTE>(buffer.get()), &size))
|
||||
{
|
||||
result = true; // todo: check path
|
||||
}
|
||||
|
@ -142,22 +142,22 @@ bool AutorunEnable (bool is_enable)
|
|||
bool result = false;
|
||||
|
||||
HKEY hkey = nullptr;
|
||||
if (ERROR_SUCCESS == RegOpenKeyEx (HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_ALL_ACCESS, &hkey))
|
||||
if (ERROR_SUCCESS == RegOpenKeyExW(HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_ALL_ACCESS, &hkey))
|
||||
{
|
||||
if (is_enable)
|
||||
{
|
||||
constexpr size_t MAX_PATH_EX = 32767; // Long file path max length, in characters
|
||||
auto szPath = std::make_unique< WCHAR[] >(MAX_PATH_EX);
|
||||
if (GetModuleFileName(NULL, szPath.get(), MAX_PATH_EX))
|
||||
if (GetModuleFileNameW(NULL, szPath.get(), MAX_PATH_EX))
|
||||
{
|
||||
const std::wstring path = L"\"" + std::wstring(szPath.get()) + L"\" -autorun";
|
||||
|
||||
result = (ERROR_SUCCESS == RegSetValueEx(hkey, AUTO_RUN_KEY_NAME, 0, REG_SZ, reinterpret_cast<const BYTE*>(path.c_str()), static_cast<DWORD>((path.length() + 1) * sizeof(WCHAR))));
|
||||
result = (ERROR_SUCCESS == RegSetValueExW(hkey, AUTO_RUN_KEY_NAME, 0, REG_SZ, reinterpret_cast<const BYTE*>(path.c_str()), static_cast<DWORD>((path.length() + 1) * sizeof(WCHAR))));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
result = (ERROR_SUCCESS == RegDeleteValue (hkey, AUTO_RUN_KEY_NAME));
|
||||
result = (ERROR_SUCCESS == RegDeleteValueW(hkey, AUTO_RUN_KEY_NAME));
|
||||
}
|
||||
|
||||
RegCloseKey (hkey);
|
||||
|
@ -231,7 +231,7 @@ bool SkipUacEnable (bool is_enable)
|
|||
IRegisteredTask* registered_task = nullptr;
|
||||
|
||||
wchar_t szPath[MAX_PATH];
|
||||
if (!GetModuleFileName(NULL, szPath, ARRAYSIZE(szPath)))
|
||||
if (!GetModuleFileNameW(NULL, szPath, ARRAYSIZE(szPath)))
|
||||
return false;
|
||||
std::wstring::size_type pos = std::wstring(szPath).find_last_of( L"\\/" );
|
||||
std::wstring dir = std::wstring(szPath).substr(0, pos);
|
||||
|
@ -372,7 +372,7 @@ bool SkipUacRun (bool test_only)
|
|||
IRunningTask* running_task = nullptr;
|
||||
|
||||
wchar_t szPath[MAX_PATH];
|
||||
if (!GetModuleFileName(NULL, szPath, ARRAYSIZE(szPath)))
|
||||
if (!GetModuleFileNameW(NULL, szPath, ARRAYSIZE(szPath)))
|
||||
return false;
|
||||
|
||||
MBSTR root (L"\\");
|
||||
|
@ -404,7 +404,7 @@ bool SkipUacRun (bool test_only)
|
|||
|
||||
exec_action->get_Path (&path);
|
||||
|
||||
PathUnquoteSpaces (path);
|
||||
PathUnquoteSpacesW(path);
|
||||
|
||||
// check path is to current module
|
||||
if (_wcsicmp (path, szPath) == 0)
|
||||
|
@ -420,7 +420,7 @@ bool SkipUacRun (bool test_only)
|
|||
// get arguments
|
||||
{
|
||||
INT numargs = 0;
|
||||
LPWSTR* arga = CommandLineToArgvW(GetCommandLine(), &numargs);
|
||||
LPWSTR* arga = CommandLineToArgvW(GetCommandLineW(), &numargs);
|
||||
|
||||
for (INT i = 1; i < numargs; i++) {
|
||||
if (i > 1)
|
||||
|
|
|
@ -16,13 +16,13 @@ QVariantMap ResolveShortcut(const QString& LinkPath)
|
|||
QVariantMap Link;
|
||||
|
||||
HRESULT hRes = E_FAIL;
|
||||
IShellLink* psl = NULL;
|
||||
IShellLinkW* psl = NULL;
|
||||
|
||||
// buffer that receives the null-terminated string
|
||||
// for the drive and path
|
||||
TCHAR szPath[0x1000];
|
||||
WCHAR szPath[0x1000];
|
||||
// structure that receives the information about the shortcut
|
||||
WIN32_FIND_DATA wfd;
|
||||
WIN32_FIND_DATAW wfd;
|
||||
|
||||
// Get a pointer to the IShellLink interface
|
||||
hRes = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (void**)&psl);
|
||||
|
@ -138,13 +138,13 @@ QString GetProductVersion(const QString &filePath)
|
|||
DWORD verHandle = 0;
|
||||
UINT size = 0;
|
||||
LPBYTE lpBuffer = NULL;
|
||||
DWORD verSize = GetFileVersionInfoSize(filePath.toStdWString().c_str(), &verHandle);
|
||||
DWORD verSize = GetFileVersionInfoSizeW(filePath.toStdWString().c_str(), &verHandle);
|
||||
|
||||
if (verSize != NULL) {
|
||||
LPSTR verData = new char[verSize];
|
||||
|
||||
if (GetFileVersionInfo(filePath.toStdWString().c_str(), verHandle, verSize, verData)) {
|
||||
if (VerQueryValue(verData, L"\\", (VOID FAR* FAR*)&lpBuffer, &size)) {
|
||||
if (GetFileVersionInfoW(filePath.toStdWString().c_str(), verHandle, verSize, verData)) {
|
||||
if (VerQueryValueW(verData, L"\\", (VOID FAR* FAR*)&lpBuffer, &size)) {
|
||||
if (size) {
|
||||
VS_FIXEDFILEINFO *verInfo = (VS_FIXEDFILEINFO *)lpBuffer;
|
||||
if (verInfo->dwSignature == 0xfeef04bd) {
|
||||
|
@ -169,4 +169,27 @@ QString GetProductVersion(const QString &filePath)
|
|||
}
|
||||
}
|
||||
return QString();
|
||||
}
|
||||
|
||||
bool KillProcessById(DWORD processId)
|
||||
{
|
||||
bool ok = false;
|
||||
HANDLE hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, processId);
|
||||
if (hProcess && hProcess != INVALID_HANDLE_VALUE) {
|
||||
if (TerminateProcess(hProcess, 0))
|
||||
ok = true;
|
||||
CloseHandle(hProcess);
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
||||
bool KillProcessByWnd(const QString& WndName)
|
||||
{
|
||||
HWND hwnd = FindWindowW(WndName.toStdWString().c_str(), 0);
|
||||
if (hwnd) {
|
||||
DWORD processId;
|
||||
if (GetWindowThreadProcessId(hwnd, &processId))
|
||||
return KillProcessById(processId);
|
||||
}
|
||||
return false;
|
||||
}
|
|
@ -450,12 +450,12 @@ void CSandMan::CreateMaintenanceMenu()
|
|||
if (QFile::exists(ImDiskCpl)) {
|
||||
m_pImDiskCpl = m_pMaintenance->addAction(LoadWindowsIcon(ImDiskCpl, 0), tr("Virtual Disks"), this, [ImDiskCpl]() {
|
||||
std::wstring imDiskCpl = ImDiskCpl.toStdWString();
|
||||
SHELLEXECUTEINFO si = { 0 };
|
||||
SHELLEXECUTEINFOW si = { 0 };
|
||||
si.cbSize = sizeof(SHELLEXECUTEINFO);
|
||||
si.lpVerb = L"runas";
|
||||
si.lpFile = imDiskCpl.c_str();
|
||||
si.nShow = SW_SHOW;
|
||||
ShellExecuteEx(&si);
|
||||
ShellExecuteExW(&si);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -3858,7 +3858,7 @@ void CSandMan::EditIni(const QString& IniPath, bool bPlus)
|
|||
std::wstring Editor = theConf->GetString("Options/Editor", "notepad.exe").toStdWString();
|
||||
std::wstring iniPath = L"\"" + IniPath.toStdWString() + L"\"";
|
||||
|
||||
SHELLEXECUTEINFO si = { 0 };
|
||||
SHELLEXECUTEINFOW si = { 0 };
|
||||
si.cbSize = sizeof(SHELLEXECUTEINFO);
|
||||
si.fMask = SEE_MASK_NOCLOSEPROCESS;
|
||||
si.hwnd = NULL;
|
||||
|
@ -3868,7 +3868,7 @@ void CSandMan::EditIni(const QString& IniPath, bool bPlus)
|
|||
si.lpDirectory = NULL;
|
||||
si.nShow = SW_SHOW;
|
||||
si.hInstApp = NULL;
|
||||
ShellExecuteEx(&si);
|
||||
ShellExecuteExW(&si);
|
||||
//WaitForSingleObject(si.hProcess, INFINITE);
|
||||
//CloseHandle(si.hProcess);
|
||||
|
||||
|
@ -4178,7 +4178,7 @@ void CSandMan::OpenUrl(const QUrl& url)
|
|||
}
|
||||
|
||||
if (iSandboxed) RunSandboxed(QStringList(url.toString()));
|
||||
else ShellExecute(MainWndHandle, NULL, url.toString().toStdWString().c_str(), NULL, NULL, SW_SHOWNORMAL);
|
||||
else ShellExecuteW(MainWndHandle, NULL, url.toString().toStdWString().c_str(), NULL, NULL, SW_SHOWNORMAL);
|
||||
}
|
||||
|
||||
bool CSandMan::IsWFPEnabled() const
|
||||
|
@ -4267,7 +4267,7 @@ void CSandMan::SetTitleTheme(const HWND& hwnd)
|
|||
if (CurrentVersion < 17763) // Windows 10 1809 -
|
||||
return;
|
||||
|
||||
HMODULE dwmapi = GetModuleHandle(L"dwmapi.dll");
|
||||
HMODULE dwmapi = GetModuleHandleW(L"dwmapi.dll");
|
||||
if (dwmapi)
|
||||
{
|
||||
typedef HRESULT(WINAPI* P_DwmSetWindowAttribute)(HWND, DWORD, LPCVOID, DWORD);
|
||||
|
@ -4499,7 +4499,7 @@ int g_CertAmount = 0;
|
|||
void SlotSend(const std::wstring& message)
|
||||
{
|
||||
std::wstring strSlotName = L"\\\\*\\mailslot\\" + g_SlotName;
|
||||
HANDLE hSlot = CreateFile(strSlotName.c_str(),
|
||||
HANDLE hSlot = CreateFileW(strSlotName.c_str(),
|
||||
GENERIC_WRITE,
|
||||
FILE_SHARE_READ,
|
||||
(LPSECURITY_ATTRIBUTES) NULL,
|
||||
|
@ -4545,7 +4545,7 @@ int CountSeats()
|
|||
DWORD WINAPI MailThreadFunc(LPVOID lpParam)
|
||||
{
|
||||
std::wstring strSlotName = L"\\\\.\\mailslot\\" + g_SlotName;
|
||||
HANDLE hSlot = CreateMailslot(strSlotName.c_str(),
|
||||
HANDLE hSlot = CreateMailslotW(strSlotName.c_str(),
|
||||
0, // no maximum message size
|
||||
MAILSLOT_WAIT_FOREVER, // no time-out for operations
|
||||
(LPSECURITY_ATTRIBUTES) NULL); // default security
|
||||
|
|
|
@ -251,10 +251,10 @@ void CSandMan::RecoverFilesAsync(QPair<const CSbieProgressPtr&,QWidget*> pParam,
|
|||
switch (Action)
|
||||
{
|
||||
case 1: // open
|
||||
ShellExecute(NULL, NULL, path.c_str(), NULL, NULL, SW_SHOWNORMAL);
|
||||
ShellExecuteW(NULL, NULL, path.c_str(), NULL, NULL, SW_SHOWNORMAL);
|
||||
break;
|
||||
case 2: // explore
|
||||
ShellExecute(NULL, NULL, L"explorer.exe", (L"/select,\"" + path + L"\"").c_str(), NULL, SW_SHOWNORMAL);
|
||||
ShellExecuteW(NULL, NULL, L"explorer.exe", (L"/select,\"" + path + L"\"").c_str(), NULL, SW_SHOWNORMAL);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -350,7 +350,7 @@ void CRecoveryLogWnd::closeEvent(QCloseEvent *e)
|
|||
|
||||
void CRecoveryLogWnd::OnDblClick(QTreeWidgetItem* pItem)
|
||||
{
|
||||
ShellExecute(NULL, NULL, L"explorer.exe", (L"/select,\"" + pItem->text(2).toStdWString() + L"\"").c_str(), NULL, SW_SHOWNORMAL);
|
||||
ShellExecuteW(NULL, NULL, L"explorer.exe", (L"/select,\"" + pItem->text(2).toStdWString() + L"\"").c_str(), NULL, SW_SHOWNORMAL);
|
||||
}
|
||||
|
||||
void CSandMan::OnRecoveryLog()
|
||||
|
|
|
@ -31,7 +31,7 @@ typedef HRESULT (CALLBACK *P_GetScaleFactorForMonitor)(HMONITOR, DEVICE_SCALE_FA
|
|||
|
||||
UINT GetMonitorScaling(HWND hwnd)
|
||||
{
|
||||
static HINSTANCE shcore = LoadLibrary(L"Shcore.dll");
|
||||
static HINSTANCE shcore = LoadLibraryW(L"Shcore.dll");
|
||||
if (shcore != nullptr)
|
||||
{
|
||||
if (auto getScaleFactorForMonitor =
|
||||
|
@ -87,14 +87,14 @@ UINT CALLBACK FindProc(HWND hwndTool, UINT uCode, HWND hwnd)
|
|||
{
|
||||
std::wstring result = CSandMan::tr("The selected window is running as part of program %1 in sandbox %2").arg(pProcess->GetProcessName()).arg(pProcess->GetBoxName()).toStdWString();
|
||||
|
||||
SetWindowText(GetDlgItem(hwndTool, ID_FINDER_RESULT), result.c_str());
|
||||
SetWindowTextW(GetDlgItem(hwndTool, ID_FINDER_RESULT), result.c_str());
|
||||
//::ShowWindow(GetDlgItem(hwndTool, ID_FINDER_YES_BOXED), SW_SHOW);
|
||||
}
|
||||
else
|
||||
{
|
||||
std::wstring result = CSandMan::tr("The selected window is not running as part of any sandboxed program.").toStdWString();
|
||||
|
||||
SetWindowText(GetDlgItem(hwndTool, ID_FINDER_RESULT), result.c_str());
|
||||
SetWindowTextW(GetDlgItem(hwndTool, ID_FINDER_RESULT), result.c_str());
|
||||
//::ShowWindow(GetDlgItem(hwndTool, ID_FINDER_NOT_BOXED), SW_SHOW);
|
||||
}
|
||||
::ShowWindow(GetDlgItem(hwndTool, ID_FINDER_RESULT), SW_SHOW);
|
||||
|
@ -133,9 +133,9 @@ LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
std::wstring info = CSandMan::tr("Drag the Finder Tool over a window to select it, then release the mouse to check if the window is sandboxed.").toStdWString();
|
||||
|
||||
CreateWindow(L"Static", L"", SS_BITMAP | SS_NOTIFY | WS_VISIBLE | WS_CHILD, DS(10), DS(10), DS(32), DS(32), hwnd, (HMENU)ID_FINDER_TARGET, NULL, NULL);
|
||||
CreateWindow(L"Static", info.c_str(), WS_VISIBLE | WS_CHILD, DS(60), DS(10), DS(180), DS(85), hwnd, (HMENU)ID_FINDER_EXPLAIN, NULL, NULL);
|
||||
CreateWindow(L"Static", L"", WS_CHILD, DS(60), DS(100), DS(180), DS(50), hwnd, (HMENU)ID_FINDER_RESULT, NULL, NULL);
|
||||
CreateWindowW(L"Static", L"", SS_BITMAP | SS_NOTIFY | WS_VISIBLE | WS_CHILD, DS(10), DS(10), DS(32), DS(32), hwnd, (HMENU)ID_FINDER_TARGET, NULL, NULL);
|
||||
CreateWindowW(L"Static", info.c_str(), WS_VISIBLE | WS_CHILD, DS(60), DS(10), DS(180), DS(85), hwnd, (HMENU)ID_FINDER_EXPLAIN, NULL, NULL);
|
||||
CreateWindowW(L"Static", L"", WS_CHILD, DS(60), DS(100), DS(180), DS(50), hwnd, (HMENU)ID_FINDER_RESULT, NULL, NULL);
|
||||
|
||||
WndData.hFont = CreateFont(DS(13), 0, 0, 0, FW_DONTCARE, FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, TEXT("Tahoma"));
|
||||
if (WndData.hFont) {
|
||||
|
@ -164,14 +164,14 @@ LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
|||
DWORD WINAPI FinderThreadFunc(LPVOID lpParam)
|
||||
{
|
||||
MSG msg;
|
||||
WNDCLASS mainWindowClass = { 0 };
|
||||
WNDCLASSW mainWindowClass = { 0 };
|
||||
|
||||
HINSTANCE hInstance = NULL;
|
||||
|
||||
// You can set the main window name to anything, but
|
||||
// typically you should prefix custom window classes
|
||||
// with something that makes it unique.
|
||||
mainWindowClass.lpszClassName = TEXT("SBp.WndFinder");
|
||||
mainWindowClass.lpszClassName = L"SBp.WndFinder";
|
||||
|
||||
mainWindowClass.hInstance = hInstance;
|
||||
mainWindowClass.hbrBackground = GetSysColorBrush(COLOR_3DFACE);
|
||||
|
@ -180,7 +180,7 @@ DWORD WINAPI FinderThreadFunc(LPVOID lpParam)
|
|||
|
||||
mainWindowClass.cbWndExtra = sizeof(void*); // SFinderWndData
|
||||
|
||||
RegisterClass(&mainWindowClass);
|
||||
RegisterClassW(&mainWindowClass);
|
||||
|
||||
// Notes:
|
||||
// - The classname identifies the TYPE of the window. Not a C type.
|
||||
|
@ -201,7 +201,7 @@ DWORD WINAPI FinderThreadFunc(LPVOID lpParam)
|
|||
SFinderWndData WndData;
|
||||
WndData.Scale = GetMonitorScaling(MainWndHandle);
|
||||
|
||||
HWND hwnd = CreateWindow(mainWindowClass.lpszClassName, CSandMan::tr("Sandboxie-Plus - Window Finder").toStdWString().c_str()
|
||||
HWND hwnd = CreateWindowW(mainWindowClass.lpszClassName, CSandMan::tr("Sandboxie-Plus - Window Finder").toStdWString().c_str()
|
||||
, WS_SYSMENU | WS_CAPTION | WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, DS(275), DS(135), NULL, 0, hInstance, &WndData);
|
||||
|
||||
while (GetMessage(&msg, NULL, 0, 0))
|
||||
|
|
|
@ -46,17 +46,17 @@ CBoxedProcessPtr CSbiePlusAPI::OnProcessBoxed(quint32 ProcessId, const QString&
|
|||
|
||||
std::wstring GetWindowTextTimeout(HWND hWnd, UINT timeout)
|
||||
{
|
||||
int length = 0;
|
||||
unsigned long long length = 0;
|
||||
|
||||
if (SendMessageTimeoutW(hWnd, WM_GETTEXTLENGTH, 0, 0, SMTO_ABORTIFHUNG, timeout, reinterpret_cast<PDWORD_PTR>(&length)) == 0)
|
||||
if (SendMessageTimeoutW(hWnd, WM_GETTEXTLENGTH, 0, 0, SMTO_ABORTIFHUNG, timeout, &length) == 0)
|
||||
return L"";
|
||||
if (length == 0)
|
||||
return L"";
|
||||
|
||||
std::vector<wchar_t> buffer(length + 1);
|
||||
if (SendMessageTimeoutW(hWnd, WM_GETTEXT, length + 1, reinterpret_cast<LPARAM>(buffer.data()), SMTO_ABORTIFHUNG, timeout, nullptr) == 0)
|
||||
if (SendMessageTimeoutW(hWnd, WM_GETTEXT, length + 1, reinterpret_cast<LPARAM>(buffer.data()), SMTO_ABORTIFHUNG, timeout, &length) == 0)
|
||||
return L"";
|
||||
return std::wstring(buffer.data());
|
||||
return std::wstring(buffer.data(), length);
|
||||
}
|
||||
|
||||
BOOL CALLBACK CSbiePlusAPI__WindowEnum(HWND hwnd, LPARAM lParam)
|
||||
|
@ -239,7 +239,7 @@ void CSandBoxPlus::ExportBoxAsync(const CSbieProgressPtr& pProgress, const QStri
|
|||
{
|
||||
QString FileName = (RootName.first.isEmpty() ? RootPath + "\\" : RootName.first) + RootName.second;
|
||||
Files.insert(ArcIndex, new QFileX(FileName, pProgress, &Archive));
|
||||
Attributes.insert(ArcIndex, GetFileAttributes(QString(FileName).replace("/", "\\").toStdWString().c_str()));
|
||||
Attributes.insert(ArcIndex, GetFileAttributesW(QString(FileName).replace("/", "\\").toStdWString().c_str()));
|
||||
}
|
||||
//else
|
||||
// this file is already present in the archive, this should not happen !!!
|
||||
|
@ -507,7 +507,7 @@ void CSandBoxPlus::ScanStartMenu()
|
|||
for (int i = 0; i < ARRAYSIZE(csidls); i++)
|
||||
{
|
||||
WCHAR path[2048];
|
||||
if (SHGetFolderPath(NULL, csidls[i], NULL, SHGFP_TYPE_CURRENT, path) != S_OK)
|
||||
if (SHGetFolderPathW(NULL, csidls[i], NULL, SHGFP_TYPE_CURRENT, path) != S_OK)
|
||||
continue;
|
||||
|
||||
foreach (const QString& Snapshot, SnapshotList)
|
||||
|
@ -618,6 +618,7 @@ void CSandBoxPlus::ScanStartMenu()
|
|||
|
||||
void CSandBoxPlus::SetBoxPaths(const QString& FilePath, const QString& RegPath, const QString& IpcPath)
|
||||
{
|
||||
//bool bPathChanged = (FilePath != m_FileNtPath);
|
||||
bool bPathChanged = (FilePath != m_FilePath);
|
||||
|
||||
if (bPathChanged && !m_FilePath.isEmpty())
|
||||
|
@ -648,7 +649,7 @@ void CSandBoxPlus::UpdateSize(bool bReset)
|
|||
|
||||
if (m_bImageFile) {
|
||||
LARGE_INTEGER liSparseFileCompressedSize;
|
||||
liSparseFileCompressedSize.LowPart = GetCompressedFileSize(GetBoxImagePath().toStdWString().c_str(), (LPDWORD)&liSparseFileCompressedSize.HighPart);
|
||||
liSparseFileCompressedSize.LowPart = GetCompressedFileSizeW(GetBoxImagePath().toStdWString().c_str(), (LPDWORD)&liSparseFileCompressedSize.HighPart);
|
||||
m_TotalSize = liSparseFileCompressedSize.QuadPart;
|
||||
}
|
||||
|
||||
|
@ -855,9 +856,9 @@ void CSandBoxPlus::SetINetBlock(bool bEnable)
|
|||
{
|
||||
if (bEnable) {
|
||||
if(theGUI->IsWFPEnabled())
|
||||
InsertText("AllowNetworkAccess", "!<InternetAccess>,n");
|
||||
AppendText("AllowNetworkAccess", "!<InternetAccess>,n");
|
||||
else
|
||||
InsertText("ClosedFilePath", "!<InternetAccess>,InternetAccessDevices");
|
||||
AppendText("ClosedFilePath", "!<InternetAccess>,InternetAccessDevices");
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -973,7 +974,7 @@ void CSandBoxPlus::BlockProgram(const QString& ProgName)
|
|||
if (!WhiteList && !BlackList)
|
||||
{
|
||||
BlackList = true;
|
||||
InsertText("ClosedIpcPath", "<StartRunAccess>,*");
|
||||
AppendText("ClosedIpcPath", "<StartRunAccess>,*");
|
||||
}
|
||||
|
||||
EditProgramGroup("<StartRunAccess>", ProgName, !WhiteList);
|
||||
|
|
|
@ -122,7 +122,7 @@ void addSeparatorToShellContextMenu(HMENU hMenu)
|
|||
|
||||
void addItemToShellContextMenu(HMENU hMenu, const wchar_t *name, int ID, bool bChecked = false)
|
||||
{
|
||||
MENUITEMINFO menu_item_info;
|
||||
MENUITEMINFOW menu_item_info;
|
||||
memset(&menu_item_info, 0, sizeof(MENUITEMINFO));
|
||||
menu_item_info.cbSize = sizeof(MENUITEMINFO);
|
||||
menu_item_info.fMask = MIIM_ID | MIIM_STRING | MIIM_DATA;
|
||||
|
@ -132,7 +132,7 @@ void addItemToShellContextMenu(HMENU hMenu, const wchar_t *name, int ID, bool bC
|
|||
}
|
||||
menu_item_info.wID = 0xF000 + ID;
|
||||
menu_item_info.dwTypeData = (wchar_t*)name;
|
||||
InsertMenuItem(hMenu, 0, TRUE, &menu_item_info);
|
||||
InsertMenuItemW(hMenu, 0, TRUE, &menu_item_info);
|
||||
}
|
||||
|
||||
void RemoveMenuItemByVerb(HMENU hMenu, IContextMenu* pContextMenu, UINT idCmdFirst, UINT idCmdLast, const std::wstring& verbToRemove)
|
||||
|
@ -449,7 +449,7 @@ void CFileView::OnFileDblClick(const QModelIndex &)
|
|||
|
||||
QString BoxedPath = m_pFileModel->fileInfo(m_pTreeView->currentIndex()).absoluteFilePath();
|
||||
|
||||
ShellExecute(NULL, NULL, BoxedPath.toStdWString().c_str(), NULL, m_pBox->GetFileRoot().toStdWString().c_str(), SW_SHOWNORMAL);
|
||||
ShellExecuteW(NULL, NULL, BoxedPath.toStdWString().c_str(), NULL, m_pBox->GetFileRoot().toStdWString().c_str(), SW_SHOWNORMAL);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1283,7 +1283,7 @@ void CSbieView::OnSandBoxAction(QAction* Action, const QList<CSandBoxPtr>& SandB
|
|||
theConf->SetValue("Options/ExplorerInfo", false);
|
||||
}
|
||||
|
||||
::ShellExecute(NULL, NULL, SandBoxes.first()->GetFileRoot().toStdWString().c_str(), NULL, NULL, SW_SHOWNORMAL);
|
||||
::ShellExecuteW(NULL, NULL, SandBoxes.first()->GetFileRoot().toStdWString().c_str(), NULL, NULL, SW_SHOWNORMAL);
|
||||
}
|
||||
else if (Action == m_pMenuRegEdit)
|
||||
{
|
||||
|
@ -1317,7 +1317,7 @@ void CSbieView::OnSandBoxAction(QAction* Action, const QList<CSandBoxPtr>& SandB
|
|||
if (SandBoxes.first()->GetActiveProcessCount() == 0)
|
||||
params += L" \"" + theAPI->GetStartPath().toStdWString() + L" /box:" + SandBoxes.first()->GetName().toStdWString() + L" mount_hive\"";
|
||||
|
||||
SHELLEXECUTEINFO shex;
|
||||
SHELLEXECUTEINFOW shex;
|
||||
memset(&shex, 0, sizeof(SHELLEXECUTEINFO));
|
||||
shex.cbSize = sizeof(SHELLEXECUTEINFO);
|
||||
shex.fMask = SEE_MASK_FLAG_NO_UI;
|
||||
|
@ -1327,7 +1327,7 @@ void CSbieView::OnSandBoxAction(QAction* Action, const QList<CSandBoxPtr>& SandB
|
|||
shex.nShow = SW_SHOWNORMAL;
|
||||
shex.lpVerb = L"runas";
|
||||
|
||||
ShellExecuteEx(&shex);
|
||||
ShellExecuteExW(&shex);
|
||||
}
|
||||
else if (Action == m_pMenuSnapshots)
|
||||
{
|
||||
|
|
|
@ -2710,7 +2710,7 @@ void WindowsMoveFile(const QString& From, const QString& To)
|
|||
std::wstring to = To.toStdWString();
|
||||
to.append(L"\0", 1);
|
||||
|
||||
SHFILEOPSTRUCT SHFileOp;
|
||||
SHFILEOPSTRUCTW SHFileOp;
|
||||
memset(&SHFileOp, 0, sizeof(SHFILEOPSTRUCT));
|
||||
SHFileOp.hwnd = NULL;
|
||||
SHFileOp.wFunc = To.isEmpty() ? FO_DELETE : FO_MOVE;
|
||||
|
@ -2719,5 +2719,5 @@ void WindowsMoveFile(const QString& From, const QString& To)
|
|||
SHFileOp.fFlags = NULL;
|
||||
|
||||
//The Copying Function
|
||||
SHFileOperation(&SHFileOp);
|
||||
SHFileOperationW(&SHFileOp);
|
||||
}
|
||||
|
|
|
@ -43,7 +43,7 @@ int main(int argc, char *argv[])
|
|||
//SetProcessDpiAwarenessContext(DPI_AWARENESS_CONTEXT_SYSTEM_AWARE);
|
||||
//SetThreadDpiAwarenessContext(DPI_AWARENESS_CONTEXT_SYSTEM_AWARE);
|
||||
typedef DPI_AWARENESS_CONTEXT(WINAPI* P_SetThreadDpiAwarenessContext)(DPI_AWARENESS_CONTEXT dpiContext);
|
||||
P_SetThreadDpiAwarenessContext pSetThreadDpiAwarenessContext = (P_SetThreadDpiAwarenessContext)GetProcAddress(GetModuleHandle(L"user32.dll"), "SetThreadDpiAwarenessContext");
|
||||
P_SetThreadDpiAwarenessContext pSetThreadDpiAwarenessContext = (P_SetThreadDpiAwarenessContext)GetProcAddress(GetModuleHandleW(L"user32.dll"), "SetThreadDpiAwarenessContext");
|
||||
if(pSetThreadDpiAwarenessContext) // not present on windows 7
|
||||
pSetThreadDpiAwarenessContext(DPI_AWARENESS_CONTEXT_SYSTEM_AWARE);
|
||||
else
|
||||
|
@ -65,7 +65,7 @@ int main(int argc, char *argv[])
|
|||
|
||||
//InitConsole(false);
|
||||
|
||||
bool IsBoxed = GetModuleHandle(L"SbieDll.dll") != NULL;
|
||||
bool IsBoxed = GetModuleHandleW(L"SbieDll.dll") != NULL;
|
||||
|
||||
if (!IsBoxed) {
|
||||
SB_STATUS Status = CSbieUtils::DoAssist();
|
||||
|
@ -143,7 +143,7 @@ int main(int argc, char *argv[])
|
|||
if (!cmdLine) return -2;
|
||||
|
||||
if (IsBoxed) {
|
||||
ShellExecute(NULL, L"open", cmdLine + 1, NULL, NULL, SW_SHOWNORMAL);
|
||||
ShellExecuteW(NULL, L"open", cmdLine + 1, NULL, NULL, SW_SHOWNORMAL);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -162,7 +162,7 @@ int main(int argc, char *argv[])
|
|||
LPWSTR cmdLine = cmdLine0 + 14;
|
||||
|
||||
if (IsBoxed) {
|
||||
ShellExecute(NULL, L"open", cmdLine + 1, NULL, NULL, SW_SHOWNORMAL);
|
||||
ShellExecuteW(NULL, L"open", cmdLine + 1, NULL, NULL, SW_SHOWNORMAL);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue