Hey, how do I attach to the currently Netscape application from a C++
program? I am betting it is with XPCOM but how do I use the services it
exposes (or does that happen automatically and I am juts really confised).

For example I thought the code below would give me the User Agent string but
it fails (GetMostRecentWindow() does not set window). By the way, I have
Netscape 6 running while I run the code below.

    const char *path =
"D:\\Netscape\\Mozilla\\mozilla.v0.9.9\\mozilla\\dist\\WIN32_O.OBJ\\bin";

    nsCOMPtr<nsILocalFile> componentPath;
    NS_NewLocalFile(path, PR_TRUE, getter_AddRefs(componentPath));

//-initXPCOM
    nsIServiceManager *serviceManager=0;
    nsResult = NS_InitXPCOM2(&serviceManager, componentPath, nsnull);

//-nsIWindowsMediator
    nsCOMPtr<nsIWindowMediator> mediator=0;
    mediator = do_GetService(NS_RDF_DATASOURCE_CONTRACTID_PREFIX
"window-mediator");

//-nsIDOMWindowInternal
    nsIDOMWindowInternal* window=0;
    nsResult = mediator->GetMostRecentWindow(nsnull,&window);            //
window is 0 after this call?

//-nsIDOMNavigator
    nsIDOMNavigator* navigator=0;
    nsResult = window->GetNavigator(&navigator);

    nsString userAgent;
    nsResult = navigator->GetUserAgent(userAgent);
    printf("User Agent: '%p'\n",userAgent.get());


I am trying to attach to Netscape but I am pointing things to Mozilla
because Netscape 6 does not support NS_InitXPCOM2(). Does this matter?



Reply via email to