Dom*_*nik 1 java winapi user32 jna sendmessage
我尝试使用:
LRESULT WINAPI SendMessage(_In_ HWND hWnd, _In_ UINT Msg,
_In_ WPARAM wParam, _In_ LPARAM lParam);
Run Code Online (Sandbox Code Playgroud)
在Java中使用jna并且我不断收到错误:
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: Error looking up function 'SendMessage'
Run Code Online (Sandbox Code Playgroud)
这是我的界面:
public interface User32 extends StdCallLibrary {
Pointer GetForegroundWindow();
int SendMessage(Pointer hWnd, int msg, int num1, int num2);
Run Code Online (Sandbox Code Playgroud)
我称之为:
Pointer hW = user32.GetForegroundWindow();
user32.SendMessage(hW, 0x0201, 0, 0);
user32.SendMessage(hW, 0x0202, 0, 0);
Run Code Online (Sandbox Code Playgroud)
hWnd是对的.我的错在哪里?
JNA在user32.dll中找不到函数"SendMessage",因为没有导出该名称的函数.
这是因为SendMessage是一个旧名称,由其他编译器自动映射到函数的匹配ANSI或UNICODE版本 - SendMessageA
和SendMessageW
.
使用的工具,显示像DependencyWalker一个DLL导出的函数,你可以看到的Windows 7是user32.dll中例如只知道这两个函数SendMessageA
和SendMessageW
,但没有SendMessage
.
您使用的函数定义类似于ANSI版本,因此您应该使用它SendMessageA
.
BTW.如果您使用的是32位或64位Java和user32.dll,则没有任何区别.我写的内容对两个版本都是正确的.
归档时间: |
|
查看次数: |
3608 次 |
最近记录: |