В принципе, теоретически это делается так: даблклик во всей системе можно перехватывать хуками (
Hooks - ловушки), для этого правда нужна отдельная DLL (хуки только через библиотеки). Затем когда уже можем перехватывать двойной клик при этом самом клике получаем активное окно, если это рабочий стол получаем выделенный объект на рабочем столе, если вы не знаете, то
рабочий стол это обычный TListView. Т.е. выделенный объект можно узнать с помощью общения программы с рабочим столом сообщениями.