2012-05-12 28 views
3

私はWindows APIプログラミングにはかなり初心者です。私は、サブクラス化とAPIフックとはどのようなものなのでしょうか。私は所有者が描いたコントロールを使ったプロジェクトをやっています。今では、これらのトピックについてCodeProject.comの詳細なチュートリアルをたくさん見てきましたが、問題はすべてMFCを使用していて、純粋なWin32でコーディングしていることです。誰かが上記のトピックの良いチュートリアルを知っている場合は、リンクを投稿してください。また、msdnへのリンクを避けてみてください。初心者の方は、そこに書かれている内容を理解するのに問題があります。サブクラス化とAPIフックとは何ですか?

答えて

10

Layman用語:サブクラス化は、ウィンドウのウィンドウプロシージャを置き換えることによって行われます。これは、Windowsがあなたの関数にウィンドウへのメッセージを配信するために行う呼び出しをリダイレクトするので、それらのメッセージを最初に見ることができます。これにより、ウィンドウの動作を変更し、元のウィンドウにはない新しい機能を追加できます。これは非常に一般的な手法であり、OSによって直接サポートされているSDKの記事is hereです。

APIフックはwinapiの機能と似ていますが、同様です。プロセスで実行していないコードの動作を変更することができます。任意に、CreateFile()をフックし、渡されたファイル名を変更したり、目的に応じて失敗させることができます。 これはあまり一般的ではないし、サブクラス化のようなベークイン機能ではないので右に行くのがはるかに難しい。 Microsoft's Detoursはこの技術の実装例である。

どちらの方法も高度なプログラミングのカテゴリにあり、正しいことをしなければかなり厄介な問題になることがあります。今すぐMSDNの記事を読むのに問題がある場合は、準備が整うまで棚に置いておきます。

+0

ありがとうございます。私はこのタイプのプログラミングの初心者であり、このタイプの複雑なプログラミングに少し驚いています。情報をもう一度ありがとう。 – Sreyan

1

未処理のWin32をプログラミングする場合は、おそらくPetzoldの書籍「Programming Windows」が必要です。

+0

このタイトルの電子書籍はありますか? – Sreyan

+0

はい、Amazonをチェックして、Kindle(おそらくWindowsのKindleアプリを含む)用に入手できます。しかし、ハンスのアドバイスは良いです。また、Windows上で実行するプログラムを書こうと思っているだけの場合は、C#を使用することを検討してください。 – Ben

+0

ええ、C#では.NETフレームワークが必要でしょうか? – Sreyan

関連する問題