いつも勉強させていただいています。
質問させていただきます。よろしくお願いします。
あるソフトのデータ保存を数分毎に行う必要がでてきたため、初めてVB2008で作成を試みました。SendKeysを知り、なんとか一連の保存作業(ソフトのツールバーのFile→SaveData→(ファイル名入力)→OK)を、自動化するところまでできたのですが、実行中にマウスポインタを動かしてしまうと正常に動作しなくなってしまうため、イベント中の5~10秒程度マウス操作を無効化したいのですが、やり方が見つかりません。
結構長い時間検索して試してみたのですが、
Cursor.Hide()
や
Private Sub Button1_MouseMove(・・・) Handles Button1.MouseMove
Dim p As Point = New Point(0, 0)
System.Windows.Forms.Cursor.Position = p
End Sub
のような都度ポインタを端に飛ばすような方法では、いくらでもアクティブウィンドウを切り替えられてしまうためうまくいきませんでした。
上のような「マウスが動いたときに都度発生~」といったような監視方法ではメインのイベントが妨げられるようにも感じますので、何かマウス操作を規制・無効にするよい方法がありましたら教えていただければと思います。
もしお詳しい方がいらっしゃいましたら、どうぞよろしくお願いします。
No.2ベストアンサー
- 回答日時:
vb6.0のソースですが参考になさってみてください。
Sendkeyでアプリケーションを操作して保存しているのですよね、SendkeyはOSの状態で正常にキャッチされない場合が発生したりあまりよい方法ではないと思います。
別の方法を検討されるのもひとつかと思います。
参考URL:http://hanatyan.sakura.ne.jp/vbhlp/MouseLook.htm
どうもありがとうございます!!!
御礼が遅くなりました。ご親切にご指摘くださいましてどうもありがとうございます。
ご提案してくださった通りSend~を使わないことが、本質問の根本解決手段なので
ぜひ実行したく2005、2008のサンプルを探しておりましたが、
(かなりあるだろうと思ったんですが検索がへたなのか?)見つけるにいたっておりません。。
多分、見つけたFindWindow、FindWindowEx、SendMessage(?)あたりを使うのだと思うのですが。
できれば自分で解決してから御礼報告させていただくべきと考えていたので、
検索で比較的見つかりやすいVB6のサンプルを自力で治そうとトライしていましたが、
まだ理解できるにいたっておりません。
素人で申し訳ございませんが、もし2008のコードでそれっぽい考え方のページでもございましたら
ご紹介いただけないでしょうか。。
どうぞよろしくお願いいたします。
No.4
- 回答日時:
スレッドを分けて処理するとか、バックグラウンドワーカーを使用して処理をして、イベントの影響を受けないようにしてみてはどうですか?
参考URL:http://www.atmarkit.co.jp/fdotnet/mthread/mthrea …
AKARI0418 様
どうもありがとうございました!
バックグラウンドワーカーを使って(時間がかかりましたorz)、
あと紹介していただいたVB6のマウス固定コードも2008で動かせる
ようになりました。始めてのVBでしたが、おかげさまで多くの事が
理解できました。自分で検索してコーディングするのは時間が
かかりますねー。ここで御解答して下さるような方たちって
一体どうやって勉強してるんでしょうか???また悩むことが
あったら教えてやってください。どうぞよろしくお願いします!
No.3
- 回答日時:
#1さんの方法でよいならば、TopMostを設定しておけばアクティブウィンドウを切り替えられてしまうということはありません。
または
どうもありがとうございました!
目的のデータ解析ソフトからいくつかテキストを取れるように
なりました。(まだ取れない部分もありますが...)
教えていただいたTopMostも設定してみましたが、まだデータ解析
ソフトを触れてしまうので、こちらにもEnabled=Falseする必要が
あるようです。が、いまだに力不足でできませんorz
教えていただいたことをいろいろ調べているうちに、メモ帳に
文字を送受信したり目的の子ウィンドウからハンドルを取るくらいの
ことはなんとかできるようになりましたので勉強になりました。
もう少し頑張ってみます。どうぞよろしくお願いします。
No.1
- 回答日時:
コントロールを全て非アクティブ(enable=false)にするのではダメですか?
どうもありがとうございます!
検索して
Me.Enabled = False
で、メインフォームの方はやりたいことができました。アドバイスしてくださってどうもありがとうございます!
「あるソフト」については多分どうにかしてインスタンス化して(?)、同じように
~.Enabled = False
だと考えて調べているのですが、やり方が分からず調べ続けております。検索結果のほとんどが
AppActivate("ソフト名") → SendKeys,SendInput
なので、自分が書こうとしているコードが易しいのか難しいのかすら検討がついておりません。
「外部アプリをインスタンス化」の方向でよろしいのでしょうか。。?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Windowsのマクロプログラムで、こんなことできますか? 3 2022/06/28 14:30
- その他(パソコン・周辺機器) 2つのPCを行き来する 2 2022/06/15 01:59
- Windows 10 (緊急)windowsのタスクバーやアプリ?が反応しない 3 2023/03/28 05:03
- デスクトップパソコン ん~…分からん 7 2022/06/10 10:47
- Excel(エクセル) エクセル VBA実行中のApplication.ScreenUpdatingについて 3 2023/07/13 21:06
- Excel(エクセル) エクセルのワークシートを簡単に別ファイルにする方法は? 5 2023/01/11 14:50
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- Visual Basic(VBA) outlook マクロが終了しません。 1 2022/09/02 11:14
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- 仕事術・業務効率化 効率的な勉強方法(分野問わず)を教えてください 1 2023/08/16 01:33
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
VBAでマクロ実行中はExcelのマウスやキーボードを使ってセル選択などを無効にしたい
Visual Basic(VBA)
-
Access の VBA 実行中に他の操作をさせたくない
Visual Basic(VBA)
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
-
4
VBAで、なぜかSendkeyが効きません。
PowerPoint(パワーポイント)
-
5
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
6
クリップボードの内容を変数に取り込みたい(EXCEL VBA)
Visual Basic(VBA)
-
7
マウス・キーボード入力を禁止させたい。
C言語・C++・C#
-
8
Excel VBAでマウスの左クリックのイベントを検知するには
Visual Basic(VBA)
-
9
メッセージボックスを前面に表示させるには?
Visual Basic(VBA)
-
10
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
11
他のフォームから別のフォームのサブルーチンを呼び出す
Visual Basic(VBA)
-
12
ExcelVBAでスペースキー操作したい
Excel(エクセル)
-
13
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
14
エクセルのカーソルを非表示にする方法
Visual Basic(VBA)
-
15
Excelのセルにユーザー名を表示する方法
Excel(エクセル)
-
16
VBAにてメッセージボックスを最前面に表示させる
その他(プログラミング・Web制作)
-
17
エクセルVBAでロックをかけたい
Excel(エクセル)
-
18
VBSから別のVBS起動するとき変数を渡したい
Visual Basic(VBA)
-
19
メッセージボックスに表示する文字を大きくしたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで作った新しいウイン...
-
「アイテムは収集されました」...
-
勝手にウィンドウが開いて止ま...
-
[VBA] UserForm を Excel の W...
-
EnumChildWindowsの使い方(VBA)
-
コンソールアプリケーションで...
-
API32 コントロールのEditテキ...
-
ExcelVBAでAPIを使って外部ウイ...
-
デスクトップにフォーカスを移動
-
アプリケーション間のドラッグ...
-
Excelの上下を固定したい
-
他のアプリケーションの終了処理
-
Ctrl+Cを2回押してもOfficeクリ...
-
UWSCで特定のChromeのタブをア...
-
ラジオボタンの初期指定
-
ACCESS2007で起動時にフォーム...
-
イベントを発生させたウィンド...
-
ダイアログをスクロールさせるには
-
作成したウインドウのサイズを...
-
指定したインアクティブウィン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで作った新しいウイン...
-
「アイテムは収集されました」...
-
勝手にウィンドウが開いて止ま...
-
検索の画面がでなくなってしま...
-
ゲームでは結局どっちが良いの?
-
VBA .Value=.Value ?
-
Excelの上下を固定したい
-
[VBA] UserForm を Excel の W...
-
EnumChildWindowsの使い方(VBA)
-
Vba LongPtrについて教えてくだ...
-
ExcelのBOOKが消えた!
-
他のアプリケーションの終了処理
-
ラジオボタンの初期指定
-
ExcelVBAでAPIを使って外部ウイ...
-
作成したウインドウのサイズを...
-
UWSCで特定のChromeのタブをア...
-
隠れたウィンドウの画面をキャ...
-
「&HFFFF」「&H1A」とは?
-
名前を付けて保存のウィンドウ...
-
最大化と最小化ボタン
おすすめ情報