2017-04-18 18 views
1

私はCodeblocksに行きます。私はオートクリッカーを作っています。マウスのキーを押したままにすると、クリックするようにカスタマイズする必要があります。

while (GetAsyncKeyState(VK_LBUTTON) { 
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); 
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); 
} 

このコードの問題点は次のとおりです。プログラムが続行され、クリックを停止しないように、LButtonを送信し続けます。私は、実際のマウスクリックと仮想マウスクリックを区別する方法があるのだろうかと思っていました。

+0

Kevin Duarte同じ問題があります。そのようなループでifを使うつもりなら、それはwhile文のようになります。私はそれを試して、それと同じ問題があります。 –

答えて

0

私はしばらく時間をとったが、ここに行く!注:私はそれを変更する必要がありますので、任意の図形またはフォームで最適化していません。

#include <iostream> 
#include <Windows.h> 

int main() 
{ 
    while (1) 
    { 

     if (GetAsyncKeyState(VK_LBUTTON)) { 

       keybd_event(VK_LBUTTON, 0x45, KEYEVENTF_KEYUP, 0); 
       while (!GetAsyncKeyState(VK_LBUTTON)) 
       { 
        keybd_event(VK_LBUTTON, 0x45, 0, 0); 
        std::cout << "Click" << std::endl; 
       } 
     } 

     Sleep(100); 
    } 
} 
+0

GetAsyncKeyStateの前にその感嘆符は何ですか?私はそれが動作することがわかりますが、なぜ私はVK_LBUTTONで動作する 'E'の仮想コードを入れないのですか?コンパイルしようとしたときにエラーが発生しなかったのはなぜですか? –

+0

@SharkFooth私はあまりにも早く自分の答えを投稿したかもしれないと思う。クリックは時にはうまくいく。私はそれを修正する方法を見なければならないかもしれません。感嘆符は、キーが押されていない場合を示します。それ以外の場合は、あなたがクリックする関数を使って "Click"と言う部分を切り替えることができます –

+0

@SharkFooth '! 'は「論理NOT」演算子です。値の真理を反転します。 '!true == false'と'!false == true'です。 'GetAsyncKeyState(VK_LBUTTON)'は、 'GetAsyncKeyState(VK_LBUTTON)== 0'の事実上省略しています。' GetAsyncKeyState(VK_LBUTTON) 'は' short'を返します( '0'は' false'、非ゼロは 'true'です)この場合。 –

関連する問題