Default-Programm zum Öffnen unter Vista

Alles rund um die Programmierung mit Qt
Antworten
QT-Junkee
Beiträge: 18
Registriert: 14. März 2007 14:59

Default-Programm zum Öffnen unter Vista

Beitrag 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 
}
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Einfach ausführen und fertig. RundDLL ist da nie nötig.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Re: Default-Programm zum Öffnen unter Vista

Beitrag 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()));
    }
}



.........................
speack português italiano deutsch english castellà qt
QT-Junkee
Beiträge: 18
Registriert: 14. März 2007 14:59

Beitrag von QT-Junkee »

ThX Patrik08, its works very fine!
Antworten