Η καλύτερη πηγή σας πληροφοριών και ειδήσεων περίπου vista παραθύρων, παράθυρα και οδηγοί στο διαδίκτυο

Vista ΑΡΘΡΑ ΚΟΡΥΦΗ 50 Vista ΒΙΝΤΕΟ Vista SOFT Vista ΒΟΗΘΕΙΑ

Επέκταση της Shell Namespace: Διευκόλυνση της βαθιάς αναζήτησης


Επισκόπηση

Από τις προηγούμενες θέσεις μου για την εφαρμογή της Shell σας Namespace, έχουν υπάρξει μερικές μεγάλες ερωτήσεις που τοποθετούνται από τους αναγνώστες. Πολλοί από αυτούς προέρχονται από το γεγονός ότι το παράδειγμα Namespace είναι αρκετά απλό δεδομένου ότι δεν εφαρμόζει όλη την συμπεριφορά που είναι δυνατή στον εξερευνητή. Αυτό έγινε για να εστιάσει στα βήματα πυρήνων να πάρει μια εργασία Namespace που εφαρμόστηκε. Ακόμα, υπάρχουν μερικά πρόσθετα μέτρα που μπορείτε να λάβετε που δεν απαιτούν πάρα πολλή περισσότερη κωδικοποίηση από τη μεριά σας για να προσθέσουν τα πιό χρήσιμα χαρακτηριστικά γνωρίσματα. Μια ερώτηση που in particular εμφανίζεται αρκετά συχνά είναι πώς να επιτρέψει βαθιά να ψάξει στο Namespace σας.

Θα παρατηρήσετε από το υπάρχον παράδειγμα Namespace ότι εάν εισαγάγετε έναν όρο αναζήτησης στο παράθυρο αναζήτησης στον εξερευνητή, τα στοιχεία φίλτρων αναζήτησης μόνο που είναι αυτήν την περίοδο κατά την άποψη. Δεν ψάχνει στους φακέλλους. Στις κάτωθι εικόνες, προσπαθούμε να ψάξουμε για «δύο» στο κιβώτιο αναζήτησης που οδηγεί μόνο σε 1 στοιχείο. Κατά συνέπεια, οι υπο- φάκελλοι δεν συμπεριλήφθηκαν.

Αναζήτηση φίλτρων

Αποτελέσματα φίλτρων - ρηχά

Τι ένας εφαρμοστής Namespace πρέπει προκειμένου περιλαμβάνει τους υπο- φακέλλους στα αποτελέσματα αναζήτησης namespace τους; Αυτό είναι πραγματικά αρκετά απλό.

Εφαρμογή IShellFolderViewCB και IFolderViewSettings

Στον προηγούμενο κώδικά μας, δεν εφαρμόσαμε IShellFolderViewCB για το Namespace μας. Αυτό επιτρέπει στο Namespace σας για να δηλωθεί για τα γεγονότα που συνδέονται με την άποψη. Μια εφαρμογή IShellFolderViewCB μπορεί να διευκρινιστεί στην κλήση σας SHCreateShellFolderView. Αυτό είναι προαιρετικό και προηγουμένως ήμαστε ακριβώς να περάσουμε ΜΗΔΕΝΙΚΟΙ για αυτό. Πρέπει να δημιουργήσουμε μια κατηγορία που εφαρμόζει IShellFolderViewCB καθώς επίσης και IFolderViewSettings. Για την εφαρμογή IFolderViewSettings μας, πρέπει μόνο να παρέχουμε έναν χειριστή για GetFolderFlags μέθοδος. Είναι μέσω αυτής της μεθόδου ότι ειδοποιούμε τη Shell ότι θέλουμε να εκτελέσουμε τις βαθιές αναζητήσεις μέσα στο Namespace μας.

IFACEMETHODIMP CFolderViewCB:: GetFolderFlags (__out FOLDERFLAGS *pfolderMask, __out FOLDERFLAGS *pfolderFlags)

{

εάν (pfolderMask)

{

*pfolderMask = FWF_USESEARCHFOLDER

}

εάν (pfolderFlags)

{

*pfolderFlags = FWF_USESEARCHFOLDER

}

επιστροφή S_OK

}

Δεδομένου ότι μπορείτε να δείτε από την ανωτέρω εφαρμογή GetFolderFlags, φροντίζουμε μόνο να ειδοποιήσουμε τη Shell για τη σημαία FWF_USESEARCHFOLDER. Αυτό λέει στη Shell ότι το Namespace μας πρέπει να χρησιμοποιήσει το φάκελλο αναζήτησης για την εκτέλεση της συσσώρευσης και της έρευνας. Θα μπορούσατε επίσης διευκρινίστε άλλες σημαίες για να τροποποιήσει την εμφάνιση και τη συμπεριφορά του namespace σας.

Ο τροποποιημένος κώδικας για αυτό το δείγμα συνδέεται κατωτέρω. Θα παρατηρήσετε ότι η εφαρμογή IShellFolderViewCB και IFolderViewSettings είναι μάλλον αραιή - οι περισσότερες μέθοδοι επιστρέφουν ακριβώς E_NOTIMPL δεδομένου ότι δεν τους χρησιμοποιούμε εδώ. You can implement these yourself if you see the need to extend your code.
Now that we have notified the Shell to use the Search Folder, we can perform deep searches within our Namespace. When we perform the same search we did previously, we now get the following results:

deep search

This Namespace simply generates 10 virtual items to a default depth of 5. The Search enumerates the contents of the Namespace to that depth. It should also be called out that we had to implement our namespace's ParseDisplayName method in order for our namespace to function in the Search folder.

*Please note that the method described here only works with the default shell view (Defview). It is not supported for custom IShellView implementations.

Building the FolderView SDK Sample

  1. To build the FolderViewImpl sample, be sure to download and install the Windows SDK.
  2. Download the modified FolderView SDK sample
  3. Launch FolderViewImpl.sln in Visual Studio (The solution file is for Visual Studio 2008)
  4. Open the properties for the project
  5. Add a path to the SDK includes to the C/C++ - General page
  6. Add a path to the SDK libs to the Linker – General page
  7. Build

Installing the FolderView SDK Sample

  1. Once you have built the sample, copy the FolderViewImpl.dll and FolderViewImpl.propdesc to the same directory
  2. From an elevated cmd window, regsvr32 FolderViewImpl.dll
  3. Restart explorer
  4. Open explorer to Computer
  5. There should be a list item named “FolderView SDK Sample”

Popularity: 1%


Written by chrdavis. Read more great feeds at is source WEBSITE
no comments.
Read more articles on namespace and otherSoftware and extension and Search and Organize and shell and Coding and Programming and vista and search and API and Windows Vista.

Related articles

No comments

There are still no comments on this article.

Leave your comment...

If you want to leave your comment on this article, simply fill out the next form:




You can use these XHTML tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong> .