小编Pie*_*345的帖子

Java JNA 获取桌面项位置

目标

获取桌面项目/图标的桌面坐标。

试图

我已经获得了 SysListView32 窗口句柄,其中包含使用以下命令的桌面图标:

HWND hWnd_Progman = User32.INSTANCE.FindWindow("Progman", "Program Manager");
HWND hWnd_SHELLDLL_DefView = User32.INSTANCE.FindWindowEx(hWnd_Progman, null, "SHELLDLL_DefView", null);
HWND hWnd_SysListView32 = User32.INSTANCE.FindWindowEx(hWnd_SHELLDLL_DefView, null, "SysListView32", "FolderView");
Run Code Online (Sandbox Code Playgroud)

我已经获得了桌面项目数:

LRESULT result = User32.INSTANCE.SendMessage(hWnd_SysListView32, LVM_GETITEMCOUNT, new WPARAM(), new LPARAM());
long desktopIconCount = result.longValue();
Run Code Online (Sandbox Code Playgroud)

我已设置桌面项目位置(验证 SysListView32 是桌面项目的正确列表视图)。传递的 x 和 y 坐标与从最左边显示器的左上角到桌面项目左上角的偏移量相对应。代码:

int itemIndex = 0; // Allows 0 to desktopIconCount - 1.
int x = ...;
int y = ...;
LRESULT res = User32.INSTANCE.SendMessage(hWnd_SysListView32, LVM_SETITEMPOSITION, new WPARAM(itemIndex), new LPARAM((x & 0xFFFF) | (y << …
Run Code Online (Sandbox Code Playgroud)

java desktop icons position jna

5
推荐指数
1
解决办法
527
查看次数

如何使用ASM进行字节码转换后定义类(类文件版本0.0)

我无法在使用 ASM 库修改字节码后加载类。

这里是恒等变换器,我希望得到与字节一大小相同的修改后的数组,但它短两倍!(439 比 278)

    String path = SimpleClass.class.getName().replace(".", "/") + ".class";
    ClassLoader classLoader = SimpleClass.class.getClassLoader();
    InputStream is = classLoader.getResourceAsStream(path);

    byte[] bytes = IOUtils.toByteArray(is);

    ClassReader reader = new ClassReader(bytes);
    ClassWriter writer = new ClassWriter(reader, 0);
    byte[] modified = writer.toByteArray();
Run Code Online (Sandbox Code Playgroud)

无法加载并没有什么了不起的。我怀疑标头被截断,但两个数组中的第一个字节是相同的。

-54, -2, -70

static class ByteClassLoader extends ClassLoader {
    public Class define(String name, byte[] body) {
        return defineClass(name, body, 0, body.length);
    }
}

ByteClassLoader myLoader = new ByteClassLoader();
Class myClass = myLoader.define("Ooo", modified);
Run Code Online (Sandbox Code Playgroud)

失败并出现错误:

java.lang.UnsupportedClassVersionError: Ooo has been compiled …
Run Code Online (Sandbox Code Playgroud)

java jvm java-bytecode-asm

2
推荐指数
1
解决办法
1405
查看次数

标签 统计

java ×2

desktop ×1

icons ×1

java-bytecode-asm ×1

jna ×1

jvm ×1

position ×1