アプリ版:「スタンプのみでお礼する」機能のリリースについて

他のアプリケーションのテキストフィールドがフォーカスを持っていて、そこにテンキーの「1」を入力した場合、「おはよう」と表示され、さらに改行コードも送れるプログラムを作りたいと思っています。

ヒントが掲載されているHPや書籍などの情報があれば教えていただきたいと思います。 また、お手数でなければ、具体的なコードも教えていただければありがたいです。

開発環境は VB6、OSはXP ProSP2 です。

A 回答 (1件)

キーフックを使って作るのが王道のようですが、


どうもややこしそうなので思いついたソースだけ記述します。
質問者さんの思っている動きとは違うかもしれませんが、、。

以下ソースをVBで実行後、
Windows標準のメモ帳を起動し1を入力してみてください

'--------------以下貼り付けてください-----------------
Private Declare Function FindWindowA Lib "user32" (ByVal cnm As String, ByVal cap As String) As Long
Private Declare Function FindWindowExA Lib "user32" (ByVal hpar As Long, ByVal hchi As Long, ByVal cnm As String, ByVal cap As String) As Long
Private Declare Function SendMessageA Lib "user32" (ByVal hwd As Long, ByVal Msg As Long, ByVal wpara As Long, ByVal lParam As Any) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Const WM_GETTEXT = &HD
Const WM_SETTEXT = &HC

Private Sub Form_Load()

Dim hwd As Long, hwd_c As Long
Dim cap As String, ret As Long

cap = Space$(200)

Do

'メモ帳のハンドル取得
hwd = FindWindowA(vbNullString, "無題 - メモ帳")

'メモ帳のテキストハンドル取得
hwd_c = FindWindowExA(hwd, 0, "Edit", "")

'メモ帳のテキストを取得
ret = SendMessageA(hwd_c, WM_GETTEXT, 200, cap)

'メモ帳のテキストを検索
If InStr(1, cap, "1", vbTextCompare) > 0 Then
'1が入力されているなら置き換えて送信
Call SendMessageA(hwd_c, WM_SETTEXT, 0, "おはよう" & vbCrLf)
End If

DoEvents
Sleep (1000)

Loop

End Sub
'---------------------------------------------

'以下参考にしたURLです
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd …
http://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?p …
    • good
    • 0
この回答へのお礼

早速のお返事とコードありがとうございます。
なんとなく、わかったような気がしました。

参考URLも使っていろいろ研究してみたいと思います。

お礼日時:2007/06/02 10:41

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A