use of com.sun.jna.platform.win32.WinNT.HRESULT in project jna by java-native-access.
the class TypeInfoUtil method getNames.
/**
* Gets the names.
*
* @param memid
* the memid
* @param maxNames
* the max names
* @return the names
*/
public String[] getNames(MEMBERID memid, int maxNames) {
BSTR[] rgBstrNames = new BSTR[maxNames];
UINTByReference pcNames = new UINTByReference();
HRESULT hr = this.typeInfo.GetNames(memid, rgBstrNames, new UINT(maxNames), pcNames);
COMUtils.checkRC(hr);
int cNames = pcNames.getValue().intValue();
String[] result = new String[cNames];
for (int i = 0; i < result.length; i++) {
result[i] = rgBstrNames[i].getValue();
OLEAUTO.SysFreeString(rgBstrNames[i]);
}
return result;
}
use of com.sun.jna.platform.win32.WinNT.HRESULT in project jna by java-native-access.
the class Ole32Util method getGUIDFromString.
/**
* Convert a string to a GUID.
* @param guidString
* String representation of a GUID, including { }.
* @return
* A GUID.
*/
public static GUID getGUIDFromString(String guidString) {
GUID lpiid = new GUID();
HRESULT hr = Ole32.INSTANCE.IIDFromString(guidString, lpiid);
if (!hr.equals(W32Errors.S_OK)) {
throw new RuntimeException(hr.toString());
}
return lpiid;
}
use of com.sun.jna.platform.win32.WinNT.HRESULT in project jna by java-native-access.
the class Ole32Util method generateGUID.
/**
* Generate a new GUID.
* @return
* New GUID.
*/
public static GUID generateGUID() {
GUID pguid = new GUID();
HRESULT hr = Ole32.INSTANCE.CoCreateGuid(pguid);
if (!hr.equals(W32Errors.S_OK)) {
throw new RuntimeException(hr.toString());
}
return pguid;
}
use of com.sun.jna.platform.win32.WinNT.HRESULT in project jna by java-native-access.
the class ComEventCallbacks_Test method testComEventCallback.
@Test
public void testComEventCallback() throws InterruptedException {
VARIANT.ByReference pVarResult = new VARIANT.ByReference();
IntByReference puArgErr = new IntByReference();
EXCEPINFO.ByReference pExcepInfo = new EXCEPINFO.ByReference();
HRESULT hr;
DISPPARAMS.ByReference pDispParams;
pDispParams = new DISPPARAMS.ByReference();
pDispParams.setArgs(new VARIANT[] { new VARIANT(true) });
pDispParams.setRgdispidNamedArgs(new DISPID[] { OaIdl.DISPID_PROPERTYPUT });
// Visible-Prioperty
hr = ieDispatch.Invoke(dispIdVisible.getValue(), niid, lcid, propertyPutFlags, pDispParams, null, null, null);
COMUtils.checkRC(hr);
// query for ConnectionPointContainer
Unknown unk = new Unknown(ieApp.getValue());
PointerByReference ppCpc = new PointerByReference();
hr = unk.QueryInterface(new REFIID(IID_IConnectionPointContainer), ppCpc);
COMUtils.checkRC(hr);
ConnectionPointContainer cpc = new ConnectionPointContainer(ppCpc.getValue());
// find connection point for DWebBrowserEvents2
REFIID riid = new REFIID(IID_DWebBrowserEvents2);
PointerByReference ppCp = new PointerByReference();
hr = cpc.FindConnectionPoint(riid, ppCp);
COMUtils.checkRC(hr);
final ConnectionPoint cp = new ConnectionPoint(ppCp.getValue());
IID cp_iid = new IID();
hr = cp.GetConnectionInterface(cp_iid);
COMUtils.checkRC(hr);
final DWebBrowserEvents2_Listener listener = new DWebBrowserEvents2_Listener();
final DWORDByReference pdwCookie = new DWORDByReference();
HRESULT hr1 = cp.Advise(listener, pdwCookie);
COMUtils.checkRC(hr1);
// Advise make several callbacks into the object passed in - at this
// point QueryInterface must have be called multiple times
Assert.assertTrue(listener.QueryInterface_called);
// Call Navigate with URL https://github.com/java-native-access/jna
String navigateURL = "https://github.com/java-native-access/jna";
String blockedURL = "http://www.google.de";
VARIANT[] arguments = new VARIANT[] { new VARIANT(navigateURL) };
pDispParams = new DISPPARAMS.ByReference();
pDispParams.setArgs(arguments);
hr = ieDispatch.Invoke(dispIdNavigate.getValue(), niid, lcid, methodFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
COMUtils.checkRC(hr, pExcepInfo, puArgErr);
for (int i = 0; i < 10; i++) {
if (listener.navigateComplete2Called) {
break;
}
Thread.sleep(1000);
}
// At this point the call to Navigate before should be complete
Assert.assertTrue(listener.navigateComplete2Called);
// Navidate complete should have brought us to github
Assert.assertEquals(navigateURL, listener.navigateComplete2String);
listener.navigateComplete2Called = false;
listener.navigateComplete2String = null;
listener.blockNavigation = true;
arguments = new VARIANT[] { new VARIANT(blockedURL) };
pDispParams = new DISPPARAMS.ByReference();
pDispParams.setArgs(arguments);
hr = ieDispatch.Invoke(dispIdNavigate.getValue(), niid, lcid, methodFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
COMUtils.checkRC(hr, pExcepInfo, puArgErr);
// wait 10 seconds to ensure navigation won't happen
for (int i = 0; i < 10; i++) {
if (listener.navigateComplete2Called) {
break;
}
Thread.sleep(1000);
}
// Naviation will be blocked - so NavigateComplete can't be called
Assert.assertFalse("NavigateComplete Handler was called although it should be blocked", listener.navigateComplete2Called);
}
use of com.sun.jna.platform.win32.WinNT.HRESULT in project jna by java-native-access.
the class ComEventCallbacks_Test method queryInterface_ConnectionPointContainer.
@Test
public void queryInterface_ConnectionPointContainer() {
Unknown unk = new Unknown(ieApp.getValue());
PointerByReference ppCpc = new PointerByReference();
HRESULT hr = unk.QueryInterface(new REFIID(IID_IConnectionPointContainer), ppCpc);
COMUtils.checkRC(hr);
// On success the returned pointer must not be null
Assert.assertNotNull(ppCpc.getPointer());
}
Aggregations