Yes, we can programmatically monitor replication using T-SQL or by using Replication Management Objects (RMO). Please see Programmatically Monitor Replication for examples.
I prefer to use RMO for this, starting the agent and handling the Status Event and displaying the agent status on a form. I have an example of how to do this for the Merge Agent on my blog: http://www.sqlrepl.com/sql-server/implementing-a-replication-agent-progess-bar/
The same thing could be done for the Distribution Agent.