Win32APIのC#が指定した場所にカーソルを移動使用し、マウスクリックをシミュレート

物事は難しいです。

機能は非常に少ない使用しています。

2ポイントが動き回る座標とマウスの左ボタンをクリックして、私は、淘宝網のレコードを削除すると、この例が書かれていました。

使用したシステムを、
 使用System.Runtime.InteropServicesを、
 使用System.Threadingと、

名前空間のマウスの動きやクリック
{ 
    パブリック 列挙MOUSETYPE 
    { 
        // マウス移動 
        MOUSEEVENTF_MOVE = 0x0001の// シミュレートマウスボタンが押さ 
        MOUSEEVENTF_LEFTDOWN = 0×0002を// アナログは、マウスを左ボタンリフト 
        MOUSEEVENTF_LEFTUP = 0x0004はは// ダウンマウスの右をシミュレート 
        MOUSEEVENTF_RIGHTDOWN = 0x0008で// リフトに、マウスの右ボタンをシミュレート 
        MOUSEEVENTF_RIGHTUP =0x0010は// シミュレートマウスボタンが押下さ 
        = MOUSEEVENTF_MIDDLEDOWNを0x0020に// シミュレートマウスボタンリフト 
        MOUSEEVENTF_MIDDLEUP = 0x0040が// 絶対座標かどうかを示し 
        MOUSEEVENTF_ABSOLUTE = 0x8000の

    } 
    クラスプログラム
    { 

        [System.Runtime.InteropServices.DllImport(" USER32 " )]
         パブリック 静的 にextern  INT MOUSE_EVENT(int型 dwFlagsパラメータを、INT DX、INT DY、INTcButtons、INT dwExtraInfo)。

        [DLLIMPORT(" User32.dllの" )]
         パブリック 静的 にextern  BOOL SetCursorPos(int型 X、INT Y)。
        静的 ボイドメイン(文字列[]引数)
        { 

            初期化()。
            Console.ReadKey(); 
        } 
        静的 int型のX1、Y1、X2、Y2;
        プライベート 静的 無効DoClick()
        { 

            SetCursorPos(X1、Y1); 
             MOUSE_EVENT((int型)MouseType.MOUSEEVENTF_LEFTDOWN | INT)MouseType.MOUSEEVENTF_LEFTUP、0000 );
            // MOUSE_EVENT((int型)MouseType.MOUSEEVENTF_RIGHTDOWN |(int型)MouseType.MOUSEEVENTF_RIGHTUP、0、0、0、0); 

           

             N = $ " X1:{X 1}、Y1:{Y1} " 
            Console.WriteLineを(N)。
            Thread.sleep(300 )。
        } 

        プライベート 静的 ボイドDoClickXY2()
        { 
            SetCursorPos(X2、Y2)。
          //  MOUSE_EVENT((int型)MouseType.MOUSEEVENTF_RIGHTDOWN |(int型)MouseType.MOUSEEVENTF_RIGHTUP、0、0、0、0); 
               MOUSE_EVENT((int型)MouseType.MOUSEEVENTF_LEFTDOWN |(int型)MouseType.MOUSEEVENTF_LEFTUP、0000 ); 

             N = $ " X2:{} X2、Y2:{Y2} " 
            Console.WriteLineを(N)。
            Thread.sleep(300 )。
        } 

        プライベート 静的 ボイド入力データ()
        { 
            Console.WriteLineを(" X1坐标" )。
            X1 = INT .Parse(Console.ReadLine()); 
            Console.WriteLineを(" Y1坐标" ); 
            Y1 = INT .Parse(Console.ReadLine())。
            Console.WriteLineを(" ×2坐标" ); 
            X2 = INT .Parse(Console.ReadLine()); 
            Console.WriteLineを(" Y2坐标" ); 
            Y2 = INT .Parse(Console.ReadLine())。
            Console.WriteLineを(); 
            文字列のn = $ " X1:{X1}、Y1:{Y1}、X2:{X2}、Y2:{Y2}" ; 
            Console.WriteLineを(N); 
        } 

        静的  ボイドは、init()
        { 
            一方
            { 
                プール(); 
                Console.WriteLineを(" 是否继续Y / N?" );
                 VAR = B 。Console.ReadKey()は、keyChar。
                 もし(!B = ' Y ' && B =!' Y ' )、
                     ブレーク; 
            } 

        } 

        静的  無効プール() 
        {
            Console.WriteLineを(" 执行次数:" ); 

            INT NUM = INT .Parse(Console.ReadLine())。

            入力データ(); 

            一方、(NUM> = 0 
            { 
                DoClick()。
                Thread.sleep(100 )。
                DoClickXY2(); 
                NUM - ; 
            } 
            Console.WriteLineを()。
        } 
    } 
}

 

おすすめ

転載: www.cnblogs.com/T-ARF/p/12172997.html