Not a real elegant solution, but could you use SendKeys() to echo a number to a temp file, then read that file? With suitable error checking to be sure the file was created properly, if you then read the file's contents and it is the number you sent, your NumLock state is OK; otherwise SendKeys("{NUMLOCK}"). You could even restore the NumLock state after your commands if you had to change it and you want to be nice

Joe