- ベストアンサー
Windows7-VB6でのアクティブウィンドウキャプチャ
- Win7でのVB6によるアクティブウィンドウキャプチャの動作について
- Win7でのVB6におけるアクティブウィンドウキャプチャの問題と解決策
- Win7のVB6でアクティブウィンドウキャプチャを行う方法と注意点
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Windows 7 の場合 PC によって Shift キーを併用しないとprtscr が動作しない等があります。 今回のように、行にブレイクを入れて、一旦プログラムを停止し再開するとOK との事なら 下記のように待ち時間を作ってやれば 多分 取得できるはずです。 待ち時間は、PC の性能によって変わってきますので、0.1 ~ 1.0 位の間で調整して見て下さい クリップボードにコピーしてから、取得するまでの間にも入れるようにして下さい。 (クリップボードに書き込みされる前に読みにいっている可能性があります) 後は、様子を見ながら、DoEvents を書いているところに入れて見る等試してみて下さい。 Dim sngSt As Single sngSt = Timer Do While Timer - sngSt < 0.5 DoEvents Loop
その他の回答 (2)
- vbhanatyan
- ベストアンサー率79% (70/88)
実際の状況に近い状態の確認ならこちらの方が。 Private Sub Command1_Click() Dim sngSt As Single sngSt = Timer Dim n As Long Do While Timer - sngSt < 0.1 '0.5秒間ループを繰り返す(0,5秒間待機する) DoEvents n = n + 1 Loop Debug.Print n End Sub これで、どの位 DoEvents が実行されたか解りましたか? 本来は、DoEvents や sleep 等は使用すべきではありませんが、多用しなかったり、ご自分の ソフト内で問題が起きない範囲内なら...。
- vbhanatyan
- ベストアンサー率79% (70/88)
>ちなみに上記コードだとDo While内のDoEventsが通常1回しか実行されませんが >問題なく動作します。 1回しか実行されないってどのようにして確認しましたか? そもそも何をしているのか理解されていないような。 >同様にLoopをなくしてDoEventsを単体で実行させると動作しなくなりますが >その違いが理解できませんでした。 下記を試して見て下さい。 Private Sub Command1_Click() Dim sngSt As Single sngSt = Timer Do While Timer - sngSt < 0.5 '0.5秒間ループを繰り返す(0,5秒間待機する) ' DoEvents Debug.Print "AAAA" Loop End Sub 0.5 の所を 1.0 とか 0.1 とかに変えてどのように変化するとかも見ておいて下さい。
お礼
花ちゃん様 ご回答ありがとうございます。 頂いたコードをピクチャボックスに貼り付ける直前に行うことで解決しました。 当方でも取得するまでに時間がかかるのでは、と思いつき 同じ場所でsleepやloopによる待機を行ったのですがうまくいきませんでした。 ちなみに上記コードだとDo While内のDoEventsが通常1回しか実行されませんが 問題なく動作します。 同様にLoopをなくしてDoEventsを単体で実行させると動作しなくなりますが その違いが理解できませんでした。 本題と離れてしまいますが、教えていただけると幸いです