• ベストアンサー

他のアプリケーションの動作を監視するには?

C++初心者です。 現在VC++.NETで以下の機能を実装しようと考えています。 ・他アプリケーション(ブラウザなど)への操作(ウィンドウの移動など)を検知 この機能を実現するためグローバルフックやシステムフックと呼ばれる機能を使おうと考えていますが、非常に上級者向けの技術と言うことで少し躊躇しています。 そこで、経験者の方にお聞きしたいのですが、この機能を実装するためにフックを使う事は妥当でしょうか? もちろん必要であるならば一生懸命勉強しますが、いま現在「もしかしたら他にもいい方法があるんじゃないか?」という考えが頭をよぎりなかなか集中できません。 よろしくお願いします。

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

  • ベストアンサー
  • Layle
  • ベストアンサー率75% (6/8)
回答No.1

この手の事にそこまで詳しいわけではありませんが、私個人としては妥当ではないかと思います。 アクティブウィンドウの変化程度ならほかに方法があると思いますが、ご提示いただいた機能では他アプリケーションの操作の様な他アプリ無いの細かな操作部分が含まれるので、ウィンドウメッセージを盗み見るのが一番手っ取り早いと思います。 今回の目的とは異なりますが、私は以前にブラウザに表示されたコンテンツをコピーされないように、メッセージをフックしてコピー操作に関連するメッセージを破棄するような事に使いました。

ikasumiramen
質問者

お礼

ご回答ありがとうございます。 すでにブラウザに対するフックを使ったことがある方の回答ということで非常に背中を後押ししていただきました。 コピー機能の破棄ですか、システムフックは失敗すると危険な機能らしいですがうまく使いこなせれば出来ることの幅が一気に広がりそうですね!! 頑張って勉強します。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBアプリケーションからのVCモジュールの呼び出し

    VBでアプリケーションを作成しようと考えているのですが、一部VBでは実現できない機能があります。その部分はVCでは実現できるようです。 そこで、VCで作成した機能をVBのアプリケーションから呼び出して使用したいと考えています。 このように、VCで作成したモジュールをVBで呼び出して使用するということは、可能なのでしょうか。 よろしくお願いします。

  • 他のアプリケーションの起動と終了のログをとりたい。

    SetWindowsHookExを使ってWindowsメッセージをフックし、 他のアプリケーションの起動と終了のログを取ろうと思っているのですが、 使用するフックタイプと起動と終了を意味するメッセージの種類がわからずに困っております。 ついでにアプリの起動を検知した後にそのアプリのプロセスIDを取得したいのですがどのようにすればよいでしょうか? よろしくお願いします。

  • VC++で他のアプリケーションを制御する方法

    こんにちは。 VC++で他のアプリケーションを制御するにはどうすればいいのでしょうか? 例)インターネットエクスプローラのツール/オプションでできるホームページアドレス設定を、直接モニタおよび変更するプログラムを作りたい。 当方VC++勉強中のため、上記のようなことがどれくらい難しいのか知っておきたいと思い、質問させて頂きました。 たぶん、難しい回答を頂いても、チンプンカンプンと思いますので、やろうとしていることの難易度とこれらをするために勉強しなくてはいけないことを教えていただければ助かります(参考HP、書籍等)。 よろしくお願いします。 当方のレベル 初心者(Cの基本的知識はあるが、VC++は現在勉強しはじめ) 使用環境 VC++.NET,WINDOWS_XP

  • アプリケーションの起動について

    現在、windows vista home premiumを使用していますが、ブラウザやワードなどのよく使うアプリケーションは全てウィンドウを最大化して使っています。しかし、頻繁にデスクトップに登録しているショートカットからもアプリケーションを起動するため、いちいち全てのウィンドウを閉じなければならないので面倒です。しかしクイックランチャに登録するのはパフォーマンスが低下しそうなので躊躇してしまいます。何か解決策はありますでしょうか。

  • 外部アプリケーションの呼び出し方

    現在VC++6.0を使いプログラミングを行っています。 PCの環境はウィンドウズ2000です。 現在アプリケーションを作成しており、メニュー画面にボタンを作りそこから外部のアプリケーションを呼び出し作業したいと考えています。 少し調べたところCreateProcess()を使うことによってできることがわかりました。しかしメモ帳のテキストファイルの呼び出しはですが、現在実際に呼び出したいアプリケーションを呼び出すことがうまくいきません。また呼び出したいアプリケーションは今はディスクトップ上にあります。 またその他何かよい方法があればよかったら教えて頂けないでしょうか? プログラミング初心者なので質問の説明で不十分な点があるかもしれませんがどうぞよろしくお願い致します。

  • VC++2010 エディットボックスのリードオンリ

    現在は私はVC++2010 MFCでアプリケーションを開発しています。 エディットボックスのプロパティにリードオンリーの機能があるんですが、 プログラムで実現しようとするとどのようにしたらよろしいのかわかりませんでしたので 質問させていただきました。 ではよろしくお願いします

  • アンドロイドによる通話アプリケーション作成

    はじめまして。質問させていただきます。 アンドロイドによるプログラム作成をしております。実現したいアプリケーションの機能に「電話をかける」と「call状態から相手との通話が開始された状態の取得」が必要です。 電話をかけることはできたのですが、相手との通話が開始、つまりフックされたタイミングを取得できません。callが開始されたタイミングはTelephonyManagerとPhoneStateListenerのonCallStateChangedを使って取得できたのですが・・・これだと通話のための発信タイミングしか取れず、フックタイミングと異なり、したいことから若干ずれます。 通話が開始されたタイミングの取得はできないでしょうか? (なお着信時ではなく、あくまで発信時のことです) お知恵をお貸しください。

  • windowsフォームアプリケーションについて

    windowsフォームアプリケーションについて 現在VC++のwindowsフォームアプリケーションを使ってマウスのみで作業ができる環境を作ろうとしてます。 その際に他のプログラムで作成した実行ファイルを外部アプリケーションとして system("C:\\~~\\--.exe") で表示させることに成功しました。 しかしこの実行ファイル(VC++で作成)はwhileループを用いているため途中で終了させることはできない仕組みになっています。 そこでこのwhileループを用いた実行ファイルをwindowsフォームアプリケーションのボタンクリックしたら終了するようなプログラムを作成したいのですがネットなどで調べてもコマンドが分からずに困っています。 アドバイスいただける方よろしくお願いします。

  • データベース付きアプリケーション、構築方法にご意見下さい。

    データベース付きアプリケーション、構築方法にご意見下さい。 小規模社内用システムの作成を考えています。 機能としては掲示板的なものをDBを使って作ろうと考えています。 会社のPCはオフィス、オープンオフィス、IE等入っています。 サーバーで処理するような仕組みは難しいので、 php,cgi等を用いたWEBアプリケーションでの実現は難しいです。 アプリの追加も難しいです。 Accessによる実装が現実的だと思いますが、現時点で技術がありません。 また、自宅ではAccessが無いために習得が困難です。 自宅PCはLinuxでopenoffice,VB等を使う環境は出来ます。 windowsもありますが、標準のソフト、フリーソフトしかありません。 基本的な技術は自宅で習得して、実際のシステムとしては会社で完成させる必要があります。 自宅環境でおおよその部分を作り、それを元に会社で構築するにはどのようにするのが現実的でしょうか。 VB的なものでフロントエンドを完成させて、環境に合わせてDBを切り替えることを検討していますが、移植性等を考えると有効でしょうか。 妙な条件とは思いますが、ご意見、ご提案をお願いします。

  • インテリジェントマウス非対応アプリケーションについて

    現在フリーソフトの「どこでもホイール」を使用しているのですが、これだとVBのコード画面には機能されているみたいなんですが、他のアプリケーションだと機能しないものもあります。他に何かフリーソフトでオススメのものはありますか?「NIm95」というのも使用してみましたがこれだと他のアプリケーションは機能しますが、VBのコードの画面のところでスクロールしなかったので…どうかよろしくお願いします。