• 締切済み

フォーカスを移さずに、クリックしたい

VB6かUWSCにて、フォーカスを移さずにクリックさせる方法がありましたら教えてください。 ネットで拾ってくるクリックをしてくれるフリーソフト(例えばGlobalShortcutHelper)の中には、 クリックをした後にそのクリックされたプログラム(たとえばブラウザなど)に フォーカスが移らないものがあります。 そのようなプログラムを組む方法がありましたら教えてください。 擬似的に元のカーソル座標へ戻るようにプログラムしてみましたが プログラム間の切り替えが明らかに発生しており、望むような結果にはなりませんでした。

みんなの回答

noname#212058
noname#212058
回答No.2

まず、UWSC では不可能です。 VB6 ではできないことは無いような気がしますが、相当しんどいです。 このような要件のサンプルプログラムは、ほとんど C++ ですので、C++ を読んでVB6に翻訳する技術力があれば、可能です。……最初から C++ で作ったほうが早そうな気がしますが。 技術的には、以下の API で実現できます。しかし、この API を VB6 から呼び出すのは大変です。 PostMessage(h, WM_LBUTTONDOWN, 0, MakeLParam(p.X, p.Y));

uiui0l0l
質問者

補足

VB6にて以下のように作ってみました。 FormにCommandボタンを貼り付けた状態です。 コマンドボタンをクリックするとフォームの右上座標の下にある ウィンドウのハンドルを取得して、その座標をクリックさせる・・・ というつもりで作ったのですが、うまく動きません。 ハンドルは数字でちゃんと取得できています。 座標も取得できています。 クリック(DOWN後にUP)がされないです。 よろしければ、アドバイスをください。 ================================= Option Explicit Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long Private Declare Function SendMessage Lib "user32" _ Alias "SendMessageA" _ (ByVal hwnd As Long, _ ByVal wMsg As Long, _ ByVal wParam As Long, _ lParam As Any) As Long Private Const WM_LBUTTONDOWN = &H201 Private Const WM_LBUTTONUP = &H202 Private Sub Command1_Click() Dim hTargetWnd As Long Dim lParam As Long Dim lx As Long Dim ly As Long lx = Me.Left / 15 ly = Me.Top / 15 hTargetWnd = WindowFromPoint(lx - 1, ly - 1) lParam = (ly * &H10000) + lx Call SendMessage(hTargetWnd, WM_LBUTTONDOWN, 0&, lParam) Call SendMessage(hTargetWnd, WM_LBUTTONUP, 0&, lParam) End Sub

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

原理的にはダイアログとかにクリックイベントを送る・・・ってやれば良いんだけど・・・ 原理だけ 書いといた・・・やり方が色々あるからね・・・

uiui0l0l
質問者

お礼

ありがとうございます sendmessageを使ってみようと思いました!

関連するQ&A

  • VBでクリックイベントを発生させたいです

    VBのことについての質問なんですが 座標を指定してマウスカーソルを自動でクリックさせたり、何秒間か長押しさせたりするイベントの発生のさせ方はどうするんですか? またデスクトップの座標ではなく、フォーム内での座標指定はできますか? 回答よろしくお願いいたします

  • うざいフォーカスを勝手にテキストボックスへ移動させないようにするには?

    「OKWeb」だけでなく「Yahoo! Japan」「Google」など一部のHPを開いたりリロード(更新・再読み込み)したりする際、クリックしていないにもかかわらず検索用のキーワードを入力するテキストボックスへフォーカス(カーソル?)が勝手に移動し、クリックしたのと同じ状態になってしまいます。 どうにかしてこのうざいフォーカスを移動させないようにする方法ってないのでしょうか? 当方のブラウザは Internet Explorer 6.0 (IE6 SP1) ですが、これはブラウザかHTML、あるいはJavaといった言語の仕様で起こるものしょうか?

  • ウィンドウハンドルの座標を調べることはできますか?

    VB6環境です 様々なブラウザに対してフォーカスさせずにクリック操作をさせたいと考えています 現在、一応それは完成しました しかし、ブラウザを画面左上に置いた(top座標=0、left座標=0)場合です ブラウザの位置がどこにあろうとクリックさせたいのですが、クリック座標の指定が ゲットしたウィンドウハンドルをもつオブジェクトの原点座標を原点として指定するため、 ブラウザを一番左上に持ってこないと動作してくれません わかりにくい説明ですが、知りたいことは  「任意のブラウザの中のコンテンツを表示する領域(このウィンドウハンドルはゲットできました)の   原点座標をVB6にて取得したい」 ということです よろしくお願いします

  • 特定座標をクリック

    特定座標をクリック 画面上の座標を指定してマウスクリックを発生させるプログラムってどう書けばよいでしょうか?

    • ベストアンサー
    • Java
  • VB6にて、バックグラウンド処理は可能でしょうか?

    VB6にて、ブラウザ上のフラッシュゲームの特定箇所を 時々クリックするプログラムを作りました。 しかし、クリックする時に(当然ですが)処理がそちらのブラウザにいってしまい、 他の作業が中断してしまいます。 このクリックをするという動作の時に、ブラウザにフォーカスさせずに クリックだけさせることは可能でしょうか? 可能でしたら、ヒントとなる処理方法を教えてください。

  • タブコントロールのフォーカス枠を消したい

    VB.NET(VB2008)について質問です。 タブ式テキストエディタを作っているのですが、タブが選択されると そのタブのTextBoxにフォーカスを当てたいので TabControlのMouseDownイベントでTextBoxにフォーカスを移すようにしたのですが、その方法だと一瞬クリックしたタブにフォーカス枠が表示され、ちらついて見えます。 そこで、TabControlを継承して以下のようにすればフォーカス枠が消えるだろうと思ったのですが、ダメでした。 Public Class myTabPage Inherits TabControl Protected Overrides ReadOnly Property ShowFocusCues() As Boolean Get ShowFocusCues = False End Get End Property End Class ボタンなどの場合はこの方法でフォーカス枠を消すことができたのですが、TabControlの場合は無理なのでしょうか。 他の方法があったらご教授ください。

  • UWSCでエラー発生時の対処法について

    UWSCで、エラーが発生したときに、特定の行、または指定されたファンクションへ飛ばしたいのですが、その方法はありますでしょうか?VBでいうOnErrorステートメントと同じ役割ができるものを探しています。 UWSCはエラーがでると、強制終了されてしまい、その後のプログラムの実行が止まってしまいますので、これを回避するためです。 当方、プログラムは素人ではありませんが、UWSCは始めてです。もし分かる方がいましたら、教えていただけませんでしょうか?

  • SSTabのフォーカスの移動について!

    Windows2000、VB6.0、SP5で開発しています。 質問は、SSTabのフォーカス移動についてです。 SSTab上のコントロール上にフォーカスがある時、 Tabでフォーカスの移動をしてると、急にフォーカスが見えなくなってしまうことがあります。 調べてみると、隠れているコントロールに移動してしまってるみたいなんですが、 これは、解決策はないんでしょうか? 最後のコントロールでSetFocusを使うとかあったのですが、その場合、 最後のコントロールにフォーカスがある時に、どのコントロールをクリックしても、 最後のコントロールのSetFocusで設定したコントロールにフォーカスが移動してしまいます。 良い方法をご存知の方、いらっしゃいましたら、 どうぞ、ご教授よろしくおねがいしますm(_ _)m

  • keydown イベントについて

    VB6なのですが、あるオブジェクトにフォーカスがある時には キーダウンが出来るのですが、どこにもフォーカスがないときには、、 (強いて言うならフォームにフォーカス?)キーダウンイベントは 発生しないのでしょうか? 要は、カーソル、フォーカス、の位置に関係なく、「F1」を押したときに ある動作をさせたいのです。 よろしくお願いします

  • DataGridViewで入力チェック後、フォーカスをあてたい

    お世話になります。 現在VB2005で開発中なのですが、DataGridViewの処理で躓いております。 DataGridViewには「氏名」「住所」「生年月日」を入力できるようにしており、全ての項目において入力必須としています。 よって、どれか一つでも入力がなかった場合はエラーメッセージを表示させ、メッセージ表示後に該当項目のセルにフォーカスをあてたいと考え、ロジックを組んでおります。 仮に「氏名」が空白で、次の行の任意セルをクリックした場合、RowValidatedイベントで各セルに対し入力チェックを行い、メッセージを表示させた後にCurrentCellを空白だったCellにし、さらにEditModeで編集可能状態にすればいいと考えていたのですが、結果は最後にクリックした任意セルにフォーカスが移ってしまいます。 入力チェックを発生させるイベントに問題があるのか、カレントセルにフォーカスを当てる処理で問題があるのかで悩んでいる状態です。 どなたか心当たりがあれば教授願いたいです。 よろしくお願いいたします。

専門家に質問してみよう