- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我为这个 c 方法编写了等效的 Java 方法:
HRESULT h3 = CoInitializeEx(NULL, COINIT_MULTITHREADED);
HRESULT h4 = CoInitializeSecurity(NULL, -1, NULL, NULL, RPC_C_AUTHN_LEVEL_DEFAULT, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE, NULL);
IShellItemImageFactory * item;
HRESULT h = SHCreateItemFromParsingName(L"C:\\Users\\Marcel\\Desktop\\CosmosKernel2Boot.iso", NULL, IID_IShellItemImageFactory, (void**)&item);
if (SUCCEEDED(h)) {
HBITMAP bit;
SIZE size = { 32,32 };
HRESULT hh = item->GetImage(size, SIIGBF_RESIZETOFIT, &bit);
if (SUCCEEDED(hh)) {
cout << "SUCCEEDED";
}
}
item->Release();
CoUninitialize();
Java:
Ole32Extra.INSTANCE.CoInitializeEx(null,Ole32.COINIT_MULTITHREADED);
Ole32Extra.INSTANCE.CoInitializeSecurity(null, -1, null, null, Ole32Extra.RPC_C_AUTHN_LEVEL_DEFAULT, Ole32Extra.RPC_C_IMP_LEVEL_IMPERSONATE, null, Ole32Extra.EOAC_NONE, null);
PointerByReference factory = new PointerByReference();
WinNT.HRESULT h5 = Shell32Extra.INSTANCE.SHCreateItemFromParsingName(new WString("C:\\Users\\Marcel\\Desktop\\Test.txt"),null,new Guid.REFIID(new Guid.IID(Shell32Extra.IID_IShellItemImageFactory)),factory);
if(COMUtils.SUCCEEDED(h5)) {
IShellItemImageFactory factory1 = new IShellItemImageFactory(factory.getValue());
PointerByReference bitP = new PointerByReference();
WinUser.SIZE size = new WinUser.SIZE(32,32);
WinNT.HRESULT hi = factory1.GetImage(size,0,bitP);
if(COMUtils.SUCCEEDED(hi)) {
WinDef.HBITMAP bit = new WinDef.HBITMAP(bitP.getPointer());
System.out.println("SUCCEEDED");
}else{
System.out.println(hi);
}
factory1.Release();
}else{
System.out.println(h5);
}
Ole32Extra.INSTANCE.CoUninitialize();
当我运行 c 方法时,一切正常,并打印出“SUCCEEDED”。
但是当我运行 Java 方法时,HRESULT hi 总是返回 -2147024882这意味着 E_OUTOFMEMORY。
我不知道为什么会抛出这个错误,但我希望任何人都可以提供帮助
错误正是发生在这一行中:
HRESULT hh = item->GetImage(size, SIIGBF_RESIZETOFIT, &bit);
WinDef.HBITMAP bit = new WinDef.HBITMAP(bitP.getPointer());
最佳答案
解决办法是SIZE结构不能按值传递。 (在 C++ 中可以)。您必须创建一个扩展 SIZE 并实现 Structure.ByValue 的类 SIZEByValue。现在它正在工作。
关于java - Jna E_OUTOFMEMORY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52953419/
我为这个 c 方法编写了等效的 Java 方法: HRESULT h3 = CoInitializeEx(NULL, COINIT_MULTITHREADED); HRESULT h4 = CoIni
出于某种原因,下面的代码会给我一个内存不足的错误。我错过了什么? for(int n = 0; n device_ptr->CreateTexture2D(&texture_desc, nul
我正在我的 XP-32 中使用 DX9 开发一个工具绘制图元。 在创建顶点缓冲区和索引缓冲区时,可能会出现一些创建失败的错误。 返回码可以是 D3DERR_OUTOFVIDEOMEMORY 或 E_O
我是 directshow 的新手,正在使用 DirectShow 示例“FrameGrabberDemo”,但在获取图像时遇到了问题。我尝试使用 .avi 和 .mpg,两者都给出了同样的问题。 第
在我的 Unity 游戏中,我必须通过 native 代码修改大量图形资源,如纹理和顶点缓冲区,以保持良好的性能。 当代码在很短的时间内多次调用 ID3D11ImmediateContext::Map
我有一个 BHO(Internet Explorer 扩展),我正在尝试将“data:image/png;base64, [code]”(base64 编码图像缓冲区)设置为 IHTMLImgElem
我是一名优秀的程序员,十分优秀!