- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试导入 GetModuleFileNameEx
在java应用程序中。函数的定义是:
DWORD WINAPI GetModuleFileNameEx(
_In_ HANDLE hProcess,
_In_opt_ HMODULE hModule,
_Out_ LPTSTR lpFilename,
_In_ DWORD nSize
);
我将其翻译成:
public abstract DWORD GetModuleFileNameEx(
WinNT.HANDLE hProcess,
WinNT.HMODULE hModule,
char[] pathName,
WinNT.DWORD pathNameSize
);
我在类中这样定义的:
import com.sun.jna.Native;
import com.sun.jna.Pointer;
import com.sun.jna.platform.win32.Kernel32;
import com.sun.jna.platform.win32.WinDef;
import com.sun.jna.platform.win32.WinNT;
import com.sun.jna.win32.W32APIOptions;
public abstract interface Kernel32Ext
extends Kernel32
{
public static final Kernel32Ext INSTANCE = (Kernel32Ext)Native.loadLibrary("kernel32.dll", Kernel32Ext.class, W32APIOptions.DEFAULT_OPTIONS);
public abstract DWORD GetModuleFileNameEx(WinNT.HANDLE hProcess, WinNT.HMODULE hModule, char[] pathName, WinNT.DWORD pathNameSize);
}
但是当我尝试调用该方法时出现错误:
java.lang.UnsatisfiedLinkError: Error looking up function 'GetModuleFileNameEx': Uvedená procedura nebyla nalezena.
我仔细检查并根据此处关于堆栈溢出和其他 JNA 程序的帖子,LPTSTR
在 JNA API 中正确地转换为 char[]
。所以肯定还有别的地方不对劲。我是导入了错误的 dll,还是使用了错误的选项?
我在 Windows 7 x64 位(捷克语,因此是非英语错误消息)上运行它。
最佳答案
在 kernel32(或其他地方)中没有这个名字的函数。请参阅 MSDN 页面以获取 GetModuleFileNameEx .您要查找的函数是 GetModuleFileNameExW
。
关于java.lang.UnsatisfiedLinkError : Error looking up function 'GetModuleFileNameEx' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43822635/
我试图从进程 ID 中获取进程名称,我使用了 GetModuleFileNameEx 并编写了这个函数。 char* ProcessName(ULONG_PTR ProcessId) { ch
我正在尝试获取所有打开进程的名称。这是我的: #include "stdafx.h" #include int WINAPI WinMain(HINSTANCE hInstance, HINS
我创建了这个函数来获取各种网络进程的路径,例如 svchost、Firefox 等。代码如下: function GetProcessPath(var pId:Integer):String; var
我正在尝试获取线程 ID 的文件路径。我希望这会起作用..但事实并非如此 NtOpenThread(@hProc, THREAD_ALL_ACCESS, @ObjAttr, @ClientID) ;
我在 64 位 Windows 10 上从 32 位进程运行以下命令: #ifndef _DEBUG WCHAR buffPath[MAX_PATH] = {0}; FARPROC p
这是我的代码: TCHAR szProcessName[MAX_PATH] = TEXT(""); GetModuleFileNameEx (hProcess, NULL, szProcessName
成功调用 CreateProcess 后,我尝试使用 GetModuleFileNameEx 获取创建的进程的路径(lpApplicationName 和 lpCommandLine 参数可以变化或为
我正在尝试导入 GetModuleFileNameEx在java应用程序中。函数的定义是: DWORD WINAPI GetModuleFileNameEx( _In_ HANDLE h
我正在使用不具备完整功能的 MinGW。例如。它没有 wchar_t 流支持。我已经设法通过编写一组小型操纵器(下面代码中的 wcusT())来解决这个问题。但我发现我再次受阻于 GetModuleF
我有这个 function NazwaProcesu(const uchwyt: Thandle): string; var pid: DWORD; hProcess: Thandle;
我正在尝试使用以下代码从 64 位应用程序中枚举 32 位进程模块名称: if (EnumProcessModulesEx(hProcess, hMods, sizeof(hMods), &cbNee
我是一名优秀的程序员,十分优秀!