Okay how do i get DS to stop doing something that he shouldnt be?

I have tried saying stop and then taking him away from whatever it is and giving him a toy to distract him.

an example being the fire place, its not going but would like him to learn to stay away (there is a fire guard around it) before winter. So if he goes to it i say stop, say its hot and then take him away and give him a toy, sometimes it works sometimes it doesnt.

My issue at the moment is my prescription glasses, he tries to grab them constantly, i understand that he is curious but he scratches my face and eyes when he does it too. First i continued with stop, you dont touch mummy's glasses. It didnt work. He knows what no is as if i say ethan no (mostly when he is about to do something dangerous) he sometimes stops but not when it comes to the glasses I say no you cant touch mummys glasses and put his hand away from them but he just looks at me and keeps going, i have tried different tones of voice, and i have also said after 10 times or so so of this i put him down and say off you go and play, but he cries and when i pick him up we go through it again. What can i do? Or do i just keep going with this?