我有一个c应用程序和一个java应用程序。我与jna沟通以获得c程序的结果。 我有一个jna-Callback函数:
public LRESULT callback(HWND hWnd, int uMsg, WPARAM wParam, LPARAM lParam) {
switch (uMsg) {
case WinUserConstants.WM_GRAB_BASE:
System.out.println("WM_GRAB_BASE");
return new LRESULT(1);
case WinUserConstants.WM_GRAB_TRANSFER_FINISHED:
System.out.println("WM_GRAB_TRANSFER_FINISHED");
return new LRESULT(1);
case WinUserConstants.WM_GRAB_IMAGE_SAVED:
System.out.println("WM_GRAB_IMAGE_SAVED");
return new LRESULT(1);
default:
return User32.INSTANCE.DefWindowProc(hWnd, uMsg, wParam, lParam);
}
我需要WPARAM变量。我不能将WPARAM更改为String。如果我这样做,我的窗口显示没有控件。 WPARAM定义为“包含(wchar_t *)filename的内存上的HGLOBAL”。我需要该文件名并且无法访问c代码。
答案 0 :(得分:0)
您可以使用WPARAM.toPointer().getWideString(0)
提取字符串。
toPointer()
有效地"演员"将WPARAM转换为指针值,然后可以从中提取(宽)本机C字符串。