Finally I have found the problem!
To get the full module path I used
GetFullPathName("Inj_DLL.dll", MAX_PATH, dll_path, NULL);
which uses the current working directory to determine the file path.
When I start the app manually the working directory is the path of the exe file, but when It's started from Visual Studio it uses the Working Directory from Project Properties->Configuration Properties->Debugging.
Since it was set to "$(ProjectDir)" by default, and the injected dll was in the Debug/Release dir, the dll file couldn't be found, so error 126 ERROR_MOD_NOT_FOUND.
I have changed this property to "$(SolutionDir)$(Configuration)\" and everything works like a charm now.
Thanks anyone who tried to help me with this question, I have discovered some new approaches to debug a non-working application.