Seite 1 von 1
Default-Programm zum Öffnen unter Vista
Verfasst: 14. März 2007 15:07
von QT-Junkee
Hallo.
Hat schon jemand eine Lösung gefunden, wie man unter Windows Vista
Dateien öffnen kann (PDF, TXT mit Hilfe der rundll32)?
Früher hat dies hier funktioniert, jetzt nicht mehr:
Code: Alles auswählen
::openExternFile(QString item)
{
#if defined(Q_WS_WIN)
QProcess p;
QStringList s;
s << "url.dll,FileProtocolHandler" << item;
p.startDetached(QString("rundll32.exe") , s );
#endif
}
Verfasst: 14. März 2007 15:51
von Christian81
Einfach ausführen und fertig. RundDLL ist da nie nötig.
Re: Default-Programm zum Öffnen unter Vista
Verfasst: 14. März 2007 17:29
von patrik08
QT-Junkee hat geschrieben:Hallo.
Hat schon jemand eine Lösung gefunden, wie man unter Windows Vista
Dateien öffnen kann (PDF, TXT mit Hilfe der rundll32)?
Früher hat dies hier funktioniert, jetzt nicht mehr:
Code: Alles auswählen
::openExternFile(QString item)
{
#if defined(Q_WS_WIN)
QProcess p;
QStringList s;
s << "url.dll,FileProtocolHandler" << item;
p.startDetached(QString("rundll32.exe") , s );
#endif
}
QT 4.2 hat extra eine class ... die geht prima mit alle 3 os die ich habe...
Sogar fuer die ip adresse vom os zu haben gibt es eine class ...
http://doc.trolltech.com/latest/qnetworkinterface.html
Code: Alles auswählen
#include <QtDebug>
QList<QHostAddress> addrlist = QNetworkInterface::allAddresses();
foreach(QHostAddress addr, addrlist){
qDebug() << addr.toString();
}
/* window QUrl kommt mit file:// nicht zurecht je nach version darum forciere ich wenn es nicht was wom netz ist */
QString DesktopFile( QString fullFileName )
{
#if defined Q_WS_MAC
return fullFileName;
#endif
#if defined Q_WS_X11
return fullFileName;
#endif
if (fullFileName.startsWith("http://", Qt::CaseInsensitive) or
fullFileName.startsWith("https://", Qt::CaseInsensitive) or
fullFileName.startsWith("ftp://", Qt::CaseInsensitive) or
fullFileName.startsWith("news://", Qt::CaseInsensitive) or
fullFileName.startsWith("mailto:", Qt::CaseInsensitive) or
fullFileName.startsWith("webdav://", Qt::CaseInsensitive) )
{
return fullFileName;
} else {
return fullFileName.prepend("file:///");
}
}
void Dav_Main::OpenDesktop( QUrl loc )
{
qDebug() << "### OpenDesktop ............." << loc;
qDebug() << "### OpenDesktop ............." << loc.toString();
#if defined Q_WS_WIN
QString winbuh = DesktopFile(loc.toString());
qDebug() << "### winbuh ............." << winbuh;
bool wr = QDesktopServices::openUrl(QUrl(winbuh));
if (!wr) {
QMessageBox::warning(this, tr("Error"),tr("Unable to open file or dir %1").arg(loc.toString()));
}
return;
#endif
bool r = QDesktopServices::openUrl(loc);
if (!r) {
QMessageBox::warning(this, tr("Error"),tr("Unable to open file or dir %1").arg(loc.toString()));
}
}
Verfasst: 15. März 2007 10:06
von QT-Junkee
ThX Patrik08, its works very fine!