Add helper for loading Windows system functions

This commit is contained in:
Chocobo1 2018-04-07 15:35:35 +08:00
parent 643a209812
commit b0e3d77975
No known key found for this signature in database
GPG key ID: 210D9C873253A68C
3 changed files with 27 additions and 5 deletions

View file

@ -34,6 +34,13 @@
#include <ctime>
#include <vector>
#include <QtGlobal>
#ifdef Q_OS_WIN
#include <memory>
#include <Windows.h>
#endif
#include <QDir>
#include <QFile>
#include <QPoint>
@ -109,6 +116,22 @@ namespace Utils
#ifdef Q_OS_WIN
QString windowsSystemPath();
template <typename T>
T loadWinAPI(const QString &source, const char *funcName)
{
QString path = windowsSystemPath();
if (!path.endsWith('\\'))
path += '\\';
path += source;
std::unique_ptr<wchar_t[]> pathWchar(new wchar_t[path.length() + 1] {});
path.toWCharArray(pathWchar.get());
return reinterpret_cast<T>(
::GetProcAddress(::LoadLibraryW(pathWchar.get()), funcName));
}
#endif
}
}