■ 投げ入れられたアイコンのパスを通知するコントロール、 IDropTarget 版。
使用には、登録(インストール)が必要、 RegSvr32 ファイル この場所 に、インストールされてしまうので注意!。 ( 置き場所を移動したら、そこで再び登録すれば、変更できる。) ※ 下の● 使用テスト に表示されていたら、既にインストールされている。
登録解除は、regsvr32 /u ファイル ( 新しく開く窓から使用不能になるが、object を確保している窓では、使用を続けられる。 更新[F5] しても続行可能なようなので、この窓は閉じる必要あり。)

● アイコンを投げ入れた時のマウスボタンは、どちらなのかが判る様に改造。 ShellAPI の DragAcceptFiles を止めて、IDropTarget を RegisterDragDrop する方法を使った。 ただ、よく判らない部分があり、これで大丈夫なのか不明。 これまでのとは、CLSID などは変えて、別物にしてある。 通知を受け取る関数の名前と、キーの状態の表し方は変更。

● 使用テスト
←この中に、アイコンを投げ入れると、↓そのパスを表示する。
0x00bbggrr 0x   現在の色:
    青緑赤、各1バイト。(最上位バイトを設定した場合は不明。)
    0: black、FF: red、FF00: green、FFFF: yellow、FF0000: blue、FFFFFF: white

● 使い方 ▽ 要素 <object classid="clsid:B1632519-F160-4010-AA10-BF0DC12245BA" id="iconPit" width="幅" height="高さ" ondragover="return false" ondragenter="return false" > ... param は、省略 </object> ▽ 通知の受け取り方 function iconPit::onDropFiles( paths, iKeyState ){ // アイコンが、ドロップされた時。 alert( paths ) // xxx.innerText = paths } // 受け取る値は、パスが、複数なら、改行( \n 1文字)で区切ってあるので、 // 配列への変換は、paths.split("\n") // 2つ目の引数は、ボタンと、修飾キーが押されているかどうかを表す数値。 // 左マウスボタン: 1 、右マウスボタン: 2 、 // [Shift]キー 4 、[Ctrl]キー 8 、[Alt]キー 32 、合わせてなら、その和 (ビットOR)。 function iconPit::onDropText( text, iKeyState ){ // テキストが、ドロップされた時。 alert( text ) } function iconPit::onDropLink( url, iKeyState ){ // ブラウザのリンク(Anchor)が、ドロップされた時。IE は不可。 alert( url ) } function iconPit::onDropOther( vbAry, iKeyState ){ // データを文字列として得る事に失敗した場合?に、 // 文字列でなく、VBArray で、数値(0~255)の配列を。 alert( vbAry.toArray() ) } ( iconPit は、object に指定した要素ID 。) その他の説明は、省略。以前の版の説明を、。

● ファイル ./DropFilesB.ocx 当該のコントロール ./DropFilesB/ ソース FormImpl.pas 作業部分 FormImpl.dfm フォーム DropTarget.pas 加えた IDropTarget の部分。 DropFilesB_TLB.pas タイプライブラリ DropFilesB.idl タイプライブラリ DropFilesB.dpr プロジェクトファイル ▽ 履歴 2011/8 IDropTarget 版。