25 return (intptr_t)ShellExecuteW(
nullptr, L
"open",
GetWideChar(szURL),
nullptr,
nullptr, SW_SHOW) > 32;
32 Filename[
SLen(Filename)+1]=0;
37 shs.pFrom = wide_filename;
39 shs.fFlags=FOF_ALLOWUNDO | FOF_NOCONFIRMATION | FOF_SILENT;
40 shs.fAnyOperationsAborted=
false;
41 shs.hNameMappings=
nullptr;
42 shs.lpszProgressTitle=
nullptr;
43 auto error = SHFileOperationW(&shs);
49 return PRIMARYLANGID(GetUserDefaultLangID()) == LANG_GERMAN;
52 #elif !defined(__APPLE__)
56 if (strstr(setlocale(LC_MESSAGES,
nullptr),
"de"))
67 #if defined(WITH_QT_EDITOR)
68 #include <QDesktopServices>
72 return QDesktopServices::openUrl(QUrl::fromUserInput(url));
87 DWORD sz = ::GetModuleFileName(::GetModuleHandle(
nullptr), buf,
_MAX_PATH);
91 for (
auto p : parameters)
97 intptr_t iError = (intptr_t)::ShellExecute(nullptr,
nullptr, buf, params.GetWideChar(),
Config.
General.
ExePath.GetWideChar(), SW_SHOW);
98 if (iError > 32) success =
true;
102 switch (pid = fork())
108 params.insert(params.end(), parameters.begin(), parameters.end());
109 params.push_back(
nullptr);
111 execv(PROC_SELF_EXE,
const_cast<char *
const *
>(params.data()));
112 perror(
"editor launch via " PROC_SELF_EXE
" failed");
115 perror(
"editor launch via argv[0] failed");
C4Application Application
StdStrBuf::wchar_t_holder GetWideChar(const char *utf8, bool double_null_terminate=false)
void SCopy(const char *szSource, char *sTarget, size_t iMaxL)
size_t SLen(const char *sptr)