Ci può essere utile ricordare che il pronome "gli" può essere sostituito da "a lui", essendo semanticamente equivalenti, quindi "gli ho cucinato il pranzo" può essere tradotto equivalentemente come "ho cucinato il pranzo A LUI". La regola generale è la seguente: quando il verbo è INTRANSITIVO, si usa la particella "lo", quindi: lo faccio andare, lo faccio tornare, lo faccio cadere, lo faccio partecipare etc. Tutti i verbi di moto appartengono a questa categoria. Con i verbi TRANSITIVI invece, si possono usare entrambe le forme con differenti significati: prendiamo un verbo transitivo arbitrario come cucinare. Come già anticipato, entrambe le forme "lo ho cucinato --> l'ho cucinato" e "gli ho cucinato" sono corrette ma diametralmente opposte come significato. Con la prima, supponendo che con quel lo si intenda un animale, SUBISCE l'azione, ovvero viene cucinato, nella seconda, trasformando la frase in "ho cucinato a lui", evidentemente l'animale beneficia dell'azione, ovvero supponendo sia un cane il padrone gli prepara la pappa.