Tentar explicar o que é o complemento directo através de uma definição de tipo semântico (isto é, relativo ao significado) não consegue ser uma maneira prática de o identificar. Nos exemplos dados pelo consulente, «o rato» não é o resultado da acção, é o paciente, mas não deixa de constituir um complemento directo.
Para evitar critérios semânticos que me parecem pouco evidentes, considero que a maneira mais simples de o detectar em português é de tipo sintáctico: o complemento directo é o constituinte que pode ser substituído pelo pronome pessoal o (s)/a(s). Por exemplo:
(1) (a) «O gato matou o rato.»
(b) «A Maria perdeu o namorado.»
Pelo menos em português europeu, se «o rato» e «o namorado» puderem ser substituídos pelo pronome complemento o, então é porque se trata de um complemento directo:
(2) (a) «O gato matou-o.»
(b) «A Maria perdeu-o.»
E nas outras variedades? Aqui, as coisas complicam-se, porque há confusões entre o pronome de complemento directo o(s)/a(s) e o pronome de complemento indirecto lhe. Estas confusões não fazem parte das diferentes normas-padrão, mas acho que é importante pensar em estratégias de identificação de funções gramaticais com base nessas variedades. Neste contexto, arrisco-me a sugerir o seguinte teste: dado que o(s)/a(s) é frequentemente substituído pela forma ele(s)/ela(s), o complemento directo é a expressão que se encontra normalmente à direita do verbo e que pode ser substituída por ele(s)/ela(s); exemplos:
(3) (a) «O gato matou ele.»
(b) «A Maria perdeu ele.»
Repito: as frases em (3) são agramaticais em todas as normas-padrão da língua portuguesa, mas ocorrem como sequências aceitáveis em muitos dialectos quer de certos meios urbanos em Portugal quer (suponho) coloquialmente nos outros países onde se fala português.
Em relação a me, te, nos e vos, que são, ao mesmo tempo, formas pronominais de complemento directo e de complemento indirecto, a identificação da função sintáctica relevante pode ser feita com a substituição dessas formas pelas de terceira pessoa:
(4) (a) «O gato arranhou-me»/«O gato arranhou-te» = «O gato arranhou-o/a» ou dialectalmente «O gato arranhou ele/ela».
(b) «A Maria viu-nos»/«A Maria viu-vos» = «A Maria viu-os/as» ou dialectalmente «A Maria viu eles/elas».