That... is not minimal.
If all you want is to get list of dropped file names, then you don't need to use IDropTarget and all COM & ole craziness.
You just need to process WM_DROPFILES message instead. Like this: https://gist.github.com/mmozeiko/5b1700c558d37cb2bb2f00328c2982f6
As a bonus, this is much easier to use in C, not C++, code. In C code inheriting COM is pain. IDropTarget comes from "newer" Windows API that allows you to customize drop action and other extras. But there's no reason to use it, if you don't need its features.
...I think it's a good alternative to command-line only tools...
While implementing drag&drop is perfectly fine and you should do that, drag&drop is not a good alternative to command-line. It is terrible alternative. If you are making application that accepts some input to process and gives some output (text, image, sound, code, whatever...) then it should have cli interface. Sooner or later you will want to automate your workflow and then you'll want to run application automatically - either on each build, on each file you download, or some automated testing, or just on remote server. Making this work with GUI only application is huge pain. Not impossible, but still - painful.
Another note - saying that you release your code in public domain and at the same time saying in source code that it is "copyrighted" by you is kind of contradiction. Public domain means that you want code to be free of any copy-rights. You still can say that you are the author, or this code is developed by you, but there should not be any copyright for public domain code.