Seite 1 von 1

Regedit Auslesen mit QSettings alle Software liste

Verfasst: 21. November 2007 01:16
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.