![](/img/trans.png)
[英]Is there a way to run Qt(c++) based program without Qt installed?
[英]How to check if program is installed with Qt in C++
我想檢查是否在C ++中使用Qt在用戶計算機上安裝了Matlab。 這可能嗎? 我讀了一些有關QProcess的內容,但似乎沒人能確定它是否是跨平台解決方案。 任何幫助將非常感激。
我對其他軟件有類似的問題,這里是示例:
QString qstr_ext = ".ext_data";
LPCWSTR wstr_ext = (const wchar_t*)qstr_ext.utf16();
// Create and reset buffer
TCHAR buff[1024];
DWORD size = sizeof(buff);
memset(&buff, '\0', sizeof(buff));
// Read application path for extension
HRESULT err = AssocQueryString(ASSOCF_INIT_IGNOREUNKNOWN, ASSOCSTR_EXECUTABLE, wstr_ext, NULL, buff, &size);
if(S_OK == err)
{
// Convert to wstring
std::wstring wstring_data(&buff[0]);
// To QString
QString appPath = QString::fromStdWString(wstring_data);
qDebug() << appPath;
}
這樣做是從注冊表中獲取“文件擴展名”(對於Matlab 文件擴展名 ),然后使用Windows API讀取安裝了matlab的位置。
要在跨平台中使用它會更加復雜,因為在Windows上您可以讀取注冊表,例如在OSX上,您可以使用“ find”命令行找出位置(如果存在,則命令將返回位置)
可以在Linux上完成類似的方法-使用'find'命令。
所以QProcess是一種方法,但是在* nix平台上速度很慢,因為沒有安裝應用程序的“注冊表”(AFIK沒有注冊表,您可以在debian中使用apt-get查找是否已安裝)。 ,但不是跨Linux解決方案)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.