
いつも勉強させていただいています。
質問させていただきます。よろしくお願いします。
あるソフトのデータ保存を数分毎に行う必要がでてきたため、初めて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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VBAでマクロ実行中はExcelのマウスやキーボードを使ってセル選択などを無効にしたい
Visual Basic(VBA)
-
Access の VBA 実行中に他の操作をさせたくない
Visual Basic(VBA)
-
VBAでの SendKeysの変数指定方法
Excel(エクセル)
-
-
4
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
5
エクセルVBAでNumLockキーの状態を確認する
Excel(エクセル)
-
6
エクセルVBAで、MsgBox やInputBox は、画面の中央以外に表示させたい。
Excel(エクセル)
-
7
マクロ実行時、ユーザーフォームにラベルのテキストが表示されません。
Access(アクセス)
-
8
動的配列が存在(要素が有る)か否かを判定できますか?
Visual Basic(VBA)
-
9
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
-
10
VB.NETでフォーム上にExcelのような表を表示する方法
Visual Basic(VBA)
-
11
ExcelVBAでスペースキー操作したい
Excel(エクセル)
-
12
マクロで、次のコードへ行く前に時間をおくにはどうしたらいいのでしょうか?
その他(Microsoft Office)
-
13
Excel VBAでマウスの左クリックのイベントを検知するには
Visual Basic(VBA)
-
14
Excel ユーザーフォームをモードレスで表示後
Visual Basic(VBA)
-
15
vbaでmsgboxの位置を指定
PowerPoint(パワーポイント)
-
16
タイトル BATからのマウス操作無効化について
その他(ソフトウェア)
-
17
エクセルVBAでロックをかけたい
Excel(エクセル)
-
18
ExcelVBAでListViewが使用できない
Visual Basic(VBA)
-
19
MoveWindowで位置だけ変更するには?
Visual Basic(VBA)
-
20
ドロップダウンリスト 自動表示したい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで作った新しいウイン...
-
「アイテムは収集されました」...
-
検索の画面がでなくなってしま...
-
勝手にウィンドウが開いて止ま...
-
「&HFFFF」「&H1A」とは?
-
ダイアログをスクロールさせるには
-
皆さん、おはようございます♪ ...
-
Vba LongPtrについて教えてくだ...
-
ExcelのBOOKが消えた!
-
指定したインアクティブウィン...
-
[VBA] UserForm を Excel の W...
-
作成したウインドウのサイズを...
-
Alt+P,Alt+NをPostmessageで送...
-
Excelの上下を固定したい
-
ブック構成の保護
-
VBで外部プログラムを位置のみ...
-
最大化時のフルスクリーン
-
UWSCで特定のChromeのタブをア...
-
C#でファイル転送プログラムWin...
-
ゲームでは結局どっちが良いの?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで作った新しいウイン...
-
「アイテムは収集されました」...
-
ラジオボタンの初期指定
-
勝手にウィンドウが開いて止ま...
-
皆さん、おはようございます♪ ...
-
検索の画面がでなくなってしま...
-
Vba LongPtrについて教えてくだ...
-
【VB2008】 マウス操作の一時的...
-
[VBA] UserForm を Excel の W...
-
VBA .Value=.Value ?
-
Excelの上下を固定したい
-
UWSCで特定のChromeのタブをア...
-
ExcelのBOOKが消えた!
-
「&HFFFF」「&H1A」とは?
-
ゲームでは結局どっちが良いの?
-
作成したウインドウのサイズを...
-
エクセルで1行目から3行目が消...
-
Console.WriteLine で表示されない
-
Alt+P,Alt+NをPostmessageで送...
-
EnumChildWindowsの使い方(VBA)
おすすめ情報