title: What is the difference about GetKeyState and GetAsyncKeyState?
body: <p>From <strong>MSDN</strong> , I have learned that <code>GetKeyState</code> is associated with message queue of current thread. </p>
  
  <p>Then I created two sample applications : <code>KeyPresser</code> and <code>BackChecker</code>. </p>
  
  <p>I press a key in <code>KeyPresser</code> , in this application , I am using <strong>GetKeyState/GetAsyncKeyState/GetKeyboardState</strong> to retrieve the pressed key state , and they tell me that key is pressing down. </p>
  
  <p>Then I send(or post) a message form <code>KeyPresser</code> to <code>BackChecker</code> , to notify <code>BackChecker</code> to check the key state in it's thread . </p>
  
  <p>I get same result from <code>BackChecker</code> indicate that key is pressed. But I think <strong>GetKeyState/GetKeyboardState</strong> should return <strong>zero</strong> because the key is pressed in thread of <code>KeyPresser</code> , which is not associated with thread of <code>BackChecker</code>. </p>
  
  <p><strong>Why?</strong></p>