• 締切済み

キーの入力をVBで受けたいんです。

VBで簡単な業務支援をしたいと思っています。 VBのアプリケーションがアクティブになっていなくても(起動はしてる)、あるキーの入力を感知して、VBがアクティブになりイベントが動くような処理はできないでしょうか? できればVBでやりたいのですが、Windowsの機能やAPIを使ってでもかまいませんので方法がありましたら教えてください。

みんなの回答

  • Good-S15
  • ベストアンサー率33% (149/439)
回答No.3

こんにちは。 プログラマとして6年程勤務した者です。 APIでもよいということなので、 参考までに・・・。 マウス :GetCursorPos キーボード:GetAsyncKeyState あと、先の回答された方がおっしゃっているように 文化オリエント社のSpyWorksを使用するという 方法も「あり」かなぁと思います。

  • itohh
  • ベストアンサー率45% (210/459)
回答No.2

こんにちは。itohhといいます。 簡単な業務支援ですか... プログラムは難しいですよ!! 例えば、Wordで文書を編集しているときに「F1]キーを押下したらExcelが起動する、ことを考えてみましょう。 まず、Wordのキー入力を監視するのですが、このとき、WordのWindowのハンドルを取得しなければいけません。 それから、ハンドルに飛んでくるメッセージをWordにわたる前にのぞき見して「F1]キーが押下されたというメッセージならば乗っ取ります。 (乗っ取ってExcelを起動する) VBには、上記の機能を実現するメソッドは存在しません。(たぶん...) そのため、Win32APIを駆使して行います。または、メッセージをフックするActiveXを使います。 (自分以外のメッセージを横取りするものは、フリーでは無いかもしれません) わたしが、知っているメッセージをフックするActiveXは、文化オリエント社のSpyWorksです、ただ、これも自分以外のメッセージまでフックできたか忘れてしまいました。

  • shigatsu
  • ベストアンサー率26% (511/1924)
回答No.1

キーフック(kehook)なんてキーワードを使ってヘルプとかインターネットとかで探してみてください。 ちょっとVBでの具体例は思いつきません。

関連するQ&A

  • VB5で他のアプリケーションへのキー送信

    アクティブなウインドウへのキー送信は出来るのですが、アクティブでないウインドウへの送信が出来ません。 ウインドウがアクティブ・アクティブを問わずに目的のアプリケーションにAPIのkeybd_eventで送信する場合はどうすればいいのでしょうか?

  • VBで、非アクティブでも入力を受け取る

    VBをやっている中学生です。 いま、ウインドウ上にキーボードのカタチをしたものを表示させ、ユーザーが押したキーに応じてそのどこかのキーの色が変わるというソフトを作成しようと思っています。 それにあたっていくつか質問があります。 1.VBでウインドウを常に最善面に表示する方法を教えてください 2.ウインドウがアクティブになってなくても、キーさえ押されればその入力を受け取る方法を教えてくださ い。 ちなみに、キーが押されている間だけ色をかえさせたいので  KeyDownと KeyUpを利用しようと思っています。 回答よろしくお願いします。

  • VB6でシャットダウン、ログオフを感知

    VB6でwindowsがシャットダウン、ログオフ、再起動する前に特別な処理をしたいのですがVB6シャットダウンを感知する方法がわかりません(ToT) 知っている方がいましたら教えて下さいよろしくお願いします。 ※windowsは2000proです。

  • 他のアプリからVBのFormへフォーカスを戻したい。

    「他のアプリケーションにフォーカスがある場合に、 ショートカットキー(例:Ctrl+a)を押すと、 VBのFormへフォーカスが移る」ということをVBでプログラムしたいのですが、APIを使うのでしょうか? VBのイベントなどを使用したプログラミングの経験はあるのですが、APIの使い方は分かりません。 どなたか教えてください。よろしくおねがいします。

  • VB.NETでフォームがない状態でキー入力を受け付けたいです。

    VB.NETなのですが、Visible=Falseでフォームを見えないようにして 他のアプリを使用中でもキー入力を受け付けて、 そのキーに応じた動作をするプログラムを考えているのですが、 フォームがない状態でキーを受け付けるということはできるでしょうか? 大まかな方法でもかまいませんので、教えて頂きたいです。 よろしくおねがいします。m(__)m

  • ファンクションキーについて

    現在、VBであるアプリケーションを作成しています。 ほぼ完成してきているので、ファンクションキーでイベントを起こしたいと思い、設定途中です。 しかし、設定しているファンクションキーを押すとイベントがうまく実行できるのに、間違えて先にF10を押してしまうと、動かなくなります。(一時停止のような状態。) もう一度、F10を押せば解除できるのですが・・・ どうしたらF10を機能不可にできるでしょうか? [私が使用しているPCはノートなのですが、キーに停止マーク■がついています。これでしょうか??]

  • VB2005によるプリンタ制御について

    現在、VB6⇒VB2005のコンバージョン作業を行っています。 そこで、今まで使っていたプリンタ制御用のAPIで「OpenPrinter」「EnumJobs」「SetPrinter」を利用し、 対象プリンタのエラー等で溜まったジョブの削除を行っていました。 しかし、VB2005になり、これらのAPIをうまく使う事が出来ないでいます。 今回、やりたい事は、「指定したプリンタのジョブを削除する」という処理を行いたいと思っています。 VB2005でこれらのAPIの使い方を教えて頂けないでしょうか? 又は、.NETのクラスでプリンタのジョブ削除をやってくれる機能が あれば教えて頂きたいと思っています。 よろしくお願いします。

  • VB2005でのWithEventsについて

    お世話になります、当方現在データベースアプリをVB2005proで作成しているのですが、VB6→VB2005への更新です。 VB6の時は複数プログラムで作成したため、あえて、アップグレードウィザードを使用せずに作成しております(デザインも変更したい為) それで、今回質問させて頂きたいのは、複数のフォームに貼り付けたボタンイベントを同じ処理で分岐できないかどうか教えて頂きたいのです。 具体的にはフォームにボタンを5個ほど用意して。フォームのクリックイベントでF1キーが押されたらButton1_Clickイベント、F2キーが押されたらButton2_Clickイベント などのショートカット機能を実装したいのです。 VB6の場合は共有クラスにWithEventsでForm型を宣言して、Load時にロード元のフォームをWithEventsのフォーム型にセットすればイベントを認識してくれたと思うのですが。同じことを.NETで行っても、イベントをハンドルしてくれませんでした。 .NETでは各フォームイベント毎に記述するしかないのでしょうか? 初心者の質問で申し訳ありませんが、何卒よろしくお願いいたします。

  • VB6のアプリで、非アクティブの状態でキープレビューする方法

    教えてください。 VBで作成したアプリで、アイコン・最小化状態もしくは非アクティブ状態で、キーボードからの入力を先取り、認識する方法は無いでしょうか? (他のアプリケーションでの操作画面をキャプチャして、保存したいのです。従って、他のアプリケーションがアクティブになっています。そのような状態の中で、あるキー入力を先取り、認識して処理したいものです)

  • VBでDosコマンドを動かすには

    VB6でDosのコマンドを入力して実行させたいと思っているのですが、どのように設定すればいいのでしょうか? わざわざVB6からDosプロンプトを起動させるわけではございません。 理想ではテキストボックスにコマンドを入力してボタンを押すと実行すると言う形にしたいのですが・・・。 ご存知の方ご指導よろしくお願いします たぶんAPIを使うのだと思いますがAPIまだまだ知識不足なので、分かりやすく解説していただければ助かります。 よろしくお願いします。