我希望有一個Windows控制檯程序做一些事情,如果某個鍵被按下時, 像
while(1)
{
....
if(the key 'o' is pressed down)
....
}
但我不知道要在中放什麼聲明。如何檢查按鍵'o'是否被按下?
我使用Windows 7 64位和Visual Studio專業2008
我希望有一個Windows控制檯程序做一些事情,如果某個鍵被按下時, 像
while(1)
{
....
if(the key 'o' is pressed down)
....
}
但我不知道要在中放什麼聲明。如何檢查按鍵'o'是否被按下?
我使用Windows 7 64位和Visual Studio專業2008
不是忙輪詢一個按鍵,你應該在你的應用程序鍵註冊事件(假設這是一個Windows GUI應用程序) ,並檢查你感興趣的按鍵
如果你實際上是做一個控制檯應用程序,在這裏看到:C++ console keyboard events
這並沒有真正地回答這個問題。有一個標準的C++等待stdin輸入的方式,但是這個問題是要求一個不會阻塞的等價機制。既沒有暗示他改變了他的程序結構,也沒有使用平臺特定的API(即使在這種情況下,它是他實際上的平臺),這實際上是有幫助的。我發現這個問題希望得到一個答案是C++特定的,而不是Windows特定的,而是發現一個問題,作爲一個愚蠢的不正確關閉,從來沒有正確回答。 – Jherico
沒有標準的C++方法來等待不會阻塞的輸入。唯一的方法是平臺特定的或者依賴像POSIX這樣的單獨標準(例如,使用'select()'等待'STDIN_FILENO'上的事件)。 –
這幾乎是我想的。問題是這不應該是一個評論,它應該是一個問題的接受答案,而不是一個重複的問題。 – Jherico
可以使用std::cin.get()或者你可以使用WINDOWS.H GetAsyncKeyState,取決於你想要做什麼。
如果您想要更低級別的東西,請查看WinAPI中的鉤子和事件。
您錯過了關鍵信息:您的環境,操作系統,您正在使用或打算使用的GUI庫等。 – Juliano
您正在使用哪種操作系統? –
對不起,我使用的是Windows 7 64位 – Timothy