[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends] Re: JNIの書籍




>  こんばんわ。高橋です。

高橋(智)さん復活ですね。:-)
シェアウエアが完成したのですか?

>  なんだか JNIな方面に興味津々のようですね。(^^;

「JNI は面白そうだけど仕事で使うときになったら読もう」と思っていて、
さっそく仕事で使うはめに陥っています。^^;

(でも VC++&MFC で OpenGL を使うより、
Java2&Java3D で JNI を使う方がまだ幸せだあ... ;->)

>  Win32 コンソールアプリケーションで"なくても"、利用できま
>すよ。

え、本当ですか。

>  前者についてはちょっと調査してみます。
>  なかなか時間がありませんが...

どうも済みません。

>  後者については何かデモでも作成して見せていただけませんでしょうか?
>  (忙しいのは知ってるので無理はしないでくださいね) 

ええと、Java2COM のある http://www.nevaobject.com/ にサンプルがあります。

http://www.nevaobject.com/java/java2com/AM.java 
http://www.nevaobject.com/java/java2com/Excel8.zip ←なぜかこれはダウンできない
http://www.nevaobject.com/java/java2com/XL.java ← Excel の OLE オートメーションのデモ
http://www.nevaobject.com/java/java2com/XL2.java
http://www.nevaobject.com/java/java2com/j2com-cc.htm
http://www.nevaobject.com/java/java2com/j2com.zip ←これにサンプル一式入っています。
http://www.nevaobject.com/java/java2com/j2comtest.zip
http://www.nevaobject.com/java/java2com/java2commain.htm
http://www.nevaobject.com/java/java2com/jcoro-cc.htm
http://www.nevaobject.com/java/java2com/olemsg32.zip

上記は UrlRetriever アタックの成果です。^^;

私がやりたかったのは、

 1. Java アプレットの中で OLE コントロールを使ってグラフィック表示する
   
           Javaアプレット
   +------------------------------------------------+
   | +--------------+                               |
   | |  Java3Dの    |                               |
   | |  描画エリア  |                               |
   | |              |   OLEコントロールで地図を描画 |
   | |              |    +-----------------------+  |
   | |              |    |       ┌───┐      |  |
   | |              |    | ■□■│  駅│□■□|  |
   | |              |    |       └───┘      |  |
   | |              |    |      ││             |  |
   | |              |    |    ─┘└―――――― |  |
   | |              |    |    ─┐┌―――――― |  |
   | |              |    |      ││             |  |
   | +--------------+    +-----------------------+  |
   +------------------------------------------------+
 
  この OLE コントロールは、下記でダウンできます。

  「MapObjects」
   http://www.esri.com/software/mapobjects/mapobjectseval.html

   Shapefile という地形図ファイルの仕様は公開されているので、
   時間があればこれを読む JavaBeans を書くところですが...

2. それがだめなら、Java3D アプレットを Win32 MFC アプリケーションで
    ロードして表示する

           Win32 MFC アプリケーション
   +------------------------------------------------+
   | +--------------+                               |
   | |  Java3D      |                               |
   | |  アプレット  |                               |
   | |              |   OLEコントロールで地図を描画 |
   | |              |    +-----------------------+  |
   | |              |    |       ┌───┐      |  |
   | |              |    | ■□■│  駅│□■□|  |
   | |              |    |       └───┘      |  |
   | |              |    |      ││             |  |
   | |              |    |    ─┘└―――――― |  |
   | |              |    |    ─┐┌―――――― |  |
   | |              |    |      ││             |  |
   | +--------------+    +-----------------------+  |
   +------------------------------------------------+

というようなことです。

でも 1 は無理かも知れません。
と言うのも、この MapObjects の MapObjects.h には、

MapObjects.h (一部)
==========================================================
    12	class MoMap : public CWnd
    13	{
    14	protected:
    15		DECLARE_DYNCREATE(MoMap)
    16	public:
    17		CLSID const& GetClsid()
    18		{
    19			static CLSID const clsid
    20				= { 0x4eed4f00, 0xf388, 0x11ce, { 0xb3, 0xac, 0x88, 0xc8, 0x1, 0xc1, 0x0, 0x0 } };
    21			return clsid;
    22		}
    23		virtual BOOL Create(LPCTSTR lpszClassName,
    24			LPCTSTR lpszWindowName, DWORD dwStyle,
    25			const RECT& rect,
    26			CWnd* pParentWnd, UINT nID,
    27			CCreateContext* pContext = NULL)
    28		{ return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID); }
    29	
    30	    BOOL Create(LPCTSTR lpszWindowName, DWORD dwStyle,
    31			const RECT& rect, CWnd* pParentWnd, UINT nID,
    32			CFile* pPersist = NULL, BOOL bStorage = FALSE,
    33			BSTR bstrLicKey = NULL)
    34		{ return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID,
    35			pPersist, bStorage, bstrLicKey); }
 ==========================================================

CWnd* などを引数にとるコンストラクター(みたいなの)があるのです。
Java からどうやって HWND (ウインドウハンドル) やら
HDC (デバイス・コンテキスト・ハンドル) やら
CWnd* やらを取得すれば良いのでしょう。(x_x)

>P.S.
>  クライアントに特定のDLLがインストールされていることを利用した
>Javaのウイルスが出現しないことを祈ります。

クラスローダーを利用して Java VM に寄生する .class ウイルスが
発見されたのではなかったでしたっけ。
世界中のワクチンメーカーも Java VM や JNI をハッキング中と思います。
------------------------------------------------------------------
遠藤靖之 (えんどう やすゆき) <yasuyuki@xxxxxxxxxx>
http://www.freepage.total.co.jp/jfriends/ (Java互助会ホームページ)
株式会社タイムインターメディア 情報通信サービス部 TEL 03-5362-9009
〒162-0065 新宿区住吉町3-11 新宿スパイアビル8F    FAX 03-5362-9008