Windows interne Dateisuche starten

  • VBScript

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von Darkscale.

    Windows interne Dateisuche starten

    Hallo Leute,

    ich könnte mal eure Hilfe gebrauchen. Ich schreibe gerade für meinen Arbeitsplatz ein kleines HTS-Tool, dass Suchanfragen auf diversen verschiedenen Webseiten vereinfachen soll. Der Aufbau selbst ist dabei nicht sehr kompliziert.

    Es wird in einer input Box ein Suchbegruff vorgegeben, der dann je nach Website leicht modifiziert oder auch im Original weitergereicht wird. bsp. Google

    Testeintrag --> "https://www.google.com/search?q=Testeintrag"

    Bei Webseiten funktioniert das schon sehr gut. Nun möchte ich die Suche gerne auf das Windows eigene Dateisystem ausweiten. Dabei geht es mir nicht um die Dateinamen, was auch einfach wäre, sondern um die Dateiinhalte.
    Windows bietet dafür bereits das richtige Werkzeug. Den Indizierungsdienst.

    Bsp. Ich suche nach einem Begriff innerhalb einer PDF datei.
    Dazu lasse ich den Ordner, in dem die pdf liegt vom Windows Indizierungsdienst scannen.
    Rufe ich nun im Windows Explorer diesen Ordner auf und gebe den Suchbegriff oben rechts in das Suchfeld ein, dann gibt mir Windows auch die Dateien als Ergebnis aus in denen der Suchbegriff vorkommt. (Natürlich muss dazu bei den Suchoptionen der Haken bei "Dateiinhalte" aktiviert sein)


    Nun zur Frage:
    Kann ich diese Suche aus einem VBScript heraus auslösen und mir ein Explorerfenster mit den Ergebnissen anzeigen lassen?

    Auf Grund der Sicherheitseinstellungen meiner Firma ist leider keine Programmierung in VB.Net möglich, daher der Versuch das per HTA/VBS zu realisieren.

    Beste Grüße,
    Andreas
    Wer nichts weiß ist nicht Dumm sondern unwissend!
    VB.NET Neueinsteuger... aber natürlich immer in "Option Explicit" - sonst lernt man nit!
    Hallo Leute,
    ich habe nun eine funktionelle Lösung für diesen Ansatz gefunden. Ich lasse diese mal hier, falls noch jemand nach etwas ähnlichem sucht.
    Meine Lösung basiert auf dem "Fernsteuern fremder Fenster". Der Vorteil dieser Variante ist, dass sie funktioniert. Leider gibt es auch einen großen Nachteil:
    Bedingt durch die Fernsteuerung eines anderen Prozesses kann man nicht direkt auf die entsprechenden Felder zugreifen. In der Folge muss man die von Windows benötigte Zeit zur Ausführung der Aktionen mit einkalkulieren. In der Praxis bedeutet das, dass man nach dem Starten des Skripts dieses nicht durch andere Aktionen stören sollte. (Mit der Maus z.B. ein anderes Fenster aktisieren, denn dann wird der code in dem "fremden Fenster" ausgeführt, was zu unschönen effekten führen kann.
    Auch sollte man bei der Dimensionierung der Zeitspannen genug Zeit einplanen, damit Windows die Aktionen auch ausführen kann.

    Nun genug der Worte, hier ist der Code:

    Visual Basic-Quellcode

    1. Dim WshShell, App, ObjShell, PID
    2. Set WshShell = CreateObject("WScript.Shell") 'Laden der WshShell
    3. Set App = WshShell.Exec("c:\Windows\Explorer.exe " & Chr(34) & Zielordner & Chr(34)) 'Starten des Explorers. Als Parameter den Zielpfad mit " übergeben.
    4. PID = App.ProcessID 'Prozess ID des Explorers Speichern
    5. WshShell.Run "Timeout /T " & 2.0 & " /nobreak" ,0 ,true 'Warten, bis das Explorerfenster gestartet wurde
    6. WshShell.AppActivate(PID) 'Das neu gestartete Explorerfenster als Aktiv in den Vordergrund holen.
    7. WshShell.Run "Timeout /T " & 0.1 & " /nobreak" ,0 ,true 'Warten
    8. WshShell.SendKeys "{F3}" ' Tastencode F3 = Suchen im Fenster ausführen
    9. WshShell.Run "Timeout /T " & 0.1 & " /nobreak" ,0 ,true 'Warten, bis das Suchenfenster aktiviert wurde und der Cursor aktiv ist.
    10. WshShell.SendKeys Suchbegriff 'Eingabe des Suchbegriffs


    Ich bin mir bewusst, dass dies keine Elegante Lösung ist, aber sie ist Funktionell.

    Grüße,
    Darkscale

    CodeTags korrigiert ~VaporiZed
    Wer nichts weiß ist nicht Dumm sondern unwissend!
    VB.NET Neueinsteuger... aber natürlich immer in "Option Explicit" - sonst lernt man nit!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()