رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
برنامه نویسی حرکت ماوس؟؟؟؟
#1
سلام دوستان

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

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

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

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

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

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

ممنون
پاسخ
سپاس شده توسط
#2
با سلام خدمت شما

شما میتوانید از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;
}


موفق باشید
[عکس: <a href=www.Mojsazan.com.gif]" class="mycode_img" />
پاسخ
سپاس شده توسط شیشه بری
#3
سلام و عرض ادب

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

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


البته خوب من مجبور شدم یه سری چیزا رو فدای یه سری دیگه قابلیت کنم و خوب با 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 باز شبیه سازی میکنه.

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

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



_________________________________________________________
 باران که می بارد همه پرنده ها به دنبال سرپناهند 
         اماعقاب برای اجتناب از خیس شدن به بالاتر از ابرها پرواز می کند
               این دیدگاه است که تفاوت را خلق میکند.
پاسخ
سپاس شده توسط
#4
سلام
یعنی این کدی که نوشتید کار شما رو راه انداخت؟!
و در موقعیت مورد نظر شما enter یا tab میزنه؟!
[عکس: matlabOpencv.gif]

« کلاس های آموزش پردازش تصویر با نرم افزار متلب »

جهت کسب اطلاعات بیشتر با شماره تلفن 09130130252 تماس حاصل فرمائید.


«جهت مشاهده سرفصل این دوره کلیک نمایید»
پاسخ
سپاس شده توسط شیشه بری
#5
(02-19-2014, 01:55 AM)مهدی ابراهیمی نوشته: سلام
یعنی این کدی که نوشتید کار شما رو راه انداخت؟!
و در موقعیت مورد نظر شما enter یا tab میزنه؟!

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

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

ممنون 

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


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


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان