Hallo,
Ich suche eine Möglichkeit ob in *.dll im systempfad vorhanden ist
bzw ob Programm *.exe bereits Installiert ist (nicht nur standard Pfad)
Also Hilfe und suche habe ich benutzt
Ich danke für helfende Antworten
PS. nur mal ne info Frage wie kann ist das Laden der Libmysql.dll beschleunigen
Prüfen ob DLL bzw. ander Dateien vorhanden sind?
Prüfen ob DLL bzw. ander Dateien vorhanden sind?
Ich würde mich ja gerne geistig mit dir duellieren, aber wie ich sehe bist du unbewaffnet.
================================
WinXP Pro, W2k3, Eisfair
-----------------------------
PB 4.40 auf WinXPpro kauf
================================
WinXP Pro, W2k3, Eisfair
-----------------------------
PB 4.40 auf WinXPpro kauf
Lassen wir das mit dem Duell mal und gehen lieber bei Gelegenheit einen Trinken.
Ich finde es gut, daß Du die Hilfe und die Suche schon konsultiert hast. Vermutlich lag es an den Suchbegriffen.
Mit "Durchsuchen" bzw "Systemordner" wärst Du schon weiter gekommen.
Zum Suchen habe ich folgendes für Dich geschrieben :
Eine von vielen Lösungen um einen Verzeichnisbaum rekursiv (http://de.wikipedia.org/wiki/Rekursiv)durchzugehen gibt es unter http://www.purebasic.fr/german/viewtopic.php?t=7354.
Eine andere wäre z.B. http://www.purebasic.fr/german/viewtopic.php?t=7263
Unter http://www.purebasic.fr/german/viewtopic.php?t=767 (solltest Du durchlesen) habe ich u.a. folgendes gefunden :
Unter http://www.vbapihelpline.de/ref/funca.p ... h&Letter=s gibt es eine deutsche Auflistung der nötigen Konstanten (die sollten in PB schon definiert sein). Du brauchst also nur die beiden oberen Codeblöcke und z.B. folgendes in eine Datei kopieren.
PS
Bitte beachte, dass Du damit immer nur bestimmte Verzeichnisse durchsuchst. In der Praxis könnte der Pfad aber sowohl "C:\Programme\WinzigWeich\BlaBla\" als auch "C:\Programme\BlaBla\" sein. Zum Teil lautet er sogar "C:\PROGRAM FILES\...". Deshalb gibt es die Möglichkeit den tatsächlichen Pfad in der Registry einzutragen. Eine Prüfung ob die Datei tatsächlich existiert erübrigt sich dadurch nicht.
Ich finde es gut, daß Du die Hilfe und die Suche schon konsultiert hast. Vermutlich lag es an den Suchbegriffen.
Mit "Durchsuchen" bzw "Systemordner" wärst Du schon weiter gekommen.
Zum Suchen habe ich folgendes für Dich geschrieben :
Code: Alles auswählen
Procedure GibtEsDirectoryeintrag (Pfad.s, SollName.s, SollExtension.s, SollTyp)
;Prüft die Existens eines Directoryeintrags
; Pfad.s z.B. "c:\"
; SollName.s z.B. "autoexec"
; SollExtension.s z.B. "bat"
; SollTyp
; entweder : #PB_DirectoryEntry_File
; oder : #PB_DirectoryEntry_Directory
; Diese Lösung ist nicht optimal aber so (hoffentlich) leicht zu verstehen
If ExamineDirectory(0, Pfad.s, "*.*")
Ergebnis = 0
SollName.s = LCase(SollName.s)
SollExtension.s = LCase(SollExtension.s)
Repeat
Typ = NextDirectoryEntry(0)
If Typ = SollTyp
Eintrag.s = LCase(DirectoryEntryName(0))
If Eintrag
Extension.s = GetExtensionPart(Eintrag)
If Extension
Name.s = Left(Eintrag.s, Len(Eintrag.s)-Len(Extension.s)-1) ; -1 wegen dem Punkt
If (Name.s = SollName.s Or SollName.s = "*") And (Extension = SollExtension.s Or SollExtension.s = "*")
ProcedureReturn #True
EndIf
EndIf
EndIf
EndIf
Until Ergebnis Or Typ = 0
EndIf
ProcedureReturn #False
EndProcedure
Eine von vielen Lösungen um einen Verzeichnisbaum rekursiv (http://de.wikipedia.org/wiki/Rekursiv)durchzugehen gibt es unter http://www.purebasic.fr/german/viewtopic.php?t=7354.
Eine andere wäre z.B. http://www.purebasic.fr/german/viewtopic.php?t=7263
Unter http://www.purebasic.fr/german/viewtopic.php?t=767 (solltest Du durchlesen) habe ich u.a. folgendes gefunden :
Code: Alles auswählen
Structure EMID
cb.b
abID.b[1]
EndStructure
; Structure ITEMIDLIST
; mkid.EMID
; EndStructure
; Die Struktur ist bei mir bereits definiert
Procedure.s GetSpecialeFolder(folder.l)
*itemid.ITEMIDLIST = #NULL
If SHGetSpecialFolderLocation_ (0, folder, @*itemid) = #NOERROR
location.s = Space (#MAX_PATH)
If SHGetPathFromIDList_ (*itemid, @location)
If Right(location, 1) <> "\" : location + "\" : EndIf
ProcedureReturn location
EndIf
EndIf
EndProcedure
Unter http://www.vbapihelpline.de/ref/funca.p ... h&Letter=s gibt es eine deutsche Auflistung der nötigen Konstanten (die sollten in PB schon definiert sein). Du brauchst also nur die beiden oberen Codeblöcke und z.B. folgendes in eine Datei kopieren.
Code: Alles auswählen
Pfad.s = GetSpecialeFolder(#CSIDL_WINDOWS) ;(nur IE ab version 5.0) Ermittelt das Verzeichnis "Windows"
Debug GibtEsDirectoryeintrag (Pfad.s, "explorer", "exe", #PB_DirectoryEntry_File)
Debug GibtEsDirectoryeintrag (Pfad.s, "*", "exe", #PB_DirectoryEntry_File)
Debug GibtEsDirectoryeintrag (Pfad.s, "explorer", "*", #PB_DirectoryEntry_File)
Debug GibtEsDirectoryeintrag (Pfad.s, "Explorer", "exe", #PB_DirectoryEntry_File)
Bitte beachte, dass Du damit immer nur bestimmte Verzeichnisse durchsuchst. In der Praxis könnte der Pfad aber sowohl "C:\Programme\WinzigWeich\BlaBla\" als auch "C:\Programme\BlaBla\" sein. Zum Teil lautet er sogar "C:\PROGRAM FILES\...". Deshalb gibt es die Möglichkeit den tatsächlichen Pfad in der Registry einzutragen. Eine Prüfung ob die Datei tatsächlich existiert erübrigt sich dadurch nicht.
Guten Morgen uweb,
ich danke dir erstmal für dein Codebeispiele das ist schon sehr viel wert. Ich hatte nicht mal sowas Ansatzweise gefunden.
Es ist mir durchaus klar das der Richtig suchbegriff das mass der dinge des wegen habe ich ja auch verschieden versucht. Doch meine Gedanke gänge waren leider nicht die der Breiten masse um das Problem zulösen, weswegen ich nachgefragt habe und eine sehr Brauchbare Antwort bekamm
Danke
werde jetzt erstmal weiter Basteln und mein Problem hoffentlich lösen könne
MFG Aspirant
ich danke dir erstmal für dein Codebeispiele das ist schon sehr viel wert. Ich hatte nicht mal sowas Ansatzweise gefunden.
Es ist mir durchaus klar das der Richtig suchbegriff das mass der dinge des wegen habe ich ja auch verschieden versucht. Doch meine Gedanke gänge waren leider nicht die der Breiten masse um das Problem zulösen, weswegen ich nachgefragt habe und eine sehr Brauchbare Antwort bekamm
Danke
werde jetzt erstmal weiter Basteln und mein Problem hoffentlich lösen könne
MFG Aspirant
Ich würde mich ja gerne geistig mit dir duellieren, aber wie ich sehe bist du unbewaffnet.
================================
WinXP Pro, W2k3, Eisfair
-----------------------------
PB 4.40 auf WinXPpro kauf
================================
WinXP Pro, W2k3, Eisfair
-----------------------------
PB 4.40 auf WinXPpro kauf
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
>> Pfad.s = GetSpecialeFolder(#CSIDL_WINDOWS) ;(nur IE ab version 5.0) Ermittelt das Verzeichnis "Windows"
Gerade dafür sollte man GetSpecialeFolder nicht nehmen, (wegen IE Version)
Gruß
Thomas
Gerade dafür sollte man GetSpecialeFolder nicht nehmen, (wegen IE Version)
Code: Alles auswählen
Define WinPath.s{#MAX_PATH}
GetWindowsDirectory_(@WinPath, #MAX_PATH)
If WinPath <> ""
If Right(WinPath, 1) <> "\" : WinPath + "\" : EndIf
EndIf
Debug WinPath
Define SysPath.s{#MAX_PATH}
GetSystemDirectory_(@SysPath, #MAX_PATH)
If SysPath <> ""
If Right(SysPath, 1) <> "\" : SysPath + "\" : EndIf
EndIf
Debug SysPath
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
