Platform SDK: Team Productivity Update |
The following code presents the user with options to call one of the three methods for adding an application to the Team Productivity Update Team Workspace. The function uses a SWITCH statement to call each of the three TeamAppManager functions, based on user input. Selecting case "r" for the RegisterAppFactory method calls to a function, GetArguments(), which prompts the user for command-line parameters used by the RegisterAppFactory method.
// the main function int __cdecl main(int argc, char *argv[]) { HRESULT hr; puts(""); hr = CoInitialize(NULL); SHOWRET(hr, "CoInitialize"); // initialize the TeamAppManager CComPtr<ITeamAppManager> pTeamAppManager; hr = pTeamAppManager.CoCreateInstance(CLSID_TeamAppManager); SHOWRET(hr, "CoCreateInstance"); ATLASSERT(pTeamAppManager); static char InstantiateURL[MY_MAXSTRLEN]; // the instantiation URL static char FriendlyName [MY_MAXSTRLEN]; // the friendly name for the App static char Description[MY_MAXSTRLEN]; // the description for the App TeamAppFactoryType AppFactoryType = TAFT_LINK; // set default to LINK CComBSTR bstrFriendlyName; // return value from FriendlyNameFromGUID CComBSTR bstrUniqueIdentifier; // return value from RegisterAppFactory LPCSTR lpzrFriendlyName = NULL; USES_CONVERSION; char c; do { puts("\nChoose: r--Register u--Unregister f--FriendlyNameFromGUID q--Quit"); fflush(stdin); switch ( (c = getchar())) { case 'r': // prompt for input GetArguments(InstantiateURL, FriendlyName, Description, &AppFactoryType); // register the application factory printf("registering application factory ... "); hr = pTeamAppManager->RegisterAppFactory(CComBSTR(InstantiateURL), AppFactoryType, CComBSTR(FriendlyName), NULL, // pointer to icon CComBSTR(Description), &bstrUniqueIdentifier); SHOWRET(hr, "RegisterAppFactory"); bstrRegisteredIDs[IDindex++] = bstrUniqueIdentifier; // save the ID ShowGUIDs(); break; case 'u': printf("unregistering the most recently registered factory ... "); hr = pTeamAppManager->UnregisterAppFactory(bstrRegisteredIDs[IDindex-1]); SHOWRET(hr, "UnregisterAppFactory"); bstrRegisteredIDs[IDindex--].Empty(); // remove the ID from the array puts("last entry unregistered"); ShowGUIDs(); break; case 'f': printf("Getting the friendly name from GUID ... "); hr = pTeamAppManager->FriendlyNameFromGUID(bstrRegisteredIDs[IDindex-1], &bstrFriendlyName); SHOWRET(hr, "FriendlyNameFromGUID"); lpzrFriendlyName = OLE2A(bstrFriendlyName); printf("Friendly name for the last entry is: %s\n", lpzrFriendlyName); break; case 'q': break; default: puts("Invalid option, choose again"); break; } } while ( c != 'q'); // release the TeamAppManager pTeamAppManager.Release(); CoUninitialize(); return 0; }