• 締切済み

C#またはC++で

はじめまして、まっつんといいます。 VisualC#またはC++で、マウスカーソルを「アイコン」や「スタートボタン」に持っていったときに表示されるメッセージ(ヒント)のテキストを取得するAPIや方法って何かありますか? 教えてくださ~い。

みんなの回答

回答No.2

バックグラウンドスレッドを回してツールチップのハンドルをリアルタイム監視。 ツールチップのハンドルが取得できたら、そこからSendMessageで文字が取得できるとおもいますよ。 プロセス境界も飛び越えれるはずだったと記憶してます。まあ、強引ではありますが。 http://msdn.microsoft.com/en-us/library/windows/desktop/ms632627(v=vs.85).aspx

  • otu_otu
  • ベストアンサー率31% (17/54)
回答No.1

 他のアプリケーションによって発生するツールチップを取り込もうということですね。  ところで、ツールチップメッセージはどのようにして、表示されるかご存知ですか?  カーソルをボタンなどのコントロールへ持っていった際、コントロールから、TTN_NEEDTEXT通知メッセージが発生します。アプリケーションはそのメッセージを受けて、TOOLTIPTEXT構造体のあるメンバにメッセージの内容を設定すると、その情報がツールチップメッセージとなって画面上に表示される仕組みになっています。  設定はできるけど、取得する方法はわからないですね。コンポーネントや、その辺の知識が乏しいのでなんともいえませんが、よかったら参考にしてください。

関連するQ&A

  • win32APIとC(C++)を使ってカーソルがクライアント領域内に入

    win32APIとC(C++)を使ってカーソルがクライアント領域内に入ったときだけマウスカーソルが非表示になるようにしたいのですがどうしたらいいでしょうか。 今現在は、ShowCursor()という関数を使って引数をfalseにして非表示に使用としているのですがうまくいきません。 以下のように記述して実行してみると、 ShowCursor(false); MessageBox( hWnd, _T("キーダウン"), _T("メッセージ"), MB_OK ); メッセージボックスが出ている間はマウスカーソルが消えるのですが、メッセージボックスを閉じるとカーソルが自動的に再表示されてしまいます。 プログラム実行中は常にマウスカーソルを非表示にしたいのですが、どなたか教えていただけないでしょうか。

  • C#でロールオーバーはできますか?

    C#でロールオーバーはできますか? VisualC#のWindowsフォームで作っています。 ボタンの上にマウスを乗せると ある場所の画像が変わる、という動きをつけたいです。 可能でしょうか?

  • Tipsがタスクバーに隠れないようにする方法は?

    スタートボタン脇の「クイック起動」ツールバーにあるアプリケーションのアイコンにマウスカーソルを合わせると、 薄黄色の背景に黒い文字でアイコンの説明が表示されますが、これがタスクバーの下に隠れてしまうことがあります。 このTipsは常に最前面に表示されるべきだと思うのですが...。 これをなんとかする方法はありませんか?

  • マウスポインタを移動させるには

    C++でプログラムしています。 MessageBoxのOKのボタンの上にマウスカーソルを移動させるAPI関数を教えてください。

  • TextBoxのhWndプロパティVBAでも使えませんか?

    環境 OS:Win2000ProSP4 Excel2000および2002 Excel2000で、テキストボックスのあるフォームを作成しました。 選択したファイルを読み込んでテキストボックスに表示する機能があり それに加えて、テキストボックス中をマウスでクリックした時、その場 所のカーソルの位置(そこの行数と行内で何カラム目か、の2つ)を取得し て同じフォーム上に表示させる機能をつけました(矢印ボタンでカーソ ルが移動しても、位置情報を更新するようにしています)。ただし、 ネットで調べたカーソル位置取得方法はVBAでなくてVBのものなので、 API(SendMessage)に渡すテキストボックスのhWndプロパティはなく、 困ってしまいました。窮余の一策として、普通のテキストボックスの 代わりに、リッチテキストコントロールを使用して、その中にある hWndプロパティを渡して、上の機能を実現していました。ところが、 Excelを2002にアップグレードしたら、リッチテキストコントロール が使えないことが判明しました(MSのサイトによると、セキュリティの ため、とのこと)。 Excel2002で、2000時代につくったフォームを開くと、リッチテキスト コントロールがすっぽり抜け落ちている状態です。こうなれば、普通の テキストボックスのhWndプロパティをAPIで取得できないか、というこ とを調べているところで困っています。あるいは、2002でも使える同じ ようなコントロールがあれば助かります。 長くなりましたが、ご存知の方、アドバイスをお願いします。

  • C/C++ゲームのメッセージ機能

    お世話になります。 現在C/C++でWIN32APIを使ってゲームを作っているのですが、 例えばドラ○エのようにストーリーの進捗に応じて 下表示部にメッセージと台詞を表示する機能を作ろうとしています。 fget関数などを使って、外部テキストのデータを 読み込んでくるまでは何とかできると思うのですが、 どうやったらそれを画面に表示できるのか分かりません。 初歩的なことで申し訳ないのですが、どうすれば良いか教えてください。 よろしくお願いします。

  • オンマウスで出てる説明文を非表示にしたい

    IE6を使用しているのですが、オンマウスでテキストボックスのような枠に入った説明文が出てることがあります。 例えばツールバーのボタンも、今はボタン名を表示していないようにしているのですが、 ここにマウスカーソルを乗せるとそのボタン名が出てきます。 ページ本文でもタイトルやアイコンにカーソルを乗せるとその説明やタイトルが出てきたりします。 おそらく製作された方の親切心からだと思うのですが、時々閲覧に邪魔な事があります。 これを一時的に非表示にする方法はあるのでしょうか?

  • C++(API)で

    C++(API)でクライアント領域にボタンを貼り付けるところまではできるのですが・・・そのボタンを押すと新しいウィンドウを表示させるにはどうしたらよろしいのでしょうか?

  • マウスカーソルのデスクトップ描画について

    vb2008で現在のマウスカーソルのハンドルを取得し、デスクトップに描画するというプログラムを組んでいます。しかし、以下の部分を実行してもマウスカーソルは描画されません。どこがおかしいのでしょうか? Dim hcur As Long Dim hdc As Long 'マウスカーソルのハンドル取得 hcur = GetCursor() 'デスクトップのデバイスコンテキスト取得 hdc = GetDC(GetDesktopWindow()) 'カーソル描画 DrawIcon(hdc,0,0,hcur) ちなみに同名のAPIの宣言はしてあります。 後,このソースの用途ですが,複数マウスに対応した複数カーソルの表示です。もしそれにあたって別の方法でカーソルを表示すべきなどのご指摘がありましたら,それもよろしくお願いします。

  • マウス移動イベントでMessageBox終了

    Visual C++ 2010 Expressでプログラム開発している初心者です。 現在、オペレータに確認させるため、MessageBox::Show()によりメッセージを表示して OKボタン押下により、MessageBoxを終了しておりますが、ボタン押下する前に マウス移動イベントにより、MessageBoxを終了できないか、調査しております。 MessageBoxのメソッドには、このような機能はないようなので、自前で作成するしか ないかな、と考えております。 その場合には、まず (1)ウィンドウを作成し、マウスイベントを取得できるプログラムを登録 (2)ウィンドウ(メッセージ含む)表示 (3)マウスイベントを取得 (4)イベント解析 (5)ウィンドウ終了 上記のように動かすには、初心者の自分にはとても難しいので 他に方法はないでしょうか? こんな方法があるよ、とヒントでも構いませんので、是非ご教示ください。 よろしくお願い致します。

専門家に質問してみよう