je connait pas le delphi, donc la question 2 j´en sais rien.
Mais pour la question 1, je pense que tu fait absolument n´importe quoi :
d´abord : shellexecute c´est pour exécuter des commande du shell comme cd, ou netstat ou d´autre commande dos.
Mais GetDesktopWindow ça n´a rien à voir, c´est une commande de l´API windows, qu´il faut appeler sans passer pas le shell, mais directement pas une DLL ( je ne sais pas trop comment en delphi).
De toute manière, cette fonction n´a rien à voir avec l´ouverture d´un dossier, puice qu´elle te renvoie le handle du bureau.
Je ne sais pas où est ce que tu as trouvé ça, mais si c´est dans un toturial ou un fichier d´aide, je te conseille de ne plus jamais le lire.