PDA

View Full Version : سوال: شبيه سازي كليك



robini
یک شنبه 27 اردیبهشت 1388, 18:41 عصر
سلام
كسي ميدونه چطور ميشه عمل كليك رو توي برنامه شبيه سازي كرد ؟
مثلا توي برنامه چنتا bottun داريم ميخوايم وقتي روي يه bottun كليك كرديم يكي ديگه هم مثل همين بره پايين ، يا مثلا وقتي دكمه اي رو روي كيبورد زديم يكي از اين bottun ها هم همون حالتي رو پيدا كنه كه انگار روش كليك شده ! (منظورم تغيير شكل ظاهريه نه عملي كه انجام ميده )

prankster
دوشنبه 28 اردیبهشت 1388, 00:40 صبح
event های keyboard یا mouse از جنس event های سطح پایینی است که سیستم عامل آنرا handle می کند. دستکاری این event ها یا تغییر در اجرای آنها اصلا پیشنهاد نمی شود!
در هر حال با استفاده از windows API می توان هر event را به دلخواه تغییر داد، بدین صورت که مثلا هنگام کلیک و یا فشردن کلیدی عملا پیغامی برای user32 سیستم عامل بفرستیم که دکمه دیگری فشرده شده است. مثلا چیزی شبیه این:


public const int WM_LBUTTONDOWN = 0x0201;
public const int WM_LBUTTONUP = 0x0202;

[DllImportAttribute("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);

public Form1()
{
InitializeComponent();
this.KeyPreview = true;

this.KeyDown += new KeyEventHandler(Form1_KeyDown);
}

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
SendMessage(button1.Handle, WM_LBUTTONDOWN, 0, (int)((button1.Location.Y << 16) | button1.Location.X));
}