怎么得到java句柄传给dll呢???? 怎么得到java句柄传给dll呢???? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 借花献佛,网上找的package win32;public class Win32 { public static native int getWindowHandle(Component c);}/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header for class win32_Win32 */#ifndef _Included_win32_Win32#define _Included_win32_Win32#ifdef __cplusplusextern "C" {#endif/* * Class: win32_Win32 * Method: getWindowHandle * Signature: (Ljava/awt/Component;Ljava/lang/String;)I */JNIEXPORT jint JNICALL Java_win32_Win32_getWindowHandle (JNIEnv *, jclass, jobject);#ifdef __cplusplus}#endif#endif#include<windows.h>#include <jni.h>#include <jawt.h>#include <jawt_md.h>HMODULE _hAWT = 0;JNIEXPORT jint JNICALL Java_win32_Win32_getWindowHandle (JNIEnv * env, jclass cls, jobject comp){ HWND hWnd = 0; typedef jboolean (JNICALL *PJAWT_GETAWT)(JNIEnv*, JAWT*); JAWT awt; JAWT_DrawingSurface* ds; JAWT_DrawingSurfaceInfo* dsi; JAWT_Win32DrawingSurfaceInfo* dsi_win; jboolean result; jint lock; //Load AWT Library if(!_hAWT) //for Java 1.4 _hAWT = LoadLibrary("jawt.dll"); if(!_hAWT) //for Java 1.3 _hAWT = LoadLibrary("awt.dll"); if(_hAWT) { PJAWT_GETAWT JAWT_GetAWT = (PJAWT_GETAWT)GetProcAddress(_hAWT, "_JAWT_GetAWT@8"); if(JAWT_GetAWT) { awt.version = JAWT_VERSION_1_4; // Init here with JAWT_VERSION_1_3 or JAWT_VERSION_1_4 //Get AWT API Interface result = JAWT_GetAWT(env, &awt); if(result != JNI_FALSE) { ds = awt.GetDrawingSurface(env, comp); if(ds != NULL) { lock = ds->Lock(ds); if((lock & JAWT_LOCK_ERROR) == 0) { dsi = ds->GetDrawingSurfaceInfo(ds); if(dsi) { dsi_win = (JAWT_Win32DrawingSurfaceInfo*)dsi->platformInfo; if(dsi_win) { hWnd = dsi_win->hwnd; } else { hWnd = (HWND) -1; } ds->FreeDrawingSurfaceInfo(dsi); } else { hWnd = (HWND) -2; } ds->Unlock(ds); } else { hWnd = (HWND) -3; } awt.FreeDrawingSurface(ds); } else { hWnd = (HWND) -4; } } else { hWnd = (HWND) -5; } } else { hWnd = (HWND) -6; } } else { hWnd = (HWND) -7; } return (jint)hWnd;据说 如果是64位的,需要将返回类型改为long 大哥, 请看http://bbs.csdn.net/topics/390344380?page=1#post-393458923 不我想要的是直接在java中把HAND传给dll啊, 不是在dll中转换啊 上面这个是转换的,我一样不会用, handle是windows相关的,java里面没有直接的api来获取,利用上面的办法用native的方法获得然后在java中使用,上面是获取,是在c里面获取,否则你没什么其他办法 jsp中的内置对象out.print方法和response.getWrite().print()有什么区别 进销存管理系统 myeclipse6.0要安装那个版本的SWT designer? severlet提交的问题 这个异常怎么解决,我在网络找了很多种方式,还是不能解决,大家帮我看看 求WEBSERVICE的实例 CSRF跨站伪造请求漏洞 求解 关于javadoc的 servlet无法正确调用sql server2000的存储过程? 求救 无刷新分页 关于spring data jpa 一个小问题
package win32;
public class Win32 {
public static native int getWindowHandle(Component c);
}/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class win32_Win32 */#ifndef _Included_win32_Win32
#define _Included_win32_Win32
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: win32_Win32
* Method: getWindowHandle
* Signature: (Ljava/awt/Component;Ljava/lang/String;)I
*/
JNIEXPORT jint JNICALL Java_win32_Win32_getWindowHandle
(JNIEnv *, jclass, jobject);
#ifdef __cplusplus
}
#endif
#endif#include<windows.h>
#include <jni.h>
#include <jawt.h>
#include <jawt_md.h>HMODULE _hAWT = 0;JNIEXPORT jint JNICALL Java_win32_Win32_getWindowHandle
(JNIEnv * env, jclass cls, jobject comp)
{
HWND hWnd = 0;
typedef jboolean (JNICALL *PJAWT_GETAWT)(JNIEnv*, JAWT*);
JAWT awt;
JAWT_DrawingSurface* ds;
JAWT_DrawingSurfaceInfo* dsi;
JAWT_Win32DrawingSurfaceInfo* dsi_win;
jboolean result;
jint lock; //Load AWT Library
if(!_hAWT)
//for Java 1.4
_hAWT = LoadLibrary("jawt.dll");
if(!_hAWT)
//for Java 1.3
_hAWT = LoadLibrary("awt.dll");
if(_hAWT)
{
PJAWT_GETAWT JAWT_GetAWT = (PJAWT_GETAWT)GetProcAddress(_hAWT, "_JAWT_GetAWT@8");
if(JAWT_GetAWT)
{
awt.version = JAWT_VERSION_1_4; // Init here with JAWT_VERSION_1_3 or JAWT_VERSION_1_4
//Get AWT API Interface
result = JAWT_GetAWT(env, &awt);
if(result != JNI_FALSE)
{
ds = awt.GetDrawingSurface(env, comp);
if(ds != NULL)
{
lock = ds->Lock(ds);
if((lock & JAWT_LOCK_ERROR) == 0)
{
dsi = ds->GetDrawingSurfaceInfo(ds);
if(dsi)
{
dsi_win = (JAWT_Win32DrawingSurfaceInfo*)dsi->platformInfo;
if(dsi_win)
{
hWnd = dsi_win->hwnd;
}
else {
hWnd = (HWND) -1;
}
ds->FreeDrawingSurfaceInfo(dsi);
}
else {
hWnd = (HWND) -2;
}
ds->Unlock(ds);
}
else {
hWnd = (HWND) -3;
}
awt.FreeDrawingSurface(ds);
}
else {
hWnd = (HWND) -4;
}
}
else {
hWnd = (HWND) -5;
}
}
else {
hWnd = (HWND) -6;
}
}
else {
hWnd = (HWND) -7;
}
return (jint)hWnd;
据说 如果是64位的,需要将返回类型改为long