Wie benutzt man die Windows eigene Suche (Windows Search Service WSS) in AutoIt?

  • Hallo allerseits. Ich hab mir mal folgendes zur Aufgabe gemacht:

    Es existiert ein Ordner auf der Festplatte. Dieser enthält pdf-Dateien und gegebenenfalls Unterordner, die wiederum pdf-Dateien enthalten. Alle Dateinamen enthalten feste Strings und eine Nummerierung. Ein Rückschluss auf den Inhalt der PDF Datei ist über den Namen nicht möglich.

    Die Inhalte der PDF Dateien sollen nun nach beliebigen Suchmustern durchsucht werden. Momentan mache ich das mit dem Tracker PDF XChange Viewer über die erweiterte Suche per Hand. Das funktioniert soweit auch so gut. Dabei gibt man den Pfad zu dem Ordner an und die Suche wandert dann rekursiv durch alle Unterordner und Dateien. Das dauert eben ein wenig, selbst auf ner SSD und einer einigermaßen aktuellen HW.

    Weiterhin habe ich den betreffenden Ordner in die Bibliothek "Dokumente" mit aufgenommen. Da ich ja den PDF XChange Viewer verwende, installiert mir dieser im Hintergrund einen sogenannten IFilter für PDF Dateien. Windows kann darüber also jetzt die Inhalte von PDF Dateien durchsuchen. Da Windows die Bibliothek selber mit der Windows eigenen Suche indiziert, ist also mein Ordner mit den PDF Dateien nun auch indiziert.

    Ich kann jetzt im Suchfeld von Windows einen beliebigen Suchtext eingeben und "Windows Serch" gibt mir die Fundstellen zurück. Dies geht natürlich viel schneller, als das rekursive durchsuchen.

    Jetzt hab ich mir gedacht: Toll. Ich baue mir in einem meiner Autoit Skripte eine eigene Suchfunktion ein, die PDF Dateien mit Hilfe der indizierten Windows Search durchsucht und mir die Fundstellen ins Programm zurückliefert.

    Leider hab ich so etwas noch nirgends gefunden. Wohlgemerkt: Ich will NICHT über eine Tastenkombination die Windows eigene Suchfunktion aufrufen und dort ferngesteuert etwas eintragen, und ich will auch keine eigene Indizierung für die PDFs (z.B. mit "pdftotext") machen.

    Ich will aus dem Skript heraus das (COM?) Windows Search Objekt (oder wie auch immer das heißt) ansprechen, dort die Parameter und Eigenschaften setzen und dann eine Suchmethode aufrufen und mir von dem Objekt das Ergebnis wiedergeben lassen.

    Am ehesten wird man wohl im Microsoft Developer Network fündig Und dort wird es wahrscheinlich auf den Artikel "Querying the Index with ISearchQueryHelper" hinauslaufen... aber ab da versteh ich es nicht mehr. Wie bekommt man das ins AutoIt? Oder hat jemand dazu bereits UDFs erstellt und ich finde sie einfach nicht?
    ?(

    Wer weiß wie es geht?

    Vielen Dank

    Reinhard

  • Mein OS ist MS Windows 8.1, 64 Bit, 8GB RAM,...

    Das ist eigentlich egal. Weil MS die Suchmaschine seit geraumen Versionen implementiert hat. Mal hieß sie Desktop Search, mal Windows Search Service.

    Später soll mein Programm auf ca 130 PCs laufen. Alle fahren Windows min V7. Die meisten werden noch 32 Bit sein. Deshalb kompiliere ich mein Skript immer in 32 Bit.

  • Make-Grafik hat mir mal nen Tipp gegeben...

    Bei dem ISearchQueryHelper handelt es sich um ein Inferface. Um es als Objekt benutzen zu können benötigt man die CSLID, die IID und die Interface Definition...

    Irgendwo hier müsste es ein wenig näher beschrieben sein. Hat jemand von Euch schon mal so etwas realisiert?

  • Also, mit Interfaces habe ich durchaus schon gearbeitet. Du kannst einerseits AutoItObject benutzen, du kannst aber auch AutoIts ObjCreateInterface verwenden. Ich würde stark und ohne Einschränkung zu zweiterem raten. Irgendwo hier im Forum fliegt eine UDF von mir herum, die das ITaskbar-Interface anspricht. Schau mal unter ThumbBarButtons-UDF. Das Schema sollte bei dir dasselbe sein.