Heh, yeah, it's sort of possible but a lot of work. I'd given some thought to the DLL injection idea a while back. The idea I had was to use an OP2 client with an injected DLL to issue commands for that player instead of a human opponent. It'd save you from having to write a whole new client, but you'd still have to write a whole new general AI that could adapt to lots of different maps. It's definately a lot of work. I certainly didn't get any farther than a proof of concept with the DLL injection and issuing a few hardcoded commands for a hardcoded player. But the nice thing was it could handle commands for any player on any map, multi or single player. It could also work cooperatively with a player, say only issuing commands when the player doesn't have one queued.
I did have a few concerns with the project though since you could issue invalid packets that weren't error checked properly and cause crashes or weird behavior. I believe I demonstrated some of the weird behavior to Hacker once.
But yeah, other than invalid packets, the AI would essentially have to play with the same rules as a player would (or at least most of them, depending on whether or not you told the game engine it was an "AI" player and hence didn't have to worry about population and such.)