掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
別アプリへの仮想キーを送るには? (ID:17514)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>こういう事はなかなか難しいみたいですね; でも,できればいろいろと面白いかも知れません.一つ例を... 新規プロジェクトを作成し,FormのOnCreateとDestroyのイベントを次の ようにして実行し,メモ帳を起動します. このメモ帳で何かキーを押してみて下さい.フックというのはこんな感じ です.usesにClipbrdを忘れないように. uses Clipbrd; var Hook: HHOOK; //============================================================================= // WH_JOURNALRECORDのコールバック関数 // 文字列を送るのにクリップボードを使用した例 //============================================================================= function JournalRecordProc(nCode:Integer;wParam:WPARAM; lParam:LPARAM):LRESULT;stdcall; var pevent: pEVENTMSG; h : HWND; hh : HWND; A : Word; S : String; begin if nCode < 0 then begin Result := CallNextHookEx(Hook, nCode, wParam, lParam) end else begin Result := 0; if nCode = HC_ACTION then begin pEvent := pEVENTMSG(lParam); h := GetForegroundWindow; hh := GetWindow(h,GW_CHILD); case pEvent.Message of WM_KEYDOWN: begin A:=pEvent.paramL and $FF; S:=' 文字 '+Chr(A)+' を押しましたね.'+#13#10; //クリップボード経由 ClipBoard.SetTextBuf(PChar(S)); SendMessage(hh, WM_PASTE,0,0); end; end; end; end; end; //============================================================================= // フック開始 //============================================================================= procedure TForm1.FormCreate(Sender: TObject); begin Hook:=SetWindowsHookEx(WH_JOURNALRECORD,Addr(JournalRecordProc), hInstance,0); end; //============================================================================= // アプリ終了時はフック関数をアンインストール(登録解除) //============================================================================= procedure TForm1.FormDestroy(Sender: TObject); begin UnhookWindowsHookEx(Hook); end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.