AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Programm Ordner finden

Ein Thema von SaFu · begonnen am 6. Apr 2008 · letzter Beitrag vom 6. Apr 2008
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#1

Programm Ordner finden

  Alt 6. Apr 2008, 14:06
Hi

Und zwar habe ich ein kleines Problem. Ich las den Benutzer über eine Groupbox sein schreib Programm wählen.

Der Pfad zum Programm ordner ändert sich ja aber immer (XP, Vista) wie kann ich jetzt den Programmpfad herausfinden immoment mache ich das so mit der abfrage des betriebsystem jetzt habe ich den Tipp bekommen das, das nicht schön gelöst ist.

Delphi-Quellcode:
sWindowsVersionName:= JvComputerInfoEx1.OS.ProductName;

Label3.Caption:= 'Verwendetes Betriebssytem: ' + Form1.sWindowsVersionName; // Windows Version anzeigen

 if Form1.sWindowsVersionName = 'Microsoft Windows 2000then
  begin
    sWinPfad:= 'C:\Programme';
  end;

 if Form1.sWindowsVersionName = 'Microsoft Windows XPthen
  begin
    sWinPfad:= 'C:\Programme';
  end;

 if Form1.sWindowsVersionName = 'Microsoft Windows Vistathen
  begin
    sWinPfad:= 'C:\Program Files';
  end;
end;


//================Auswahl Programm==============================================
procedure TSoftwareeinstellungen.GrBoxProgrammauswahlClick(Sender: TObject);
begin
 if GrBoxProgrammauswahl.ItemIndex = 0 then
  begin
   sProgrammPfad:= (sWinpfad +'\Windows NT\Accessories\wordpad.exe');
   if not FileExists(sProgrammPfad) then
    Begin
     sProgrammPfad:= ('c:\Programme\Windows NT\Zubehör\Wordpad.exe');
    End;
   sProgramLabel:= ('Wordpad');
  end;

   if GrBoxProgrammauswahl.ItemIndex = 1 then
    begin
     if not FileExists (sWinpfad + '\OpenOffice.org 2.4\program\swriter.exe') then
      begin
       if Form1.MessageDlgPos2('OpenOffice 2.4 ist nicht Installiert.' + #10 +'Wollen Sie OpenOffice installieren?'
       + #10 + #10 + 'Nehmen Sie nach der Installation die Einstellungen nochmals vor',mtInformation,[mbYes,mbNo],self) = mrYes then
        begin
         if ShellExecute(Application.Handle,'open',PChar(sWinpfad + '\xxxxx\Support\OOo_2.4.0rc2_20080227_Win32Intel_install_de.exe'),Nil, Nil, SW_NORMAL) <= 32 then
        end
       else
        begin
         sProgrammPfad:= (sWinpfad + '\Windows NT\Accessories\wordpad.exe');
         if not FileExists(sProgrammPfad) then
          Begin
           sProgrammPfad:= ('c:\Programme\Windows NT\Zubehör\Wordpad.exe');
          End;
         Form1.MessageDlgPos2('Standard Programm Wordpad wird ausgeführt!',mtInformation,[mbOk],self);
         sProgramLabel:= ('Wordpad');
        end;
      end

     else
      begin
       if fileExists (sWinpfad + '\OpenOffice.org 2.4\program\swriter.exe')then
        begin
         sProgrammPfad:=(sWinpfad + '\OpenOffice.org 2.4\program\swriter.exe');
         sProgramLabel:= ('OpenOffice');
        end
      end;
    end;

     if GrBoxProgrammauswahl.ItemIndex = 2 then
      begin
       if not FileExists (sWinpfad + '\Microsoft Office\Office10\WINWORD.EXE')then
        begin
          if Form1.MessageDlgPos2('Word 2003 ist nicht Installiert.',mtInformation,[mbOK],self) = mrOK then
           begin
            sProgrammPfad:= (sWinpfad + '\Windows NT\Accessories\wordpad.exe');
             if not FileExists(sProgrammPfad) then
              Begin
               sProgrammPfad:= ('c:\Programme\Windows NT\Zubehör\Wordpad.exe');
              End;
            sProgramLabel:= ('Wordpad');
            Form1.MessageDlgPos2('Standard Programm Wordpad wird ausgeführt!',mtInformation,[mbOk],self);
           end;
        end
       else
        begin
         sProgrammPfad:=(sWinpfad + '\Microsoft Office\Office10\WINWORD.EXE');
         sProgramLabel:= ('Word 2003');
        end;
       end;


    if GrBoxProgrammauswahl.ItemIndex = 3 then
     begin
      if not FileExists (sWinpfad + '\Microsoft Office\Office12\WINWORD.EXE')then
       begin
         if Form1.MessageDlgPos2('Word 2007 ist nicht Installiert.',mtInformation,[mbOK],self) = mrOk then
          begin
           sProgramLabel:= ('Wordpad');
           sProgrammPfad:= (sWinpfad + '\Windows NT\Accessories\wordpad.exe');
            if not FileExists(sProgrammPfad) then
             Begin
              sProgrammPfad:= ('c:\Programme\Windows NT\Zubehör\Wordpad.exe');
             End;
           Form1.MessageDlgPos2('Standard Programm Wordpad wird ausgeführt!',mtInformation,[mbOk],self);
          end;
       end
      else
       begin
        sProgrammPfad:=(sWinpfad + '\Microsoft Office\Office12\WINWORD.EXE');
        sProgramLabel:= ('Word 2007');
       end;
     end;
   Label4.Caption:= 'Ihr gewähltes Programm: ' + sProgramLabel;
Oder hat jemand eine schönere Lösung

Gruß Sascha

[edit=MrSpock]Änderung am Programmpfad wie vom Ersteller gewünscht durchgeführt. Mfg, MrSpock[/edit]
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
Benutzerbild von Der.Kaktus
Der.Kaktus

Registriert seit: 22. Jan 2008
Ort: Erfurt
958 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Programm Ordner finden

  Alt 6. Apr 2008, 14:14
hallo,

zum ProgrammfilesPath gehts hierlang--->JvComputerInfoEx1.Folders.ProgramFiles
Gruss Kaki

Repeat Until true=false;
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Programm Ordner finden

  Alt 6. Apr 2008, 14:19
ohne zusätzliche Komponenten geht es über SHGetSpecialFolderPath
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#4

Re: Programm Ordner finden

  Alt 6. Apr 2008, 14:28
Das Thema wurde hier schon x-mal behandelt, aber da muss man natürlich den Suchbegriff GETSPECIALFOLDER kennen.

Delphi-Quellcode:
uses
  { ... },
  ActiveX, // IMalloc
  ShellAPI, // SHGetSpecialFolderLocation() und SHGetPathFromIDList()
  ShlObj; // CSIDL_-Konstanten

.
.
.

function GetSpecialFolder(hWindow: HWND; Folder: Integer): String;
var
pMalloc: IMalloc;
pidl: PItemIDList;
Path: PChar;
begin
// get IMalloc interface pointer
if (SHGetMalloc(pMalloc) <> S_OK) then
begin
MessageBox(hWindow, 'Couldn''t get pointer to IMalloc interface.','SHGetMalloc(pMalloc)', 16);
Exit;
end;
// retrieve path
SHGetSpecialFolderLocation(hWindow, Folder, pidl);
GetMem(Path, MAX_PATH);
SHGetPathFromIDList(pidl, Path);
Result := Path;
FreeMem(Path);

// free memory allocated by SHGetSpecialFolderLocation
pMalloc.Free(pidl);
end;

//Mit folgendem Aufruf werden alle Specialfolder angezeigt, die auf DIESEM PC zur Verfügung stehen:
for i := 0 to 64 do Memo1.Lines.add(IntToStr(i)+' : '+ GetSpecialFolder(Form1.Handle,i));
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Programm Ordner finden

  Alt 6. Apr 2008, 14:31
@hathor: Warum SHGetSpecialFolderLocation anstelle von SHGetSpecialFolderPath? Mit SHGetSpecialFolderPath ginge das ganze bedeutend einfacher.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Der.Kaktus
Der.Kaktus

Registriert seit: 22. Jan 2008
Ort: Erfurt
958 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Programm Ordner finden

  Alt 6. Apr 2008, 14:38
@SirThornberry & @hathor
Sascha schrieb doch im Quelltext...er wuerde JVCL Komponenten nutzen..dann eruebrigt sich das doch ..trinkt nen *gggg*
@Sascha fuer die Suche nach installierten Programmen empfehle ich auch deshalb ..schau Dir mal die Komponente JvUninstallControls an. Da findest Du einiges.(im Quelltext gesehen..deshalb der Tip)
Gruss Kaki

Repeat Until true=false;
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#7

Re: Programm Ordner finden

  Alt 6. Apr 2008, 14:43
Zitat von SirThornberry:
@hathor: Warum SHGetSpecialFolderLocation anstelle von SHGetSpecialFolderPath? Mit SHGetSpecialFolderPath ginge das ganze bedeutend einfacher.
The reason for using SHGetSpecialFolderLocation instead of SHGetSpecialFolderPath is that the second is only available from the version 4.71 (Internet Explorer 4) of the Shell32.dll while the first is present on all systems starting with NT 4 and Win 95.
  Mit Zitat antworten Zitat
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#8

Re: Programm Ordner finden

  Alt 6. Apr 2008, 15:04
Zitat von Der.Kaktus:
@SirThornberry & @hathor
Sascha schrieb doch im Quelltext...er wuerde JVCL Komponenten nutzen..dann eruebrigt sich das doch ..trinkt nen *gggg*
@Sascha fuer die Suche nach installierten Programmen empfehle ich auch deshalb ..schau Dir mal die Komponente JvUninstallControls an. Da findest Du einiges.(im Quelltext gesehen..deshalb der Tip)
Ja mit Komponenten ist es halt einfacher ich Pruche Sie nicht unbending
die JvUninstallControls gibt es bei mir nicht aber der programmpfad mit der anderen Komponente Hilft schon viel weiter Danke
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#9

Re: Programm Ordner finden

  Alt 6. Apr 2008, 15:17
So - ich habe nun den Code "modernisiert" für "neuere" WINDOWS-Versionen.
Damit kann man alle SPECIALFOLDER bekommen: (wozu JVCL ???)

Delphi-Quellcode:
uses ...,ShlObj,...

procedure TForm1.FormShow(Sender: TObject);
var i:integer;
    Str : array[0..256] of char;
begin
Memo1.clear;
for i := 0 to 64 do
Begin
SHGetSpecialFolderPath(Application.Handle, @Str[0], i, false);
Memo1.Lines.add(IntToStr(i)+' : '+ Str);
END;
end;
  Mit Zitat antworten Zitat
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#10

Re: Programm Ordner finden

  Alt 6. Apr 2008, 15:29
Danke für die mühe

Aber ich brauche wirklich nur den Programmordner
Das ist so kürzer

Delphi-Quellcode:
 if GrBoxProgrammauswahl.ItemIndex = 0 then
  begin
   sProgrammPfad:= LowerCase(JvComputerInfoEx2.Folders.ProgramFiles +'\Windows NT\Accessories\wordpad.exe');
   if not FileExists(sProgrammPfad) then
    Begin
     sProgrammPfad:= LowerCase(JvComputerInfoEx2.Folders.ProgramFiles + '\Windows NT\Zubehör\Wordpad.exe');
    End;
   sProgramLabel:= ('Wordpad');
  end;
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz