
VisualC++で、常駐ソフトを作りたいのです。
常駐ソフトと呼ぶのかどうか、わかりませんが、起動して、右下のタスクトレイとかにアイコンを表示させておいて、普段は何もしません。
しかし、たとえば無変換キーを押すと起動して画面のスクリーンコピーをとり、それをもとにいろんな処理をするようなものを考えています。
わたしはVisualC++でMFCではかなり複雑なソフトも作ったことがありますが、一般的なアプリしか作ったことがなく、常駐ソフトは初めてです。
作り方を教えてください。
なにか、スケルトンとか、あるでしょうか。
また、起動した際にデスクトップ上でのマウスポインタの位置を取得するコマンドとかも出来れば教えてください。
MFCでは起動したウインドウ上での座標とかはわかるのですが。
No.1ベストアンサー
- 回答日時:
スケルトンとかは無いと思います。
タスクトレイアプリケーションであれば「Shell_NotifyIcon」を調べてみてください。
キーボードやマウスの監視であればシステムフックになりますので、まずはDLLの作り方を覚えてください。
その後、「SetWindowsHookEx」を調べてみてください。
コード的にはMFCでプログラムを組んだことがあれば簡単に実現できると思います。
お返事ありがとうございました。
DLLなら作ったことありますよ。
これって普通のライブラリですよね。ただダイナミックということで。
これがシステムフックとかと関係があるのですか。
DLLを使わないと出来ないようなことがあるのかな?
DLLを使わなくてもEXEファイルだけで出来るかと思ったのですが、、、
ひょっとして、普段はメモリ上にはおかず、起動した時にのみDLLをメモリ上に持ってきて、処理が終ったら捨てる、とかするためにDLLを使うのかな。
システムフックとDLLの関係がよくわかりません。
DLLに特別な機能があるのでしょうか?
それとスケルトンに関してはMFCみたいにVisualC++内で用意しているもの、ということではなく、誰かが作ったもの、どこかのHPで、参考になるソースがないかな、ということで。。。^^
それと、MFCはべたのSDKをクラスライブラリで上手にクラス化して使いやすくしたものですが、SDKをべたにそのまま使わないと作れないのでしょうか。
つまり、MFCは使えないと。。。
No.2
- 回答日時:
ご質問の要求が複数にわたるものなので、スケルトンとかはないでしょう。
・タスクトレイにアイコンを登録するプログラム
・キーボードフックを行うプログラム
それぞれはサンプルなんかがあるでしょうから、それを一つに組み合わせる必要があります。
・タスクトレイへのアイコン登録
Windows では、「常駐ソフト」と呼ばれるようなソフトも、構造上は特殊なものではありません。
普通のアプリケーションでもタスクトレイにアイコン登録はできます(回答1にある Shell_NotifyIcon APIです)ので、あとは、普段はメインのウィンドウを非表示にしておくだけです。
・キーボードフック
キーボードフックについては、SetWindowsHookEx でできますが、
> システムフックとDLLの関係がよくわかりません。
キーボードフックなどを行うのに使う SetWindowsHookEx APIは、DLL からしか利用できません。
自分以外のアプリの挙動を制御するために、監視される側のアプリからもDLLを読み込む必要があるためです。
具体的な使用方法については、SetWindowsHookEx で検索すればいろいろ見つかります。
> 起動した際にデスクトップ上でのマウスポインタの位置を取得するコマンド
GetCursorPos APIで取得できます。
http://msdn.microsoft.com/ja-jp/library/cc364640 …
お返事ありがとうございました。
なるほど、DLLでしか使えないAPIがあるのですね。
よくわかりました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
exeファイルを実行するとすぐに...
-
mscomm32.ocxの登録方法
-
C# 他のアプリケーションを優先...
-
VBで実行中のEXEファイルの情報...
-
VBAでOutlookを終了させたい Ex...
-
二重起動禁止にする理由とは
-
Process.Startで起動したアプリ...
-
AppActivateについて
-
アウトルックが起動しているか...
-
Windows上のプログラム。「予め...
-
windowsの連続起動時間取得
-
WinSCPで画像のように puttyを...
-
C#のフォームから起動するブラ...
-
フォームの最前面が効かない
-
VC++にて_spawnlpでプロセス起動
-
対象のアプリケーションが終了...
-
docker で python 環境を構築する
-
VC++アプリからEXCEL...
-
VBSでExcelのUserFormをエクス...
-
タスクスケジューラでPerlが動...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでOutlookを終了させたい Ex...
-
VBSで起動したアプリが前面表示...
-
VBSから別のVBS起動するとき変...
-
アウトルックが起動しているか...
-
Process.Startで起動したアプリ...
-
Windows上のプログラム。「予め...
-
VBで実行中のEXEファイルの情報...
-
exeファイルを実行するとすぐに...
-
ACCESS VBAで別のACCESS(mdb)を...
-
WinSCPで画像のように puttyを...
-
VBAでSeleniumからChromeを起動...
-
フォームの最前面が効かない
-
VB6で呼び出し元の情報を取得す...
-
同じIEのウィンドウで、リンク...
-
gccプログラムで複数の実行ファ...
-
アプリからVB(Form)
-
VBSでExcelのUserFormをエクス...
-
VBからExcelに書き込む方法
-
Notepad起動のイベントでEXC...
-
エクスプローラの終了と再起動...
おすすめ情報