プロが教える店舗&オフィスのセキュリティ対策術

windowsアプリを作りたいです。

環境:
VS2008
ネイティブアプリ
C/C++

内容は、キーボードでctrl + c, ctrl + v時に
マウスカーソル部に「コピー」「貼り付け」などの
メッセージを表示するものです。

実現方法が分かりません。少し調べたら、"DLL注入", "フック"など
のキーワードが出てきましたが、いまいちどのように使用するものなのかが
分かりません。(DLL注入とか危険な感じもします。。実際危険と書かれていたような。。)

実現方法を分かる方がいましたら教えてください。

A 回答 (3件)

> メモ帳でも、エクセルでも、ワードでもその他のソフトでも


> どのソフト上でもメッセージが出るものにしたいです。

なるほど,そういう場合はフック(しかもシステムフック)が必要です。

基本的にはフックプロシージャを用意して登録するだけなのですが,
システムフックの場合には DLL を用意したり,
DLL の複数のインスタンス間でデータを共有したり,
と細かいテクニックが必要です。

そのあたりも,前の回答で紹介したページに詳しく書かれています。


> 具体的にはどのようなことが発生する可能性があるのでしょうか

例えば,Ctrl + V をホットキーに登録すると,
メモ帳で Ctrl + V を使って貼付けができなくなります。

この辺はちょっと自身がなかったので,ぼかした表現にしておきましたが,
試してみたらやはりそうでした。

# おせっかいついでに,細かいことを言うと,
# Ctrl + C や Ctrl + V をどういう意味で使うかは,アプリケーション次第ですよね。
    • good
    • 0
この回答へのお礼

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

どうやらシステムフックなるものを使用して作りこむしか
方法はないようですね。。
道は困難なものになろうかと思いますが、やってみたいとおもいます。

お礼日時:2011/01/10 12:43

> 内容は、キーボードでctrl + c, ctrl + v時に



どこで,(どこにフォーカスがあるときに),
によって実現方法が変わります。

自分のウィンドウ内ならフックしなくても,
メッセージループで WM_KEYDOWN とか見れますし。

本当にフックが必要な場合は,
↓が DLL の作り方から説明されていて,分かりやすかったです。
http://www.kab-studio.biz/Programing/Codian/#DLL …

# RegisterHotKey を使うと,
# 他所様を含めて本来の Ctrl + C, Ctrl + V の動作を妨害するかも。

この回答への補足

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

メモ帳でも、エクセルでも、ワードでもその他のソフトでも
どのソフト上でもメッセージが出るものにしたいです。(ユーティリティソフトのような感じ)

フォーカスはコピー対象のものをマウスを使用して、選択しますので、
その対象を含むアプリのどこか(?)になるかと思います。

># RegisterHotKey を使うと,
># 他所様を含めて本来の Ctrl + C, Ctrl + V の動作を妨害するかも。
具体的にはどのようなことが発生する可能性があるのでしょうか

補足日時:2011/01/09 21:15
    • good
    • 0

私の紹介する方法ではホットキーのAPI関数を使用します。


関数はホットキー登録と登録解除の2つです。

BOOL RegisterHotKey(
 HWND hWnd, // ウィンドウのハンドル
 int id, // ホットキーの識別子
 UINT fsModifiers, // キー修飾子フラグ
 UINT vk // 仮想キーコード
);

BOOL UnregisterHotKey(
 HWND hWnd, // ウィンドウのハンドル
 int id // ホットキーの識別子
);

RegisterHotKeyでホットキーを登録すると、そのキーが押された時にウィンドウにWM_HOTKEYメッセージが流れてきます。
ただし、この方法はWin95など昔からある方法なので、最近のWindowsやVC++ではもっと使いやすい方法があるかもしれませんね。
    • good
    • 0
この回答へのお礼

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

ホットキーとは思いつきませんでした。ググりつつ、頑張ってみます

お礼日時:2011/01/09 18:01

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