This example finds all occurrences of an object type in a folder.
VOID clsFindEverybody(SOMAny *self)
{
BOOL rc; /* Return from methods */
HFIND hFind = 0; /* Handle for repeated finds */
CLASS Class[2]; /* List of classes to look for */
OBJECT Object[10]; /* Objects returned from search */
ULONG ulCount = 10; /* Count of objects to find / or found */
WPFolder *folder = 0; /* Pointer to folder for search */
ULONG errorid = 0; /* Error returned from previous search */
CHAR sz[CCHMAXPATH]; /* Title string to look for */
PSZ title = sz;
Class[0] = _WPFolder;
Class[1] = NULL;
/* Get the pointer to the desktop (since that is where we are looking) */
folder = _wpclsQueryFolder( _WPFolder, "<WP_DESKTOP>", TRUE );
_wpclsSetError( _WPObject, 0 ); /* Reset the error indicators */
rc = 0;
/* Attempt to find the first 10 objects matching our criteria */
ulCount = 10;
rc =_wpclsFindObjectFirst(_WPObject, /* Class self pointer */
Class, /* Pointer to array of class objects */
&hFind, /* Handle for wpclsFindObjectNext */
NULL, /* Find EVERYTHING */
folder, /* Pointer to folder of interest */
TRUE, /* Search all folders in tree */
NULL, /* No extended criteria */
Object, /* Array of object pointers */
&ulCount ); /* Number requested and number found */
errorid = _wpclsQueryError( _WPObject); /* Get errorid (may still be OK) */
if ((!rc && (errorid == WPERR_BUFFER_OVERFLOW)) || rc) {
/***** Process objects found here ******/
} else {
somPrintf(" _wpclsFindObjectFirst failed, errorid=%u\n", errorid );
return;
} /* endif */
do {
_wpclsSetError( _WPObject, 0 ); /* Reset error indicators */
rc = 0;
/* Look for next 10 objects */
rc =_wpclsFindObjectNext(_WPObject, /* Self */
hFind, /* Handle from previous Find */
Object, /* Objects found */
&ulCount ); /* Number to look for. On
return, number found */
errorid = _wpclsQueryError( _WPObject );
if ((!rc && (errorid == WPERR_BUFFER_OVERFLOW)) || rc) {
/***** Process objects found here ******/
} else {
somPrintf("_wpclsFindObjectNext failed, errorid=%u\n", errorid);
return;
} /* endif */
} while ( errorid == WPERR_BUFFER_OVERFLOW ); /* enddo */
_wpclsSetError( _WPObject, 0 ); /* Reset error indicators */
rc = 0;
/* Indicate find complete */
rc =_wpclsFindObjectEnd( _WPObject, hFind );
if (!rc) {
errorid = _wpclsQueryError( _WPObject );
somPrintf( "_wpclsFindObjectEnd failed, errorid=%u\n", errorid );
return;
}
return;
}