Shell Extension?

vbimport

#1

I’d like to add a shell extension to all files and all folder to burn the selected item with nerocmd.exe.
Now i found the reg key to modify and successfully burn a single file to a cd-rw with the command:

F:\PROGRA~1\Ahead
ero
erocmd.exe --write --drivename g --close_session --force_erase_disc --underrun_prot --enable_abort --artist %USERNAME% --title “%1” --real --iso “%1” %1

if i use the same command to burn two or more files nero try to burn them separately and finally can only burn one of them and gives errors for all the others,how can i tell it to burn them together on the same disc?

i also found the reg key to modify to enable the burning of a directory but if the directory has a name whit some spaces, e.g: “abc efg hij” , nero gives me an error like:

“abc resulted in no matches, the specified file was not found”

how can i avoid this?


#2

i found the --use_allspace command but if add to my command line nothing changes,i can’t burn file or direcories with spaces in their names.
Any help?


#3

To burn a directory use wildcards:

–write --real --tao --drivename “Image Recorder” --iso BYOP C: emp\build*.* --recursive --output_image C: emp\BYOP.iso

You can use 8.3 filenames to get around your space problem:

for example:
c:\Program Files = c:\progra~1


#4

also try encasing\enclosing the PATH to filenames containing blank spaces with quotations;
ex; “C:\My Music Storage\Files to Be Burned”
works on almost all command consoles


#5

My problem is that i’d like to do a shell extension to

1)right click a file, multiple files, a directory

2)click on “Burn With Nero” (for example) in the context menu

39 start the burning process

so i can’t insert the directory name with spaces into " " because i dont know which is the name it could be every directory on my hard disk.

This is my reg file:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT*\shell\Burn con Nero]

[HKEY_CLASSES_ROOT*\shell\Burn con Nero\command]
@=“F:\PROGRA~1\Ahead
ero
erocmd.exe --write --drivename g --underrun_prot --close_session --force_erase_disc --underrun_prot --enable_abort --use_allspace --artist %USERNAME% --real --iso “%1” %1”

the %1 at end makes me burn only a single file one file that i already selected if this has no space in its name, if i put . instead %1 it burns all the file within the directory i right-clicked. But if i select two or more files and then right-click them with %1 at the end nero burns in any case only one of them.This is my problem.
Any help?


#6

I understand now what you want - however my batch scripting is quite limited (ok - extremely) …but I’ll guess a bit if you can afford the media :wink:
try these , one at a time;

%%1
%1 .
%1 %2
%1==.
IF “%~1”=="" (SET Rx=".*") ELSE (SET Rx="%~1")

these are just some variations on what I recall about batches and perhaps you can find your answer by writing a batch file and use the context menu to Call it (the batch can be made to give you choices/selections and prompts, etc).

I use the HKCR*\shell key a lot too – to place my contextual menu items under it;
Open with NotePad
Hexeditor
Open in WordPad
etc…yet I’m not too familiar with Nero Command, though I’m also not very good on batches either -and nero command seems to be a very batch script type of command set, though using the – to prefix commands, IIRC, is more unix style.

Wish I could help more, and you seem s-o-o-o-o close to being able to do ‘exactly’ what you want. I just don’t recall the commands that enable/tell the script to pause/wait in between or separate “selected” files.

BTW - %1 just tells it to use the Current DIR, IIRC - and don’t know what role the tilde plays [%~1] in above example plays - but got it from here, when searching through some batch sites looking for a way to select certain files within a DIR only

Hope you can find a solution


#7

None of those switches worked. I can’t explain why i’m not able to do that!I installed CopyToDvd by VSO and this program set a command in the context menu like “CopyToDvd” and no matter what you select:one files,two or more files,directories…but i’m not able to clone that function for nero.

I find this command not in the shell key where i put my Nero command but in the shellx,what are the differences between these two keys?


#8

i’m starting to think that it’s Nerocmd that cannot accept all the common batch switches,what do you think about?


#9

you start getting into Win32 APIs when your talking Shellex keys - they have to do with 32bit Registered ClassIDs and . These are found under the HKCR\ClassID / Interface / and TypeLib keys - to name the main ones.

I did a test by selecting 3 notepad files at once and right clicking (context menu) and using my “Open with Notepad” add-on to HKCR*\Shell\Notepad…3 different/separate files opened at the same time - they were not all combined into the same Notepad instance.

Then I viewed with Process Explorer (www.sysinternals.com) which shows you the DLL dependencies for any module. What does this all mean ? not sure, except to say you may need to call Nero through a RunDLL.exe or RunDLL32.exe call (which runs a dll as an app) - more later perhaps.

I’m surprised you can even get it to burn at all, the way you have been doing …allow me to ask - does the BurningROM GUI interface Open up in front of you during the process ??? and will it show the steps - go through the usual motions ?? (likely quickly) that one would normally see when burning a compilation ?

My point is - if you can get it to burn 1 file - you can get it to burn multiples - I just don’t know how just yet - but there should be a way through command line. I’m not at all familiar with Nero’s command line , and need to look into it further. Forgive me - but perhaps over the next few days, I may get a bit curious and mess with it - just right now isn’t the time for me.

It’s an easy answer, when it comes to batchs and commands - but it takes someone who knows…IOW it’s very hard to lookup - you have to try and extrapolate from simialr examples.
some places to start looking (I assume you’ve been to Ahead / Nero’s website);
http://www.robvanderwoude.com/batchfiles.html
http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/ntcmds_shelloverview.mspx
http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/ntcmds.mspx

as far as CopyToDVD - reminds me of an Free App i just recently uninstalled called CopyURL…which was excellent for use with IE (but I don’t use IE, and haven’t for quite some time now)

a few more tries/guesses for the moment - off the top of my head;
“%1” (enclose %1 in quotes)
(%1) (parentheses)
%1 () (add blank parentheses)

variations of above
%1 ()
“%1” (
)

newbie try - similar to the \command\printto extensions found in the reg
“%1” “%2” “%3” “%4”

there are many combos to try that just boggles my mind sometimes (I’m not a programmer at all) using various batch commands like FOR - IF - GOTO - CHOICE etc

– but maybe in order to grab a “group” or “multiple” files at once takes the Win32 interface using DLLs like Advapi32.dll, Comctl32.dll, Explorer.exe, User.dll , etc etc - at this point it’s all merely speculation on my part :frowning:

Can you post alink to the available Nero Command line switches and their uses ??


#10

No the BurningROM GUI interface doesn’t Open up, a dos prompt opens an close automatically at the end of the burning.
Actually if i select three files nerocmd opens three dos box but only the first file is burned because the other two find an api, or something like that, not available.I don’t know what it means…

I already have your thoughts:if i can burn one file i MUST have the possibility to burn two or more!
I’m going to try the other switches you gave me…

Edit: i added the commandline reference in the next reply but it was too long and now i can’t go on posting,can someone correct this?

Anyway i attached the .txt file with all the possible switches.

nerosw.txt (13.3 KB)


#11

I forgot the command line reference for nerocmd.exe:


Usage:
  _______________
 | List available| --listdrives
 | drives        |
 |_______________|
 | Obtain drive  | --driveinfo --drivename <name>
 | info          |
 |_______________|
 | Obtain disc   | --discinfo --drivename <name>
 | info          |
 |_______________|
 | Write         | --write --drivename <name> [--real] [--tao]
 | ISO/Audio Disc| [--artist <artist>] [--title <title>] [--speed <speed>]
 |               | [--audio] <audio files> [--cdextra] [--iso <volumename>]
 |               | [--iso-no-joliet] [--iso-mode2] [--speedtest]
 |               | [--enable_abort] [--close_session] [--detect_non_empty_disc]
 |               | [--cd_text] [--underrun_prot]
 |               | [--import_udf] [--import_vms_session]
 |               | [--use_rockridge] [--create_iso_fs] [--create_udf_fs]
 |               | [--disable_eject] [--verify] [--dvd] [--use_allspace]
 |               | <disk file> ...
 |               | [--force_erase_disc] [--nero_log_timestamp]
 |               | [--output_image <filename>]
 |               |
 |               | NOTE: At least one audio file or one disk file needs to be
 |               | specified!
 |_______________|
 | Write         | --write --drivename <name> [--real] [--tao]
 | Video CD      | --videocd [--speed <speed>] [--speedtest] [--enable_abort]
 |               | [--close_session] <video files> [--iso <volumename>]
 |               | [--iso-no-joliet] [--iso-mode2] [--speedtest]
 |               | [--enable_abort] [--close_session] [--detect_non_empty_disc]
 |               | [--underrun_prot] [--disable_eject] <disk file>...
 |               | [--force_erase_disc] [--nero_log_timestamp]
 |               | [--temp_path <path>] [--output_image <filename>]
 |_______________|
 | Write Super   | --write --drivename <name> [--real] [--tao]
 | Video CD      | --svideocd [--speed <speed>] [--speedtest] [--enable_abort]
 |               | [--close_session] <video files> [--iso <volumename>]
 |               | [--iso-no-joliet] [--iso-mode2] [--speedtest]
 |               | [--enable_abort] [--close_session] [--detect_non_empty_disc]
 |               | [--underrun_prot] [--disable_eject] <disk file>...
 |               | [--force_erase_disc] [--nero_log_timestamp]
 |               | [--temp_path <path>] [--output_image <filename>]
 |_______________|
 | Write image   | --write --drivename <name> [--real] [--tao] [--dvd]
 |               | --image <image filename> [--speed <speed>] [--speedtest]
 |               | [--enable_abort] [--close_session] [--detect_non_empty_disc]
 |               | [--underrun_prot] [--disable_eject]
 |               | [--force_erase_disc] [--nero_log_timestamp]
 |               | [--output_image <filename>]
 |_______________|
 | Write         | --write --drivename <name> [--real] [--tao]
 | freestyle disc| [--artist <artist>] [--title <title>] [--speed <speed>]
 |               | [--cdextra] [--iso <volumename>]
 |               | [--freestyle_mode1 <filename>]
 |               | [--freestyle_mode2 <filename>]
 |               | [--freestyle_audio <filename>]
 |               | [--iso-no-joliet] [--iso-mode2] [--speedtest]
 |               | [--enable_abort] [--close_session] [--detect_non_empty_disc]
 |               | [--cd_text] [--underrun_prot]
 |               | [--import_udf] [--import_vms_session]
 |               | [--use_rockridge] [--create_iso_fs] [--create_udf_fs]
 |               | [--disable_eject] [--verify] [--use_allspace] <disk file>...
 |               | [--force_erase_disc] [--nero_log_timestamp]
 |               | [--output_image <filename>]
 |               |
 |               | NOTE: Any number of freestyle tracks can be specified up to
 |               | a maximum of 99 tracks.!
 |_______________|
 | Estimate      | --estimate --drivename <name> [--tao]
 | track size    | [--iso <volumename>] [--iso-no-joliet] [--iso-mode2]
 |               | [--close_session] [--import_udf] [--import_vms_session]
 |               | [--use_rockridge] [--create_iso_fs] [--create_udf_fs]
 |               | [--disable_eject] [--dvd] [--use_allspace]
 |               | [--estimate_no_fs_overhead] [--estimate_no_data]
 |               | [--estimate_no_exact_size] <disk file> ...
 |_______________|
 | Read audio    | --read --drivename <name> [--read_speed <speed>]
 | track(s)      | --XY <filename> [-XY <filename> ...]
 |_______________|
 | List audio    | --listformats
 | formats       |
 |_______________|
 | Erase disc    | --erase [--entire] --drivename <name>
 |_______________|
 | Eject disc    | --eject --drivename <name>
 |_______________|
 | Load disc     | --load --drivename <name>
 |_______________|
 | Obtain image  | --imageinfo <filename>
 | file disc info|
 |_______________|
 | Version info  | --version
 |_______________|

 Each command supports the following switches: [--no_error_log],
 [--error_log <log filename>], [--no_user_interaction] and [@parameter_file]

  _______________
 | --write       | Burn disc.
 |_______________|
 | --drivename   | <name> is either the "full name" of the drive or the
 | <name>        | drive letter.
 |_______________|
 | --real        | Forces the disc to be actually burned. If --real is not
 |               | specified the process is only simulated.
 |_______________|
 | --tao         | Disc is burned in TAO mode (DAO is default).
 |_______________|
 | --burnproof   | Obsolete option, use --underrun_prot instead.
 |_______________|
 | --artist      | <artist> is the artist name as to be written on disc.
 | <artist>      |
 |_______________|
 | --title       | <title> is the title to be written on disc.
 | <title>       |
 |_______________|
 | --read_speed  | <speed> is the speed at which the audio tracks will be read
 | <speed>       | (in x150KB/s).
 |_______________|
 | --speed       | <speed> is the speed at which the disc will be burned
 | <speed>       | (for CD in x150 KB/s and for DVD in x1,385 KB/s).
 |_______________|
 | --speed_in_   | <speed> is the speed at which the disc will be burned
 |  kbps <speed> | (in KB/s).
 |_______________|
 | --audio       | The disc is burned with audio information.
 |_______________|
 | <audio files> | <audio files> is a list of audio files (wav, mp3, wma, pcm).
 |_______________|
 | --cdextra     | Use the CDExtra feature.
 |_______________|
 | --iso         | <volume name> is the volume name to be stored on the disc.
 | <volume name> |
 |_______________|
 |--iso-no-joliet| Do not use Joliet format.
 |_______________|
 | --iso-mode2   | Burn the disc using mode 2.
 |_______________|
 | --speedtest   | Perform speed test before burning.
 |_______________|
 | --enable_abort| Notify which operations can and which cannot be aborted.
 |_______________|
 |--close_session| Close the session, not the whole disc.
 |_______________|
 |--detect_non_  | Detect if the disc for burning is a non empty
 | empty_disc    | RW media and offer to take certain actions.
 |_______________|
 | --cd_text     | Write CD text (if supported by device).
 |_______________|
 | --videocd     | Burn a Video CD.
 |_______________|
 | --svideocd    | Burn a Super Video CD.
 |_______________|
 | <video files> | <video files> represents a list of video files (mpeg, jpeg).
 |_______________|
 | --image       | <filename> is the filename to the image file.
 | <filename>    |
 |_______________|
 | --read        | Read audio track(s).
 |_______________|
 | --XY          | XY is the number of the audio track that is to be saved to
 | <filename>    | <filename>.
 |_______________|
 | --erase       | Erase an RW media.
 |_______________|
 | --entire      | Erase the entire disc (the default is quick erase).
 |_______________|
 | --eject       | Eject disc.
 |_______________|
 | --load        | Load disc.
 |_______________|
 | --version     | Print NeroAPI version information.
 |_______________|
 | --underrun_   | Protect from underrun condition.
 |   prot        |
 |_______________|
 | --use_        | Use rockridge format.
 |   rockridge   |
 |_______________|
 | --create      | Create ISO filesystem.
 |   _iso_fs     |
 |_______________|
 | --create      | Create UDF filesystem.
 |   _udf_fs     |
 |_______________|
 | --dvdvideo    | Perform reallocation of files in VIDEO_TS
 |   _realloc    | directory.
 |_______________|
 | --dvdvideo    | Create DVD-Video compatible disc.
 |   _cmpt       | --create_iso_fs --create_udf_fs and 
 |               | --iso_no_joliet also need to be specified.
 |_______________|
 | --import      | Obsolete option; will be ignored.
 |   rockridge   |
 |_______________|
 | --import_udf  | Import UDF format.
 |_______________|
 | --import_vms  | Import Virtual Multisession (VMS) session
 |   _session    | (session number treated as VMS session).
 |_______________|
 | --import      | Obsolete option; will be ignored.
 |   _iso_only   |
 |_______________|
 | --import      | Import session number (if omitted, the last
 |  <session #>  | session is imported).
 |_______________|
 | --prefer      | Obsolete option; will be ignored.
 |   _rockridge  |
 |_______________|
 | --freestyle_  | Burn the file in mode 1.
 |  mode1        |
 |_______________|
 | --freestyle_  | Burn the file in mode 2.
 |  mode2        |
 |_______________|
 | --freestyle_  | Burn the file in audio mode.
 |  audio        |
 |_______________|
 | --disable_    | Disables disc ejection after burn completion.
 |   eject       |
 |_______________|
 | --verify      | Verify ISO filesystem after writing.
 |_______________|
 | --dvd_high_   | Used for better compatibility of burned DVDs.
 |  compatibility| At least 1GB will be written.
 |_______________|
 | --dvd         | Select DVD as media type.
 |_______________|
 | --recursive   | Do a recursive file search.
 |_______________|
 | --force_erase_| Delete disc without user interaction
 |   disc        | (requires --detect_non_empty_disc).
 |_______________|
 | --nero_log_   | Add a timestamp to the log's file name.
 |   timestamp   |
 |_______________|
 | --temp_path   | Specify a temporary path for Video CD files.
 |_______________|
 | --media_type  | Specify a media type (combine with +) 
 |   <type>      |  media_cd, media_ddcd, media_dvd_m, media_dvd_p,
 |               |  media_dvd_any, media_dvd_ram, media_ml, media_mrw,
 |               |  media_no_cdr, media_no_cdrw, media_cdrw, media_cdr
 |               |  media_dvd_rom, media_cdrom, media_no_dvd_m_rw,
 |               |  media_no_dvd_m_r, media_no_dvd_p_rw,
 |               |  media_no_dvd_p_r, media_dvd_m_r, media_dvd_m_rw,
 |               |  media_dvd_p_r, media_dvd_p_rw, media_fpacket,
 |               |  media_vpacket, media_packetw, media_hdb or
 |               |  media_dvd_p_r9).
 |_______________|
 | --no_user_    | Allow the whole process to take place with no user
 |  interaction  | interaction (no questions asked).
 |_______________|
 | --output_image| Specify output image file name if image recorder is used
 |               | to avoid prompting for filename.
 |_______________|
 | --use_allspace| Use all space on the media.
 |_______________|
 | --relax_joliet| Relax Joliet file name length limitations.
 |_______________|
 | --japanese_   | CD Text is treated as Japanese CD Text (must include
 |  cd_text      | --cd_text as well).
 |_______________|
 |--disable_eject| Do not eject the RW media after erasing it.
 | _after_erase  |
 |_______________|
 | --force_eject | Force disc ejection after erasing the RW media.
 |  _after_erase |
 |_______________|
 | --system_     | <text> is the "system identifier" of an ISO track.
 |  identifier   |
 |  <text>       |
 |_______________|
 | --volume_set  | <text> is the "volume set" of an ISO track.
 |  <text>       |
 |_______________|
 | --publisher   | <text> is the "publisher" of an ISO track.
 |  <text>       |
 |_______________|
 | --data_       | <text> is the "data preparer" of an ISO track.
 |preparer <text>|
 |_______________|
 | --application | <text> is the "application" of an ISO track.
 |  <text>       |
 |_______________|
 | --copyright   | <text> is the "copyright" of an ISO track.
 |  <text>       |
 |_______________|
 | --abstract    | <text> is the "abstract" of an ISO track.
 |  <text>       |
 |_______________|
 |--bibliographic| <text> is the "bibliographic" of an ISO track.
 |  <text>       |
 |_______________|
 | --backup      | Replace imported files only if newer are found.
 |_______________|
 | --booktype    | The book type of a burned DVD will be set to
 |   _dvdrom     | DVD-ROM.
 |_______________|
 | --no_booktype | Do not change the book type of a DVD even if the default
 |   _change     | setting is to change the book type to DVD-ROM.
 |_______________|
 | --estimate_no | Do not include the file system overhead in calculation.
 |   fs_overhead |
 |_______________|
 | --estimate_no | Do not include data in calculation.
 |   data        |
 |_______________|
 | --estimate_no | Do not calculate the exact size (quicker).
 |   exact_size  |
 |_______________|
 | --cd_overburn | Specify CD overburn size in blocks.
 |   <size>      |
 |_______________|
 | --dvd_overburn| Specify DVD overburn size in blocks.
 |   <size>      |
 |_______________|
 | @param_file   | param_file contains the command line arguments.
 |_______________|

#12

thanks - but I guess somemore research is in order for me …I found I too have NeroCmd.exe and found the [NeroCmd --help | more] switch to yield what you posted AND this;

| write | --write --drivename <name> [–real] [–tao]
| freestyle cd | [–artist <artist>] [–title <title>] [–speed <speed>]
| | [–cdextra] [–iso <volumename>]

	 [--freestyle_mode1 &lt;filename&gt;]
	 [--freestyle_mode2 &lt;filename&gt;]
	 [--freestyle_audio &lt;filename&gt;]
	 [--iso-no-joliet] [--iso-mode2] [--speedtest]
	 [--enable_abort] [--close_session] [--detect_non_empty_cdrw
	 [--cd_text] [--underrun_prot] [--import_rockridge]
	 [--import_iso_only] [--prefer_rockridge]
	 [--use_rockridge] [--create_iso_fs] [--create_udf_fs]
	 [--disable_eject] [--verify] &lt;disk file&gt; ...
	 [--force_erase_cdrw] [--nero_log_timestamp]

	 NOTE: Any number of freestyle tracks can be specified up to
	99 tracks.!

==========================================

what seems to be the issue mainly is incorporating the GUI and the commandline as one.


#13

use this at a command line to save the nerocmd help to a text file:

“c:\program files\ahead
ero
erocmd” /? > “c:\program files\ahead
ero
erocmdhelp.txt”


#14

:confused: :confused:


#15

I hope now Title tag problem is gone.


#16

good job czykit - it’s fixed now;

thanks for the info kttii – though it’s funny - for my antiquated NeroCmd.exe version…it seems ONLY –help worked for listing the info, and /? does not…which is a bit odd, since I’m on 98, and almost all DOS command line help is in the /? form.

This works for me, and you end up with a Desktop file for easy finding…and just in case someone else comes along and wants to do it;
from C:&gt;
cd “program files\ahead
ero”

now at C:\Program Files\ahead\Nero>
nerocmd --help > C:\Windows\Desktop\NeroHelp.txt

…hmmm
anyway - so I’m still pondering the orig issue :slight_smile:

and these switches seem it/they may be useful…



 | --XY          | XY is the number of audio track that is to be saved into
 | < filename >    | < filename >

===========================
 
 | read audio    | --read --drivename <name> --XY <filename>
 | track(s)      | [-XY < filename > ...]

===========================

 | < audio file >  | < audio file > is a list of audio files (wav, mp3, wma, pcm)

============================

 | @param_file   | param_file contains command line arguments
 

or having to create some sort of a ‘playlist’ previous to burning.

OT – isn’t it odd that the HTML tags, are in effect even when encased in the [ code] tags ? I had to add spaces in everything with HTML tags to above code – oh well – i see czykit manged to do it successfully using HTML Code tags.

…bah - I need to learn more about this stuff, and I’m sure me having Javascript OFF isn’t helping either, since I’ll have to turn it ON for a bit and see the diff, and find out “which” tags are the correct ones to use when there are [< > 's] in the code


#17

Can a MOD please delete my posts in this thread???
Thank you. :slight_smile:


#18

[QUOTE=boombastic;1113273]My problem is that i’d like to do a shell extension to

1)right click a file, multiple files, a directory

2)click on “Burn With Nero” (for example) in the context menu

39 start the burning process

so i can’t insert the directory name with spaces into " " because i dont know which is the name it could be every directory on my hard disk.

This is my reg file:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT*\shell\Burn con Nero]

[HKEY_CLASSES_ROOT*\shell\Burn con Nero\command]
@=“F:\PROGRA~1\Ahead
ero
erocmd.exe --write --drivename g --underrun_prot --close_session --force_erase_disc --underrun_prot --enable_abort --use_allspace --artist %USERNAME% --real --iso “%1” %1”

the %1 at end makes me burn only a single file one file that i already selected if this has no space in its name, if i put . instead %1 it burns all the file within the directory i right-clicked. But if i select two or more files and then right-click them with %1 at the end nero burns in any case only one of them.This is my problem.
Any help?[/QUOTE]

do you have any idea how can i create a CD with a file.PDF???


#19

[QUOTE=boombastic;1116777]I already have your thoughts:if i can burn one file i MUST have the possibility to burn two or more!
I’m going to try the other switches you gave me…
[/QUOTE]

Sorry for having to disappoint you but it simply is not possible to have multiple files being handled by one process this way. It is a know limitation of the “normal/simple” windows file registration system.

There are two more advances ways to register file extensions in Windows which you can use to achieve it:

  1. IDropTarget
    You can do it by creating a COM class which implements the
    IDropTarget interface and then register that class as file handler. I have to warn you however that this is quite complicated. Search msdn for more details.

  2. DDC
    I don’t know anything about DDC but I know that some apps use it to achive your goal. I assume it is even more complicated than implementing IDropTarget…

I guess it is bad news for you but you won’t get this running without writing quite a lot of custom code.