• ベストアンサー

WebアプリよりVC++で作成したEXEを呼出す方法

初めて、投稿します。よろしくお願いします。 既にVC++6.0で作成されているWindowsアプリケーションを 既に作成した自作のWebアプリケーション(Java+JSPで作成)から呼出す場合、 どのような方法を取ればよいのでしょうか? 過去のログを見ていると、ActiveXコントロールに移植する方法が考えられるようですが、 そうすると、内部の集計ロジックは使いまわせるとしても、一から作り直すことになるように思われます。 コストを抑えて、求められている機能を実現するには、どのような方法が考えられるでしょうか? アドバイスお願いします。 ※個人的には、Windowsアプリで行おうとしている処理を  すべてWebアプリで処理したほうがコストを抑えられるような気が・・・。 ≪実行/開発環境≫ ●サーバ環境  Windows2000Server SP4  IIS 5.0+J2SE1.3.1_04+Tomcat 3.3.1  SQLServer2000  既存のWebアプリケーションは、Java、JSPで作成  フレームワークとしてStrutsを採用 ●クライアント環境  WindowsXP or Windows2000  Internet Explorer 6.0  VC++6.0 ≪既存Windowsアプリの機能≫ ●既存のWindowsアプリケーションは、ダイアログベースのアプリケーション  (プロジェクト作成時、「MFC AppWizard (exe)」で「ダイアログベース」を選択)。 ●DBに接続し、指定された条件でデータを取得し、集計処理を行う。 ●集計処理後、集計結果を以下のいずれかの方法で出力。  (1)CSVファイル  (2)グラフ画面表示(MSChartを使用) ≪求められている機能≫ ●Webアプリ(Webブラウザ)からWindowsアプリを呼出す  (Windowsアプリの機能を活用したい) ●既存のWindowsアプリでは、集計条件、集計結果の出力方法は  画面より指定していたが、今回は設定ファイルから読込む。  画面から指定はしない。 以上です。

質問者が選んだベストアンサー

  • ベストアンサー
  • hidebu-
  • ベストアンサー率53% (45/84)
回答No.3

クライアント要件として、既存のWinアプリがうごいていた環境でしかつかえないという制約がつきます。 WindowsアプリはC/S方式であり、単体でネットワーク越しにDB接続ができれば、単純にWinアプリを起動してしまえばおわりですよね? つまり、ACTIVEXからWinアプリを起動すればいいと思います。 そして、ACTIVEXから起動すれば、Winアプリにフックをかけることもできますし、 Winアプリに対してActiveXからメッセージを送ることも可能かと思います。 (ハンドルを取得できますので) もちろん起動さえできれば単体で動きますので、Winアプリの機能をそのまま使いたいのであれば、 同時終了するために破棄メッセージ送るくらいだと思います。 そして、自動セットアップですが、 これに関してもActiveXに通信機能をもたせて、HTTPサーバーに接続しexeをダウンロードし、 要件にあわせてシステムに定められたクライアントの特殊フォルダ等にコピーしてしまえばいいと思います。 >既存のWindowsアプリでは、集計条件、集計結果の出力方法は > 画面より指定していたが、今回は設定ファイルから読込む。 > 画面から指定はしない。 に関してはメッセージをおくったところでどうしようもないのでWinアプリをすこしいじらないといけないとは思いますが。 2年前くらいに同じようなことをした記憶がありましたが、コストと要件をすり合わせるために思いついただけですので、とくにどこのサイトを参考にしたということはありませんでした^^; 1、WebサーバーよりActiveXをダウンロード 2、ActiveXがクライアント内の規定の場所にWinアプリが存在するか調べる。 3、なければ、ActiveXからソケット通信によりHTTPサーバーに接続しWinアプリや設定ファイルをダウンロードし、クライアントにコピーする 4、Winアプリをキックする。 5、Winアプリより先にActiveXが破棄されたときは、Winアプリに破棄メッセージを通知する といった手順になると思います。 イメージは湧くでしょうか?

PapaPapa33
質問者

お礼

詳細な説明ありがとうございます。 処理概要、処理の流れがイメージでき、大変参考になりました。 恐らく、顧客も同じイメージを持っているのではないかと思っております(同じような事例は結構あるものなのでしょうか?)。 具体的な実装方法は、MSDNなどで調べてみたいと思います。 大変助かりました。

その他の回答 (4)

  • hidebu-
  • ベストアンサー率53% (45/84)
回答No.5

補足です^^; >(同じような事例は結構あるものなのでしょうか?) 基本的にワーム等のウィルスはこの手順を基本にしてるものがおおいです。 スタートアップレジストリにEXEを登録するところと、 ActiveXを使ってダウンロードするところを、IEの脆弱性等をついてローカルにEXEを忍ばせるようにすればまさにウィルスです^^; 仕事の関係でいくと、いままでの業務プロセスを大きく変革する必要がなく、 既存のシステムに対して新しい業務プロセスを付け加える場合には、そこそこ使われている手法かと思います。 まとまった予算がでる、基幹システムごとの刷新の場合はテクノロジーを統一してのつくりかえを提案しますが、 いままでの業務プロセスに付加する形で提案する場合は、新システムへの移行のオーバーヘッドを考えると(システムのUIを変えた量に比例して、社員が新しいユーザーインターフェースの操作を覚えるコストも大きくなる)、 既存のシステムをある程度残しつつという形の提案をとるところが多いと思います。 ご参考までに。

PapaPapa33
質問者

お礼

わざわざ補足回答まで頂いたのに、 レスポンスが遅くなり申し訳ありません。 アドバイス頂いた方法、教えて頂いたサイトの情報も 参考にし、検討したいと思います。 大変ありがとうございました。

  • hidebu-
  • ベストアンサー率53% (45/84)
回答No.4

参考ですが 「1、WebサーバーよりActiveXをダウンロード」 「2、ActiveXがクライアント内の規定の場所にWinアプリが存在するか調べる。」 ここまでは普通に実装できるかと思います 「3、なければ、ActiveXからソケット通信によりHTTPサーバーに接続しWinアプリや設定ファイルをダウンロードし、クライアントにコピーする」 に関しては、ブラウザにIEを使用するのであれば、WinInetを使用するのが楽かと思います。 参考URLとして http://www.geocities.co.jp/SiliconValley-PaloAlto/1512/ http://www.geocities.co.jp/SiliconValley-PaloAlto/1512/page3.html になりますかね。 「4、Winアプリをキックする。 5、Winアプリより先にActiveXが破棄されたときは、Winアプリに破棄メッセージを通知する」 といったところは CreateProcess ShellExecute といったAPIを使用することになると思います。 参考URLとしては http://www.microsoft.com/japan/msdn/library/ja/jpdllpro/html/_win32_createprocess.asp?frame=true http://www11.ocn.ne.jp/~ikalu/win32api/0008.html http://oshiete1.goo.ne.jp/kotaeru.php3?q=1040360&rev=1 この辺を組み合わせて、少し味付けすれば大丈夫だと思います。

  • hidebu-
  • ベストアンサー率53% (45/84)
回答No.2

各クライアントに既存のWinアプリがインストールされているのであれば、工数のことを考えても流用するほうがいいかと思います。 そして、WebアプリとWinアプリをつなぐ制御用のActiveXを開発し、 そのActiveXよりクライアントのWinアプリを制御するといった方法が一番安上がりになるかと思います。 またインストールされていなくても、ActiveXを使用して、クライアント内にWinアプリがなければ、サーバーよりアプリをダウンロードしてクライアントに自動でセットアップするという芸当もできるかと思います 開発する側の論理でいけば、同じテクノロジでまとめたいという気持ちはわかりますが、 対費用効果を考えると、劇的な要件変更要求がないかぎり工数のかかる方法は避けるべきかと思います。

PapaPapa33
質問者

補足

回答ありがとうございます。 私の知識では、既存のWinアプリ自体をActiveXコントロールとして、移植するものしかないと捉えていました。 回答に挙げらて頂いた手法について、ぜひ調べてみたいと思います。 参考となるWebサイトがありましたら、教えていただけないでしょうか? よろしくお願い致します。

  • 12m24
  • ベストアンサー率23% (193/817)
回答No.1

 正直にいって、私も全部JAVAするとか、環境を統一したほうがいいと思います。極端な話ですが、Excelファイルにするのも一興です。やっていることが同じですし・・・。  もし、顧客に相談しても聞く耳を持たないとか、すでに開発してるが時間がないとかですと、今のままのほうがいいと思います。

PapaPapa33
質問者

お礼

早速の回答ありがとうございます。 やはり、そう思われますか? グラフ作成/表示については、Java用のツールがフリーであるので、それを使えそうですし・・・。 それも一つの選択肢として、検討したいと思います。

関連するQ&A

  • webアプリ作成にあたって

    現在私はWEBアプリ作成をするための勉強をしてます。eclipseでJava,Jspファイルを作成しTomcatサーバを起動し、web上で動かすという方法でやっていますが、まだまだ初心者でわからないところが多いです。 今回質問したいことは、四角を描くなどのグラフィックやマウスイベントをWEB上で実装するために何をすればいいかということです。 Webで検索をかけたのですがよくわかりません。どなたかご教授いただけないでしょうか。または、それについてわかりやすく説明してあるWEBのサイト、書籍などの紹介でもかまわないです。 よろしくお願いします。

  • VCで作成したアプリを無音に

    VCで作成したアプリを無音に いつもお世話になっております。 現在アプリケーションを作成しているのですが、 そのアプリケーションに関してはまったくの無音にしたいのですが、 そのようなことは可能でしょうか? IEコンポーネントを用いて、web表示をし、 1秒ごとにIWebBrowser2->Navigateでページを更新しているのですが 毎秒、カチッという音がしてしまい、それを消したいと思っています。 http://www.usefullcode.net/2009/04/49_tabbrowser.html のページを元にやってみたら可能だったのですが、 管理者権限を必要とするようで、ユーザー権限だと普通に鳴ってしまいました。 今回はユーザ権限でも音を鳴らすことを防ぎたいので、ほかの方法を取ることになりました。 そこで、そのアプリケーションのみを完全に無音にするというのを思いついたのですが、 そのようなことは出来るのでしょうか? また、ほかにこんな方法でも出来そうではないかという案がありましたら ご教授していただけると助かります。 以上、よろしくお願いします。 開発環境:WindowsXP SP3      VisualStudio2005 VC++ ATL/WTL (MFC無し) 目標動作環境:WindowsXP,Vista,7         まずはXPで動かせることを目標ですが、最終的にはこの3種に対応したいです

  • VC#2005で従来のWinアプリを作成するには?

    Windows2000pro-sp4,VC#2005 Express Edtionを使用しています。 VS6の頃のような従来のWindowsアプリを作成するにはどうすればよいのでしょうか? メニューから、ビルド→...の発行、とたどり、 アプリの発行場所にデスクトップを選んで完了しても、 従来のように.exeファイルが作成されのではなく、 setup.exeや*.exe.manifest,.exe.deploy,.application などが作成されます。 古い記憶では、.NETな環境では、VC++のみが従来のようなWinアプリが作れる、 とあるのですが、そうなのでしょうか?

  • JavaのWebアプリについて

    Java環境でのWebアプリケーションについて勉強しています。 たまに見かける、http://XXXX/index.jspのページから URLが変わらずにページが切替わっていく仕組はどのように作られているのでしょうか? 概要と参考になるサイとなどあれば御教示頂けないでしょうか。

  • webアプリを作成する為に勉強すべき事

    Java超初心者です。 現在、Eclipseを使用して初歩的なJavaの学習をしております。 学習の一環でJavaを使用したwebアプリを作成しようと考えています。 目標は掲示板のようなログイン、ログアウト、入力、保存、表示、削除、ができるwebアプリ を作ろうと考えています。 知識としてなにが必要なのか、Tomcat、JSP、Javaサーブレット、 など調べたり学習したりしていたのですが、環境設定の仕方が理解できなかったり して途中で行き詰ってしまいました。なにから手をつけるべきなのかわかりません。 次のステップとして何をどのように勉強するべきか教えて頂けないでしょうか。 初心者にもわかりやすいサイトなどもあれば教えて頂きたいです。 よろしくお願いいたします。

    • ベストアンサー
    • Java
  • Webアプリ開発

    サーバサイドで処理を行うサイトを作ろうと思います。 ジャンルは違いますがランサーズのように、ユーザはブラウザだけで利用できます。 http://www.lancers.jp/ ただ、サーバ側の処理が結構重たくなりますので、処理の早い言語を使いたいと 思っています。 PHPは実績があるのですが、処理が遅いのでお勧めのプログラム言語をお伺いしたいです。 C#かJAVAということになるのでしょうか? VisualBasicとは聞きませんが開発実績があるのですが、C#やJAVAの方が早いでしょうか? C#かJAVAは実は経験がありません。 C#はVisualStudioでWebアプリを作成していくのだと思っています。 JAVAはサーブレットを作成して、Eclipsを利用してWebアプリを作ると考えていますが 正しいでしょうか? C#とJAVAとVisualBasicの(処理が早く、今後のことも考えて)どれがお勧めで、開発環境はどうすれば良いかご教授願います。 初心者なのでわかりやすく教えてもらえると幸いです。 よろしくお願いします。

  • VC++  Windowsアプリケーション作成

    【VC++ 2005 ExpressEdition】使用 ●今回、上記の環境を用いて簡単なWindows用ツールでも作成しようと思っております。  実際起動し、新しいプロジェクトの開始で、Windowsフォームアプリケーションを選択したのですが、初めから様々なcppファイルやらヘッダファイルがあり、プログラムもすでに大量に書かれていてどこにWinMainがあり、どこから書いていけばよいのか分かりません。 試しにボタンをフォームデザインで作成し、ダブルクリックによりイベントを作成してみたのですが、 private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) このような文が表示されました。 過去にBolandの開発環境を使い1からウィンドウを作成したことがあり、BN_CLICKEDなどのメッセージが使われるのだろうと思っていたのですが全く意味が分かりませんでした。参考書やサイトに書いてあるプログラムもどこに書いてよいのか分かりません。 VC++でのWindowsアプリケーションの作成時の使い方をどなかた教えていただけないでしょうか。 尚、VC#、VBでのWindowsアプリケーション作成、C++でのWinAPIについては、かじった程度の経験はあります。

  • VC++2010 画面なしのアプリケーション作成

    VC++2010 画面なしのアプリケーションを作成したいんですが、VC++2010で作成する方法が調べても出てこなかったので質問させていただきました。 環境はWindows7で開発環境はVisualStudio2010 使用言語はC++です。 やりたいこととして、マイコンみたいにプログラムを組みたいと思っています。 メイン関数から始まって Wihile(1) ;で待機し SetTimer(1,1000,NULL)などのタイマ割込みで処理を行う形です。 よろしくお願いします。

  • WindowsアプリとWebアプリの違い

    現在、大学のゼミでオンラインDVDレンタルシステムを構築しています。 C#で、ASP.netを使用する、Webアプリケーションです。 管理者側の操作(在庫登録など)は、大量のデータを連続して処理する必要があるため、Windowsアプリで作成しようと思っています。 なんとなく、上記のようなことが思い浮かび、Windowsアプリのほうが使いやすいだろうな、とは思うのですが、WebアプリとWindowsアプリの根本的な違いや、具体的、技術的な違いが分かりません。 プレゼンテーションで、「WebアプリとWindowsアプリには、このような違いがあるから、管理者のシステムにはあえてWindowsアプリを用いた」 と説明したいのです。 技術的、構造的な違いも含めて、教えていただけないでしょうか?

  • VC++6 と VC++2008 で作成したモジュールについて

    VC++6 で作成したモジュールA VC++2008 で作成したモジュールB がそれぞれあるとします。  これを、CPU クアッドコアで動作させたときに モジュールBは、複数CPU対応のアプリなので 処理速度が モジュールAより、2倍~4倍も処理速度が改善することはあるのでしょうか?

専門家に質問してみよう