انجمن گروه موج سازان

نسخه‌ی کامل: برنامه نویسی حرکت ماوس؟؟؟؟
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام دوستان

امیدوارم خوب باشید

یه سوال داشتم که البته دقیقا هم نمیدونم چطوری انجام میشه؟

یه برنامه میخوام بنویسم که وقتی اجرا میشه مثلا ماوس رو ببره نقطه ی 60*99 و کلیک کنه. بعد دوباره ببره نقطه ی 66*190 و کلیک کنه و ... و 

در بین این گزینه ها کلیدهای مثل tab یا enter یا... رو اجرا کنه.

این برنامه میخوام ساده از نظر قابلیت اجرا روی هر ویندوزی باشه.مثلا bat فایل که نیاز به کتابخونه یا... برای نصب کردن نداشته باشه

چطوری و با چی بنویسم؟

ممنون
با سلام خدمت شما

شما میتوانید ازSendInput function استفاده کنید (++C) مبحث ساده ای است

برای اطلاعا بیشتر میتوایند به اینجا مراجعه کنید

البته من با ++C  راحتم شما میتوانید با هر زبان دیگری خواهستید بنویسید

البته من توی لینوکس کد میزنم یک من سیستم فرق میکنه ولی چون فرمودید ویندوز من مثال ویندوزی زدم

البته چرا این بحث در برنامه نویسی موازی مطرح شده نمیدانم

یک نمونه کد میگذارم یک نگاه بیندازید امیدوارم ایده لازم را بگیرد

کد:
#define WIN32_LEAN_AND_MEAN
#define _WIN32_WINNT 0x0500

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <string.h>
#include <windows.h>


#define X 123
#define Y 123
#define SCREEN_WIDTH 1024
#define SCREEN_HEIGHT 800


void MouseSetup(INPUT *buffer)
{
    buffer->type = INPUT_MOUSE;
    buffer->mi.dx = (0 * (0xFFFF / SCREEN_WIDTH));
    buffer->mi.dy = (0 * (0xFFFF / SCREEN_HEIGHT));
    buffer->mi.mouseData = 0;
    buffer->mi.dwFlags = MOUSEEVENTF_ABSOLUTE;
    buffer->mi.time = 0;
    buffer->mi.dwExtraInfo = 0;
}


void MouseMoveAbsolute(INPUT *buffer, int x, int y)
{
    buffer->mi.dx = (x * (0xFFFF / SCREEN_WIDTH));
    buffer->mi.dy = (y * (0xFFFF / SCREEN_HEIGHT));
    buffer->mi.dwFlags = (MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE);

    SendInput(1, buffer, sizeof(INPUT));
}


void MouseClick(INPUT *buffer)
{
    buffer->mi.dwFlags = (MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTDOWN);
    SendInput(1, buffer, sizeof(INPUT));

    Sleep(10);

    buffer->mi.dwFlags = (MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTUP);
    SendInput(1, buffer, sizeof(INPUT));
}


int main(int argc, char *argv[])
{
    INPUT buffer[1];

    MouseSetup(&buffer);

    MouseMoveAbsolute(&buffer, X, Y);
    MouseClick(&buffer);

    return 0;
}


موفق باشید
سلام و عرض ادب

امیدوارم خوب باشید

ممنون از پاسختون


البته خوب من مجبور شدم یه سری چیزا رو فدای یه سری دیگه قابلیت کنم و خوب با vb.6 نوشتم


اینک کدش

کد:
Private Declare Sub SetCursorPos Lib "user32" (ByVal x As Integer, _
ByVal y As Integer)




Public Sub Sendkeys(text$, Optional wait As Boolean = False)
  Dim WshShell As Object
  Set WshShell = CreateObject("wscript.shell")
  WshShell.Sendkeys text, wait
  Set WshShell = Nothing
End Sub



Private Sub Timer2_Timer()
x = 526
y = 418
SetCursorPos x, y


'''''''''''''''

Sendkeys "{left 2}"

End Sub

مثلا در کد بالا ماوس رو میبره روی نقطه ی 526/418 و بعد کلید چپ رو 2 باز شبیه سازی میکنه.

ارگومانها برای کلیدهای مختلف رو هم میتونید از اینجا بگیرید

موفق باشید و سربلند...



_________________________________________________________
 باران که می بارد همه پرنده ها به دنبال سرپناهند 
         اماعقاب برای اجتناب از خیس شدن به بالاتر از ابرها پرواز می کند
               این دیدگاه است که تفاوت را خلق میکند.
سلام
یعنی این کدی که نوشتید کار شما رو راه انداخت؟!
و در موقعیت مورد نظر شما enter یا tab میزنه؟!
(02-19-2014, 01:55 AM)مهدی ابراهیمی نوشته: [ -> ]سلام
یعنی این کدی که نوشتید کار شما رو راه انداخت؟!
و در موقعیت مورد نظر شما enter یا tab میزنه؟!

با سلام و عرض ادب

امیدوارم خوب باشید
درست میفرمایید. کد بالا اصلاح شد

ممنون 

موفق باشید و سربلند....


_________________________________________________________
 باران که می بارد همه پرنده ها به دنبال سرپناهند 
         اماعقاب برای اجتناب از خیس شدن به بالاتر از ابرها پرواز می کند
               این دیدگاه است که تفاوت را خلق میکند.