I'm seeing these questions a ton. Frankly I wouldn't worry about it very much, because people will ask these questions imprecisely. They will not mean exactly two hours. They will not really care whether you're counting this hour, or the last hour. Different people will have different opinions about what the phrase means.
If I were to ask the question, I would mean what have you done from 17:40 to 19:40, e.g. the preceding 120 minutes, because I don't think of the day's 24 hours as an immutable construct.
The most important thing when answering this question is to consider the context in which it was asked. Give the information most relevant to the person asking the question. If it is a question that is precise, as in you're a lawyer being asked for a bill by hours, then you will need to answer precisely.
If it is a question in which the timeframe is approximate, like a doctor is asking you "what did you eat in the last two hours?", then if you ate a rotten tuna sandwich two hours and 30 minutes ago, you should absolutely mention that, because rotten fish could explain your medical symptoms.
Wikipedia explains that one use of the present perfect is to describe "actions started in the past and continuing in the present", with this example:
We have lived in Sapporo for eleven years.
That looks a lot like the sentence in your grammar book:
I have read this book for two hours.
But here's the problem: living is a relatively permanent thing, whereas reading and cooking are temporary activities. In other words, I can say "I have lived in Sapporo" while I am still living in Sapporo – even if I'm visiting you in Moscow. This boils down to the difference between stative verbs (such as live or know) and dynamic verbs (such as read and cook).
You can still use the present perfect with dynamic verbs, but you do this when you are talking about "an unspecified period between the past and now" or when "the precise time of the action is not important or not known". For example:
I have read this book three times.
I have cooked hot cross buns in my new oven.
Going back to your sentences, we can use the present perfect continuous, and say things like:
I have been reading this book for two hours.
I have been cooking since three o'clock.
Best Answer
No.
It is now 7:00, and I have been waiting for you since 1:00.
I was waiting for you until 5:00, but gave up and went home. That was 6 hours ago; now it is 11:00. (This does not indicate how long you waited for me.)