• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:HDCを他の領域にコピーするには?)

HDCを他の領域にコピーする方法

このQ&Aのポイント
  • HDC hdcとhdcMemDCはハンドラへのポインタであり、hdcMemDCをhdcに書き写す方法が分かりません。
  • hdcMemDCをhdcに書き写すためには、一般的にはAPIフックが必要です。
  • APIフックや手修正を回避するためには他の方法を探す必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

デバイスコンテキストのハンドル(HDC)が何らかのメモリブロックへのポインタであると考えていらっしゃるようですが、その考えは捨てましょう。 Windows APIで「ハンドル」とは「オブジェクトを指す識別子」を示します。便宜上、型としてはポインタ型(の別名)として表されますが、実体はポインタ(メモリアドレス)とは限りません。 オブジェクトの種類によっては実際にポインタである場合もあるかもしれませんが、それ以外にもテーブルのインデックスだったり、その他の値だったりします。少なくともGDIオブジェクトは16bitアプリとの互換性のためにハンドルが16bitの範囲内に制限されているので、実際のアドレスである可能性は低いでしょう。 なぜそのようなコピーをする必要があるのかは分かりかねますが、APIフックするのであれば、そこで横取りでも何でもすればよいのでは。

sato-may
質問者

お礼

ご指導ありがとうございます プリンターに関する全てのAPIをフックしようと考えたのです でもプリンターAPIは星の数より沢山あります いちいちフックするのは手間が掛かります そこでフックの代わりにhdcを付け替えてやろうと思ったのです これならば簡単でしょう! でも諦めました 別の方法を模索します ← 実はAPIフックを回避する為まだジタバタしておりますので、今後も宜しくお願い申し上げます ありがとうございました

関連するQ&A