- PR -

Web上からWindowsAPIを使用するアプリケーションの実装方法について

1
投稿者投稿内容
PAL
ベテラン
会議室デビュー日: 2002/11/14
投稿数: 63
投稿日時: 2005-05-31 12:36
現在、以下の環境でWebアプリケーションを開発しています。
WebSphere4.0.5 + J2EE1.3

上記の環境で、今度Webアプリケーション上でクライアントPCにインストールされたフォントの情報を取得する処理を実装しようとしています。
その場合、クライアントでWindowsAPIを取得する処理が必要となるわけですが、現状であれば一番楽に実装できる方法は何になるかアドバイスを頂けないでしょうか?

私が調べた限りでは、上記条件から実装方法として浮上してくるのは、以下の通りです。

(1)C++でActiveXコントロール(OCX,DLL)の作成及びJ2EE環境への配置
(2).NETで、ノータッチデプロイメントの作成及びJ2EE環境への配置
(3)Java Appletの作成及び配置
(4)Macromedia Flex等からのAPI呼び出し。


私が現在保有している開発環境は、VS6.0,VS.NET2003,Eclipseです。
(1)は、C++でActiveXコントロールを作成するための知識が足りず、これが最適であれば、まず書籍を探す所から始めます。(開発環境は主に、Webアプリの開発で使用していました)
(2)については、クライアントに.NETが必要なので、あまり採用したくありません。
(3)については、最近聞かないので、実際どうなのかな?と思っています。
(4)については興味深々なのですが、WindowsAPIを呼べるか少し疑問
と言った所です。

もしかしたら、質問自体が的を得ていないのかも知れませんが、こういう方法の方がよいよ、とかまずココを参照しなさい、などの情報がありましたらお教え下さい。
よろしくお願いします。
びしばし
大ベテラン
会議室デビュー日: 2002/03/13
投稿数: 181
投稿日時: 2005-05-31 13:49
引用:

PALさんの書き込み (2005-05-31 12:36) より:
(3)Java Appletの作成及び配置



Applet 上で GraphicsEnvironment#getAllFonts() を実行するとどうなるのか興味があります。様々なクライアントでの実験結果をフィードバックしていただけますか。

コード:
public static void main(String[] args) {
  Font[] fonts = GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts();
    for(int i = 0; i < fonts.length ; i++) {
      System.out.println(fonts[i].getFontName()); // 適宜変更のこと
    }
  }
}

syousuke
会議室デビュー日: 2002/09/27
投稿数: 19
投稿日時: 2005-06-02 21:05
一番簡単なのは、案(1)のC++でのActiveXでの実装だと思います。
ActiveXを作成する場合、ATLを利用した場合、ちょっと難しいですが、
MFCを利用すればいいのではなかと思います。
それ以外の案は、やはり.NETやFLASH等がインストールされているかの
クライアント環境が問題となると思います。
(まあ、ActiveXもブラウザはIEということになるとお思いますが...)
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-06-02 23:03
びしばしさん

アプレットでなくて申し訳ないのですが、
WindowsXP Eclispe3.0.2 JDK1.4.2_08で実行してみました。
どうやらWindowsアプリケーションで使用可能なフォントは
すべて取得できているみたいです。

アプレットはやったことがないので、ごめんなさい・・・
私もアプレット環境の中でどのように取得されるのか興味があります。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-06-02 23:07
そのままズバリなものを発見しました。

http://homepage1.nifty.com/kodayan/java2/data04/apt429.html

アプレットでも同様にフォントが取得できそうですね。
PAL
ベテラン
会議室デビュー日: 2002/11/14
投稿数: 63
投稿日時: 2005-06-03 15:12
返答が遅れて申し訳ありませんでした。

For びしばしさん
JavaAppletについては、びしばしさんのソース及びGoogleからの検索で大体分かりました。
びしばしさんのソースも動作確認できました。
ただ、びしばしさんの要望である、色々なプラットフォームでの確認は出来ません。
手元にある、WindowsXPSP2で動作確認したのみです。

For かつのりさん
私もEclipseで確認しています。
アプレットとしてのソースは以下の通りです。
コード:
import java.applet.Applet;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.GraphicsEnvironment;
public class ap2 extends Applet {
	public void paint(Graphics g) {
		Font[] fonts = GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts();
		for (int i = 0; i < fonts.length; i++) {
			g.drawString(fonts[i].getFontName(), 50, 30 + i * 10);
			System.out.println(); // 適宜変更のこと
		}
	}
}


For かつのりさん
ありがとうございます。
参考にさせて頂きました。フォント系はこれでバッチリデスね。

For syousukeさん
「フォントの取得」と言う要件が無くなって、Javaアプレットではアクセスが許されないWindowsAPIの値を使用したい、となるとやはりそうなりますか・・・・
ただ、今回投稿をする前にActiveX(ATL?MFC)を作成する方法を色々探したのですが、いまいち難しい話ばかりで、実際にActiveXは作れなかったんです。
もしよろしければ、参考とすべき書籍、URL等教えて頂けないでしょうか?
※アプレットは、「アプレット」で検索するとそのものズバリ何ですが、ActiveXは、色んな情報がヒットして探せませんでした。(コンポーネントの作り方とか・・・)

以上、様々な投稿ありがとうございます。
引き続き、そもそもの
クライアントでWindowsAPIを取得する処理が必要となるわけですが、現状であれば一番楽に実装できる方法は何になるかアドバイスを頂けないでしょうか?
について、ご意見等ありましたら、お教え下さい。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-06-03 20:50
C++もいいかもしれませんが、結構難しいと思います。
(私はCがわかってもWindowsのVC++はわからない・・・)

VBでもActiveX DLLが作れますし、Win32APIも使えます。
VBが一番敷居が低いような気がします。
1

スキルアップ/キャリアアップ(JOB@IT)