It's not quite as simple as Nadhmi (@user5330265) makes out. The video may finish playing and reset to a blank frame between the timer ticks, in which case the pause is never executed.
I've found the following works, at the cost of missing the last iInterval msec of the video. tmrVideo timer interval is set to 1 msec. On my system it seems to run about every 15 msec, but diagnostics slow it down. It doesn't seem to add to the overall CPU load. I use a value of 250 for iInterval - currentPosition never seems to reach duration. Smaller values mean less lost video, but a greater chance of the blank frame appearing.
currentPosition is zero while the video is loading, which is why the test needs to be added to the condition.
tmrVideo need to be enabled after every axWindowsMediaPlayer1.Ctlcontrols.play() command.
private void tmrVideo_Tick(object sender, EventArgs e)
{
if ((axWindowsMediaPlayer1.currentMedia.duration - axWindowsMediaPlayer1.Ctlcontrols.currentPosition)*1000 <
iInterval) &&
axWindowsMediaPlayer1.Ctlcontrols.currentPosition!= 0)
{
axWindowsMediaPlayer1.Ctlcontrols.pause();
tmrVideo.Enabled = false;
}
}