みんなおはよう。
私は現在、Windows DWM API(DWMサムネイルなど)で利用できる機能を中心に構築された小さなアプリケーションを作成しようとしています。そのような機能の1つは、アプリケーション内からサムネイルの領域を動的に選択し、それを拡大/拡大する機能です。これは、ある種の「領域の設定」機能を使用してDWMから実行できる場合がありますが、私はAPIに入る前に、まず自分のルートを試してみたかったのです。
最近Delphiの例を見つけたので、デモから拡張して、より具体的なものを構築したいと思っていました。私はコードをFiremonkey FM2
アプリケーションに移動することに着手しました(VCLよりもフレームワークの視覚的機能を非常に好むため)。いくつかの調整を加えることで、なんとかビルドできましたが、残念ながらDWMRegisterThumbnail
、VCLバージョンが問題なく動作しているにもかかわらず、FMXアプリケーションで実行すると有効な結果が返されないようです。
それから私はもう少し調べて、Hydraを試してみることにしました。動作するVCLの例をHydraプラグインにコピーし、Firemonkeyホストアプリケーションを作成しました。両方のパーツを正しくセットアップしてコンパイルしました。DLLが正しくロードされ、FMXホスト内のVCLプラグインインターフェイスが期待どおりに表示されました。ただし、ウィンドウのDWMサムネイルを表示しようとすると、非HydraFMXアプリケーションを実行したときと同じ問題が再び発生しました。
次に、VCLとFMXの相互作用に固有の問題ではないことを確認するために、VCLホストアプリケーションの作成に取り掛かりました。VCLプラグインにロードされたVCLホストをコンパイルしましたが、VCLホスト内にVCLプラグインが表示されました。しかし、もう一度、DWMからサムネイルを表示できないことに気づきました。明らかに、これはFiremonkeyとVCLの相互作用の問題ではありません。
したがって、DLLからDWMコードを実行する際の問題であると結論付けました。理想的には、サムネイルの上にドロップする方が簡単であるという理由だけでFMXホストアプリケーションを作成TSelection
し、その方法でスケーリングを処理したいと思います(たとえば、コードが非常に少なく、カスタムコンポーネントを探す必要がない)。などの追加のボーナスについて言及しMakeScreenshot
ます。
だから、追いかけるために; HydraプラグインからDWMAPIを呼び出したり、DWMサムネイルをFiremonkeyサーフェスに出力したりすることは可能ですか?
私のHydraプラグインで使用されているコードは、リンクされた例で使用されているコードと同じです。ホストアプリケーションで使用されているコードは、RemobjectYoutubeChannelの簡単な例に基づいています。