人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

前回の質問で,教えていただいた方法でとりあえず解決できたのですが他のPCに持っていったらまた駄目になりました。何かライブラリなどが必要なのでしょうか?
他のPCはOSは同じですが,VisualBasicは入っていません。
--以下前回の質問--
VisualBasicで
Private Sub Command1_Click()
SendKeys ”%{TAB}”
Sleep (1000)
End Sub
の様に書いてCommand1をクリックすると1秒たってから,ALT+TABのキーストロークが送られてしまいます。キーストロークが送られてから1秒待ちたいのですが,どの様に書けばよいでしょうか。

●質問者: tecra
●カテゴリ:コンピュータ
✍キーワード:OS pc sub VisualBasic クリック
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● zifree
●40ポイント

http://www.hatena.ne.jp/1078308281

人力検索はてな - 複数のテキストボックスの中身をコピーして、他のウインドウの同数のテキストボックスにその内容をペーストする必要性が出てきました。 データ1+TAB+データ2+...とい..

以前同じような質問に回答した事がありましたので、参考にしてみて下さい。


標準モジュールに

Public Declare Function GetTickCount Lib ”kernel32.dll” () As Long

と記述し、


Public Sub Waiter(TT As Long)

Dim T1 As Long, T2 As Long

T1 = GetTickCount()

Do Until T2 - T1 >= TT

T2 = GetTickCount()

DoEvents

Loop

End Sub


と言うプロシージャを作っておきます。

その後、Sleep (1000)の代わりに


Private Sub Command1_Click()

SendKeys ”%{TAB}”

Waiter(1000)

End Sub


と書いて下さい。


なお、sleepを使う方法でも今回の方法でも、VBのランタイムさえ入っていれば、特にライブラリは必要ありません。

http://www.bcap.co.jp/hanafusa/VBHLP/SendInput.htm

SendInput関数を使ってキーストロークをシミュレートする

どうしてもだめでしたら、SendKeysの代わりにWindowsAPIのSendInputを使ってみて下さい。

◎質問者からの返答

なるほど。milliSecを取れる関数があるんですね。


2 ● kidd_pclabo
●20ポイント

http://www.vector.co.jp/soft/win95/util/se188840.html

Visual Basic 6.0 SP6 ランタイムライブラリ(Windows95/98/Me / ユーティリティ)

VBのソフトは、VBランタイムが入ってない場合、正常に動かない場合があります。

◎質問者からの返答

やはりそうですか。


3 ● toshi_nishida
●30ポイント

http://search.yahoo.co.jp/bin/query?p=%a4%c0%a4%df%a4%a4&fr=...

Yahoo!検索 - だみい

urlはダミーです。tabを送って1秒待つと言う意味は、その間にWindowsが動いて次の操作の準備が出来ることを期待しているのだと思いますが、sleepで止めてしまうのはWindows全体の動作を止めてしまう事で、これでは意味がないのではないですか? PCによってtabが送られる前に停止してしまうと言うのも、1個目のdo eventsで動作が終わらない場合があるということが原因だとおもいます。基本的に、暇な時間にはDoEventsを繰り返すべきだと思います。


StartTime = Timer

While Timer < StartTime + 1

If Timer < 1 Then StartTime = 0 ’ これは深夜0時に操作したときの逃げ

DoEvents

Wend


これは1秒間DoEventsを繰り返して待つ一例で、sleep(1000)の代わりに上の全文を入れる事で代用できます。実は深夜0時丁度に操作されると待ち時間が最大2秒まで長くなってしまいますが、ご参考まで。

◎質問者からの返答

milliSecで制御したかったのでこの方法が取れなかったのですが、1番目の回答者の方の方法を使えばこの方法でも制御できますね。ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ