PDA

View Full Version : کاربر مجازی



BitMap
یک شنبه 12 اسفند 1386, 20:11 عصر
سلام

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

ممنون

najafzade
یک شنبه 12 اسفند 1386, 21:41 عصر
سلام

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

ممنون

میشه یه کم بیشتر توضیح بدین؟:خجالت:

BitMap
دوشنبه 13 اسفند 1386, 18:37 عصر
مثالا فرض کنید می خواهم برنامه ی notepad رو باز کنم و توش بنویسم.یعنی برنامه اطلاعات رو برای ویندوز بفرسته و وانمود کنه این اطلاعات از کیبورد آمده.همین طور برای موس.
مثلا وقتی کاربر با رایانه کار نمی کنه موس رو برنامه ی من حرکت بده و کرسر روی صفحه جابه جا شه.
مثلا این برنامه رو ببینید:
http://www.dimsoft.com/programs/Auto%20Mouse/Updates.htm

BitMap
چهارشنبه 15 اسفند 1386, 16:43 عصر
خیلی ممنون
راه حل استفاده از تابع SendInput است.
این تابع از طرف موس ، کیبورد و سایر سخت افزارها به ویندوز اطلاعاتی رو که می خواهید می فرسته

ali_mohamadi8928
چهارشنبه 15 اسفند 1386, 23:52 عصر
دوست عزیز میشه یکم بیشتر راجع به این تابع توضیح بدی و یک مثال در موردش بزنی ...

خیلی ممنون میشم ...

BitMap
پنج شنبه 16 اسفند 1386, 17:25 عصر
وقتی کاربر موس را حرکت می ده یا دکمه های سمت چپ یا راست رو فشار می ده و یا یک دکمه از کیبورد رو فشار می دهد یک این عمل باعث واکنش ویندوز می شود. مثلا رویداد کلیک اتفاق می افتد و یا اکر focus روی یک textbox باشد فشردن دکمه های کیبورد باعث ورود داده ها در آن می شود.
حالا این تابع بدون اینکه کاربر واقعا کاری رو انجام داده باشه ین پیغام ها رو به ویندوز می ده.

این یک مثال . عددهای x , Y رو عوض کن مثلا بزار 100 و 100
این مثال ابتدا موس رو انتقال میده و سپس عمل کلیک رو انجام می ده:



#pragma once
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
#define _WIN32_WINNT 0x0500 // so the code would compile
#include <windows.h>


int WinMain(HINSTANCE hIns, HINSTANCE hPrevIns,LPSTR lpCmdLine, int nShowCmd)
{
long x=500,y=61000;

INPUT *buffer = new INPUT[3]; //allocate a buffer
buffer->type = INPUT_MOUSE;
buffer->mi.dx = x;
buffer->mi.dy = y;
buffer->mi.mouseData = 0;
buffer->mi.dwFlags = (MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE);
buffer->mi.time = 0;
buffer->mi.dwExtraInfo = 0;

(buffer+1)->type = INPUT_MOUSE;
(buffer+1)->mi.dx = x;
(buffer+1)->mi.dy = y;
(buffer+1)->mi.mouseData = 0;
(buffer+1)->mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
(buffer+1)->mi.time = 0;
(buffer+1)->mi.dwExtraInfo = 0;

(buffer+2)->type = INPUT_MOUSE;
(buffer+2)->mi.dx = x;
(buffer+2)->mi.dy = y;
(buffer+2)->mi.mouseData = 0;
(buffer+2)->mi.dwFlags = MOUSEEVENTF_LEFTUP;
(buffer+2)->mi.time = 0;
(buffer+2)->mi.dwExtraInfo = 0;


SendInput(3,buffer,sizeof(INPUT));
delete (buffer); //clean up our messes.
return 0;
}