これ何て呼びますか

以前Windows2000ProやWindowsXP Pro
ACCESS97のVBAでShell関数を利用し
別のソフトを起動 その後Timerイベントで
SendKeysを実行し別のソフトを操作していました。

しかし最近購入したパソコン(WindowsXP Pro)で
実行したところ別のソフトは起動しますが
Sendkeysの操作が実行されません。

なぜでしょうか?

以前のパソコンと最近購入したパソコンの違いは
以前のパソコンは購入時SP1で
Windows UPdateでSP2にしたこと
セキュリティーソフト(Nortonを使用しています)の
バージョンが異なるぐらいです。
( もちろん起動する別のソフトは、許可にしています)

Sendkeysの操作が実行されるようにする
設定を教えてください。

よろしくお願いします。

A 回答 (2件)

SendKeysの処理は、送るタイミングがデリケートで、環境によってはウェイトが必要になります。



まず、AppActivateの二番目の引数を True にして、アクティブになるまで待って下さい。

それでもうまく行かないなら、下記の様にウェイトを入れて下さい。

ウェイトは大きめにしておけば安心ですが、大きすぎるとその分、処理に時間がかかります。

----サンプル----
Private Sub test()
 Dim RtnVal
 
 RtnVal = Shell("notepad.exe", 1)
 wait 0.1
 AppActivate RtnVal, True
 wait 0.1
 SendKeys "12345", True
End Sub

Private Sub wait(sec As Single)
 Dim st As Single
 st = Timer()
 Do Until Timer() > st + sec
  DoEvents
 Loop
End Sub
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
実際にテストしてみたところ
うまくできました。
ありがとうございました。

お礼日時:2008/02/19 12:37

良くありそうな話ですが、SendKeysはアクティブなWindowにキーを送ります。


従って、SendKeysを送るタイミングが悪く、アクティブなWindowでない場合に送っていないか確認してください。
または、API関数のSetActiveWindow 等で、アクティブにしてからSendkeysを行っては?

この回答への補足

回答ありがとうございます。

ACCESS97 VBAで下記のプログラムのように
実行していますので
アクティブになっていると思います。
RtnVal = Shell(他のプログラム, 1)
AppActivate RtnVal
SendKeys ...

何か別の対処方法があれば
教えてください。
よろしくお願いします。

補足日時:2008/02/13 17:20
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報