Re: Invoking Application based on UID.
"Christophe Bouhier (MC/ECM)" <[email protected]>
| Newsgroups | gmane.comp.windows.devel.jawin |
|---|---|
| Message-ID | <6BA346EB59B2D51194E200508B046FE107DFE937@emyklnt151.ao.ericsson.se> |
Further exploration revealed that:
.htt points to htmlfile
htmlfile CLSID = {25336920-03F9-11cf-8FD0-00AA00686F13}
When I check the CLSID for Internet Explorer I can see it's different the the CLSID returned by htmlfile.
{0002DF01-0000-0000-C000-000000000046}
I can access com through the IE CLSID but not through the CLSID from the "htmlfile" class.
If I can find out how to get the CLSID from Internet explorer from the extension, this would be solved.
Cheers / Christophe
ps. sorry perhaps not so much to do with Jawin :)
-----Original Message-----
From: Discussion of Java/Win32/COM integration with Jawin
[mailto:[email protected]]On Behalf Of Christophe Bouhier
(MC/ECM)
Sent: Wednesday, March 09, 2005 1:28 PM
To: [email protected]
Subject: Re: [JAWIN] Invoking Application based on UID.
Hi,
I am not surprise you don't get it, as I don't understand myself what I am doing ;-)
The objective is to get the default web browser from the registry and launch it.
My thinking is that I should look at file extensions like .htt .htm or html
I have no specific reason to use the PersistentHandler. It looked like
a CLSid in the registry so I tried to invoke it, but I am sure I am on the wrong path here.
I now figured out that the [.extension] actually contains the progid , which I can invoke
and works. I tried it out for .doc returning "Word.Document.8" which I can access.
For the .htm I get progid "htmlfile", I tried to create a Dispatch point on this, but
it doesn't launch internet explorer.
Am I getting closer?
Cheers / Christophe
-----Original Message-----
From: Discussion of Java/Win32/COM integration with Jawin
[mailto:[email protected]]
Sent: Wednesday, March 09, 2005 1:08 PM
To: [email protected]
Subject: Re: [JAWIN] Invoking Application based on UID.
I don't get it. Why do you want the PersistentHandler for a the file? Are
you writing your own version of the indexing service?
What exactly are you trying to accomplish? Maybe I can give better answers
with a higher level description of the problem.
The most likely reason for your exception is that the Ifilter interface that
GUID represents isn't a descendant of IDispatch. It's a custom interface.
++PLS
-----Original Message-----
From: Discussion of Java/Win32/COM integration with Jawin
[mailto:[email protected]] On Behalf Of Christophe Bouhier (MC/ECM)
Sent: Tuesday, March 08, 2005 9:24 PM
To: [email protected]
Subject: Re: [JAWIN] Invoking Application based on UID.
Hi,
Objective: Detect the default browser and open it with some URL.
Approach: Read all I can grab and try stuff out..
Efficiency: Not very good, trial and error...Struggling to understand COM,
back to the basics...
I tried something else with more success. (This code works).
try {
Ole32.CoInitialize();
GUID guid = new
GUID("{91493441-5A91-11CF-8700-00AA0060263B}");
DispatchPtr powerpoint = new DispatchPtr(guid);
powerpoint.put("Visible", true);
Ole32.CoUninitialize();
} catch (COMException e) {
e.printStackTrace();
System.out.println(e.getMessage());
}
So OK, I can use the Clsid instead of the ProgID to access COM, but the
thing is I don't know the CLsid, so I look it up in the registry.
HKEY_LOCAL_MACHINE\SOFTWARE\\Classes\\.htt\\PersistentHandler
PersistentHandler key return an ID which returns the message:
- 80040154: Class not registered
So I guess I am trying to invoke on a non-valid Clsid.
I am really confused on how the PersistenHandler key relates to the valid
application CLsid...
It would be great if someone can enlight me here....
Cheers / Christophe
-----Original Message-----
From: Discussion of Java/Win32/COM integration with Jawin
[mailto:[email protected]]
Sent: Wednesday, March 09, 2005 12:01 PM
To: [email protected]
Subject: Re: [JAWIN] Invoking Application based on UID.
I may be a Java newbie, but I know COM.
Doesn't COMException contain the HRESULT of the failing operation?
What is it?
++PLS
-----Original Message-----
From: Discussion of Java/Win32/COM integration with Jawin
[mailto:[email protected]] On Behalf Of Christophe Bouhier (MC/ECM)
Sent: Tuesday, March 08, 2005 8:11 PM
To: [email protected]
Subject: [JAWIN] Invoking Application based on UID.
Hi,
I have been using jawin succesfully in my application, accessing COM through
the Dispatch interface. This easy to do, minding a well documented API (Like
iTunes).
Now I try to access COM through the GUID of an application, as retrieved
from the registry.
I have the feeling that I am close to the solution, but I think I am
overlooking something.
Specifically I query the Registry to retrieve a file extension's
'PersistentHandler'.
Here is the code below. I can create the extend Dispatch class named
"ipBrowser" but invoking a method on it throws a COMexception.
Can someone tell me what I am doing wrong?
///// GET A KEY METHOD
public static String getStringValue(int area, String keyString,
String valueString) {
int key;
try {
key = Registry.OpenKey(area,
keyString);
String value = Registry.QueryStringValue(key, valueString);
Registry.CloseKey(key);
return value;
return value;
} catch (IOException e) {
e.printStackTrace();
} catch (COMException e) {
e.printStackTrace();
}
////////////////////////////////////////
// CREATE A
///////////////////////////////////////
String id = ipRegistry.getStringValue(
RegistryConstants.HKEY_LOCAL_MACHINE,
"SOFTWARE\\Classes\\.htt\\PersistentHandler", "");
try {
Ole32.CoInitialize();
ipBrowser browser = new ipBrowser(id);
browser.invoke("Open","www.yahoo.com"); <<<-----------COM
EXCEPTION.
Ole32.CoUninitialize();
} catch (COMException e) {
e.printStackTrace();
}
///////////////////////////////////////////
// EXTEND DISPATH TO register the GUID
//////////////////////////////////////////
public class ipBrowser extends DispatchPtr {
public GUID DIID;
public int iidToken;
public ipBrowser(String guid) {
DIID = new GUID(guid);
iidToken = IdentityManager.registerProxy(DIID,
ipLaunchBrowser.class);
}
/**
* @see org.jawin.IUnknown#getIIDToken()
*/
public int getIIDToken() {
return iidToken;
}
}
Thank / Christophe