tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルSendKeysの使用方法
記事No14363
投稿日: 2010/01/08(Fri) 16:27
投稿者どっこい
C:\TEST\winX.hlpのヘルプファイルを開いて
ヘルプファイルから"ストレッチ"の検索をして表示させる物ですが、
    SendKeys "^(V)", True 'CTL+v 貼付
    SendKeys "%(D)" 'ALT+D 表示ボタン
が効いていない感じです。

以下のコードを実行してヘルプファイルが表示された時に、手操作で CTL+v 貼付 ALT+D 表示 を
キーボードから入力すると希望通りに動作します。


Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Sub TEST()
    Clipboard.Clear ' クリップボード(Clipboard)をクリアする
    Clipboard.SetText "ストレッチ" ' ClipboardへTxtを入れる
    ShellEx ("C:\TEST\winX.hlp")
    SendKeys "^(V)", True 'CTL+v 貼付
    SendKeys "%(D)" 'ALT+D 表示ボタン
End Sub

Public Function ShellEx(FileName As String) As Boolean
    Const SW_SHOWNORMAL = 1
    Dim Ret As Long
    '関連付けられている実行可能ファイルによりファイルを開く
    Ret = ShellExecute(0, "open", FileName, vbNullString, Environ("windir"), SW_SHOWNORMAL)
    ShellEx = Ret > 32
End Function

[ツリー表示へ]
タイトルRe: SendKeysの使用方法
記事No14366
投稿日: 2010/01/08(Fri) 18:55
投稿者花ちゃん
http://support.microsoft.com/kb/297108/ja
http://support.microsoft.com/kb/179987/ja
元々、SendKeys は色々問題があるので、できれば、ここで紹介しているSendInput関数を
使って下さい。

>     Clipboard.Clear ' クリップボード(Clipboard)をクリアする
>     Clipboard.SetText "ストレッチ" ' ClipboardへTxtを入れる
>     ShellEx ("C:\TEST\winX.hlp")

例えば、この間等で上記が表示されるまでに下記のSendKeys "^(V)" が実行されたり
するので、1回の動作毎にある程度の待ち時間等を作って確認するようにして
その待ち時間等も調整しないとうまく動作しません。
(キーを受け取る側がアクティブになっていないと受け取らないので)
又、これらのキーを送信している間にOS等の割り込みが入る可能性もありますので
確実に動作する保証はありませんので注意して下さい。

指定時間待つ関数
http://hanatyan.sakura.ne.jp/patio/read.cgi?mode=view2&f=244&no=4

>     SendKeys "^(V)", True 'CTL+v 貼付
>     SendKeys "%(D)" 'ALT+D 表示ボタン

[ツリー表示へ]
タイトルRe^2: SendKeysの使用方法
記事No14371
投稿日: 2010/01/12(Tue) 11:09
投稿者どっこい
SendInput関数にて動作致しました。大変有り難う御座います。

[ツリー表示へ]