アクティブカーソルに文字を送るには?

解決


ABC  2006-02-15 08:24:54  No: 130226

環境:VB6.0

常駐アプリを作っているのですが、そのアプリ起動時にホットキーを設定し
テキストエディタなどを編集中にホットキーが押された場合、ある文字列を
テキストエディタのカーソル位置に貼り付けたいのですが、どのような方法がありますか?
(テキストエディタに限らず、文字入力可能なところにカーソルがある場合に行いたいと思っています。)

ホットキーはRegisterHotKeyで設定しています。

よろしくお願いします。


Say  2006-02-15 21:36:30  No: 130227

送り先WindowがActive状態なら、クリップボード経由でペーストするなり、
SendKeysで文字列を流し込むなり、いろいろあるのでは?


ABC  2006-02-15 22:05:05  No: 130228

>Sayさん
回答有難うございます。

>クリップボード経由でペースト
このアプリはホットキーにCtrl+Vを登録しているのですが、貼り付けは行うことが出来るのでしょうか?

>SendKeysで
ホットキーが押された時の処理にSendKeysを入れるとホットキーで押されているキーも有効となってしまう気がするのですが。。


あん  2006-02-15 22:08:59  No: 130229

>このアプリはホットキーにCtrl+Vを登録しているのですが、貼り付けは行うことが出来るのでしょうか?
Shift  + Ins でも貼り付けできますよ。


ABC  2006-02-16 04:59:39  No: 130230

>あんさん
回答有難うございます。

keybd_eventを使用して実現することが出来ました。有難うございました。

参考までに---
Public Sub EditClipboard()
Dim strBuff as String

    strBuff = Clipboard.GetText(vbCFText)

    ※クリップボード内容編集処理

    Clipboard.Clear
    Clipboard.SetText strBuff, vbCFText

    Call keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0)                         'Ctrl   を離した状態にする
    Call keybd_event(Asc("V"), 0, KEYEVENTF_KEYUP, 0)                           '「V」  を離した状態にする
    Call keybd_event(VK_SHIFT, 0, KEYEVENTF_EXTENDEDKEY Or 0, 0)                'Shift  を押した状態にする
    Call keybd_event(VK_INSERT, 0, KEYEVENTF_EXTENDEDKEY Or 0, 0)               'Insert を押した状態にする
    Call keybd_event(VK_INSERT, 0, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0) 'Insert を離した状態にする
    Call keybd_event(VK_SHIFT, 0, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0)  'Shift  を離した状態にする
    Call keybd_event(VK_CONTROL, 0, 0, 0)

End Sub


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加