For #1 - reading the keyboard buffer even when the program does not have the input focus. Use the GetAsyncKeyState function. You will have to code it in a loop and search all scan codes. Be sure to include a call to Sleep for a few milliseconds between each call to GetAsyncKeyState to prevent hogging the CPU.
http://msdn.microsoft.com/en-us/library/windows/desktop/ms646293%28v=vs.85%29.aspx[
^]
The above technique will tell you which keys are de-pressed at any given moment. From that you can infer key events. You will also have to map key scan codes to actual ASCII characters. Example: VK_A is the letter 'A'. The above technique is also limited to the current workstation. If someone switches to a different workstation, key strokes in the other session won't be captured.
For #2 - how to run system files from the CLI. That's a bit vague. Do you want to programmatically start another program? If so, use CreateProcess or ShellExecute. If you want to start something from a command window, type the program name with full path, or type "start" followed by the program name (preferably with the full path).
http://msdn.microsoft.com/en-us/library/windows/desktop/ms682425%28v=vs.85%29.aspx[
^]
For #3 - BIOS Beep. Use the MessageBeep function.
http://msdn.microsoft.com/en-us/library/windows/desktop/ms680356%28v=vs.85%29.aspx[
^]
For a chime, use the older (but deprecated) Beep function. Make several calls with different pitch and duration.
http://msdn.microsoft.com/en-us/library/windows/desktop/ms679277%28v=vs.85%29.aspx[
^]