いつも勉強させていただいています。
質問させていただきます。よろしくお願いします。
あるソフトのデータ保存を数分毎に行う必要がでてきたため、初めて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も見ています
-
これ何て呼びますか Part2
あなたのお住いの地域で、これ、何て呼びますか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
VBAでマクロ実行中はExcelのマウスやキーボードを使ってセル選択などを無効にしたい
Visual Basic(VBA)
-
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
Access の VBA 実行中に他の操作をさせたくない
Visual Basic(VBA)
-
-
4
マウス・キーボード入力を禁止させたい。
C言語・C++・C#
-
5
Alt+P,Alt+NをPostmessageで送るには
Visual Basic(VBA)
-
6
親ウインドウにあるOKボタンを押す方法
Visual Basic(VBA)
-
7
Excel VBAでマウスの左クリックのイベントを検知するには
Visual Basic(VBA)
-
8
'ユーザーフォーム右上隅の[×]ボタンを表示しない
Visual Basic(VBA)
-
9
エクセルVBAでロックをかけたい
Excel(エクセル)
-
10
VBAで、なぜかSendkeyが効きません。
PowerPoint(パワーポイント)
-
11
エクセルVBAのフォームを最前面にする方法を教えてください。
Visual Basic(VBA)
-
12
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
13
VBAでコントロールのハンドルを取得したい
Visual Basic(VBA)
-
14
VBAで文字を反映させると255文字の制限になってしまいます。
Visual Basic(VBA)
-
15
EnumChildWindowsの使い方(VBA)
Visual Basic(VBA)
-
16
Vba アプリケーションが立ち上がるまで待つ
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで作った新しいウイン...
-
「アイテムは収集されました」...
-
検索の画面がでなくなってしま...
-
勝手にウィンドウが開いて止ま...
-
ラジオボタンの初期指定
-
Console.WriteLine で表示されない
-
ExcelのBOOKが消えた!
-
Excelの上下を固定したい
-
親ウインドウにあるOKボタンを...
-
Msgboxの変数の表示につ...
-
他のアプリケーションの終了処理
-
C#でファイル転送プログラムWin...
-
名前を付けて保存のウィンドウ...
-
コマンドプロンプト実行時の設定
-
VBA .Value=.Value ?
-
CodewarriorでOSX的なウィンド...
-
VBAでのタイトルバーの取得
-
コンソールアプリケーションで...
-
occmgr.cppの行410で特定のエラー
-
エクセルで1行目から3行目が消...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで作った新しいウイン...
-
「アイテムは収集されました」...
-
勝手にウィンドウが開いて止ま...
-
ゲームでは結局どっちが良いの?
-
検索の画面がでなくなってしま...
-
VBA .Value=.Value ?
-
Excelの上下を固定したい
-
ExcelのBOOKが消えた!
-
他のアプリケーションの終了処理
-
Vba LongPtrについて教えてくだ...
-
「&HFFFF」「&H1A」とは?
-
MFC ダイアログ上のID取得につ...
-
作成したウインドウのサイズを...
-
[VBA] UserForm を Excel の W...
-
ラジオボタンの初期指定
-
【VB2008】 マウス操作の一時的...
-
ExcelVBAでAPIを使って外部ウイ...
-
VBAで単一ブック複数窓を閉じる...
-
EnumChildWindowsの使い方(VBA)
-
隠れたウィンドウの画面をキャ...
おすすめ情報