
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ランキング
-
VBAでIEが起動しているか...
-
CreateProcessのエラー
-
exeファイルを実行するとすぐに...
-
VBAでOutlookを終了させたい Ex...
-
wshで既に立ち上がっているアプ...
-
宛先ナシでメールソフトを起動...
-
アウトルックが起動しているか...
-
フォームの最前面が効かない
-
VBからExcelに書き込む方法
-
VBSで起動したアプリが前面表示...
-
VBSから別のVBS起動するとき変...
-
タスクスケジューラでPerlが動...
-
VBAでArrayListを使う為の「msc...
-
vbaでPDFファイルが印刷されない
-
意味不明の実行時エラーで困っ...
-
Designer.vbは直接コードをいじ...
-
オブジェクト(dll)のレジストリ...
-
VB.NETでSPREADの設定方法
-
VBAでコマンドプロンプトを呼び...
-
印刷ダイアログを表示させたくない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでOutlookを終了させたい Ex...
-
アウトルックが起動しているか...
-
Windows上のプログラム。「予め...
-
フォームの最前面が効かない
-
VBAでIEが起動しているか...
-
VBSから別のVBS起動するとき変...
-
exeファイルを実行するとすぐに...
-
VBSでExcelのUserFormをエクス...
-
VB6からエクセルの印刷機能...
-
VBSで起動したアプリが前面表示...
-
VBAでSeleniumからChromeを起動...
-
ウィンドウを終了させたい・・・
-
C# 他のアプリケーションを優先...
-
ACCESS VBAで別のACCESS(mdb)を...
-
別のクラスからのタイマの起動方法
-
htmlからcgiを自動的に起動させ...
-
VBで実行中のEXEファイルの情報...
-
【プログラミング】HTAが想定通...
-
gccプログラムで複数の実行ファ...
-
mscomm32.ocxの登録方法
おすすめ情報