Regedit Auslesen mit QSettings alle Software liste

Code-Schnippsel, oder Tipps und Tricks, die einem beim Programmieren mit Qt helfen können.
Antworten
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Regedit Auslesen mit QSettings alle Software liste

Beitrag von patrik08 »

Vor einem Jahr war es fuer mich fast eine sache der unmoeglichkeit heraus zu finden wo die Programme liegen um zum beispiel zu checken ob Outlook oder was anderes installiert und in gebrauch ist.. Ie oder Firefox .. .u.n.s.w.

Doch es kam die notwendigkeit PostScript zu PNG oder pdf zu machen fuer mich..

da hilft Ghostscript
http://pages.cs.wisc.edu/~ghost/ wenn es installiert ist..

Um Ihn zu finden:

Zu erst die neuere versionen ob GPL oder AFPL spielt keine rolle...

Code: Alles auswählen

/* find gpl GhostScript path or exe */
QString PS_utils::getGSDefaultExeName()
{
    QString gsName;
    QString gVersion;
#if defined Q_WS_WIN
    QFileInfo Pinfo;
	// Try to locate GhostScript thanks to the qsetting
	 gsName = "gswin32c.exe";
     QSettings softs("HKEY_LOCAL_MACHINE\\Software",QSettings::NativeFormat);
     QStringList allsoftware = softs.childGroups();
     QStringList gsonly = allsoftware.filter(QRegExp("Ghostscript"));
     //////////qDebug() << "### gsonly " <<  gsonly;
         for (int i = 0; i < gsonly.size(); ++i) {
              const QString RealName = gsonly.at(i);  /* realpath */
                      if (RealName.contains("Ghostscript")) {
                       qDebug() << "### soft " <<  RealName;
                       for(int e=1;e<99;e++)  {
                           /* check version 8 ++ 99 down */
                           gVersion = QString("8.%1").arg(100 - e);
                           if (softs.value(RealName+"/"+gVersion+"/GS_DLL").toString().size() > 6 ) {
                               Pinfo.setFile(softs.value(RealName+"/"+gVersion+"/GS_DLL").toString());
                               return gsName.prepend(Pinfo.absolutePath()+"/");
                           }
                           /* check version 7 ++ 99 down */
                           gVersion = QString("7.%1").arg(100 - e);
                           if (softs.value(RealName+"/"+gVersion+"/GS_DLL").toString().size() > 6 ) {
                               Pinfo.setFile(softs.value(RealName+"/"+gVersion+"/GS_DLL").toString());
                               return gsName.prepend(Pinfo.absolutePath()+"/");
                           }
                       }
               }
         }
    
    /* win not having GPL Ghostscript ! */
    gsName = "rundll32.exe";   
#else
    
	gsName = "gs";
#endif
	return gsName;
}

mit QStringList allsoftware = softs.childGroups();
hat man eine liste was alles installiert ist..

mit dem filter hat man die wo man sucht....
QStringList gsonly = allsoftware.filter(QRegExp("Ghostscript"));
obwohl es auch interessant sein koente an die Microsoft* einstellung
andere werte zu geben da QSettings auf diese weise auch zu andere programme schreiben kann..

mit Ghostscript ist es auch moeglich PDF formulare zu schreiben und noch viele andere dinge.... es Lohn sich also es zu gebrauchen.. nicht nur fuer bilder.
.........................
speack português italiano deutsch english castellà qt
Antworten