PDA

View Full Version : سوال: کلیک روی اجزای یک برنامه



hackershz
سه شنبه 04 شهریور 1393, 09:44 صبح
با سلام و خسته نباشید به شما دوستان عزیز و گرامی

دوستان من یک برنامه دارم با پسوند exe که مال خود ویندوز است

که دارای تکست و دکمه هست میخوام یه برنامه بنویسم که در کنار این برنامه لود بشه و برنامه من بیاد داخل تکست این برنامه تایپ کنه یا روی دکمه ی این برنامه که پسوند exe داره کلیک کنه

ایا مثالی تو این ضمینه دوستان میتونند به من بدن



یک مثال هم خدمات دوستان عزیز میزنم


مثلا یاهو مسنجر رو توی سیستم لاگین میکنیم و لاگین میشیم

یه قسمت داره برای سرچ و یه دکمه کوچیک داره برای ادد کردن ایدی

چه جوری توسط برنامه ای که مینویسم یه عبارت رو سرچ کنه توی اون تکست باکس

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

عکس زیر رو ببینید


متشکرم

ایلیا آخوندزاده
سه شنبه 04 شهریور 1393, 14:30 عصر
شما باید نام عناصر به کار رفته رو در اون برنامه بدونید و به برنامه توضیح بدید که تکس باکس های شما برابر با تکس باکس های اون برنامه باشه و همانطور که میدانید برای اجرای اون برنامه باید از دستور shell استفاده کنید.

hackershz
چهارشنبه 05 شهریور 1393, 14:07 عصر
شما باید نام عناصر به کار رفته رو در اون برنامه بدونید و به برنامه توضیح بدید که تکس باکس های شما برابر با تکس باکس های اون برنامه باشه و همانطور که میدانید برای اجرای اون برنامه باید از دستور shell استفاده کنید.

یه برنامه هست که اسم تکست باکس ها و دکمه های اون برنامه رو پیدا میکنه

لطفا مثال بزنید دقیقا من اینجوری متوجه نمیشم در ضمن فکر نکنم از طریق shell بشه

محمد فدوی
چهارشنبه 05 شهریور 1393, 15:06 عصر
برای اینکار از APIهای استاندارد Win32 استفاده کن. برای مثال احتمالا FindWindow (http://msdn.microsoft.com/en-us/library/windows/desktop/ms633499(v=vs.85).aspx) و SendMessage (http://msdn.microsoft.com/en-us/library/windows/desktop/ms644950(v=vs.85).aspx) و EnumChildWindows (http://msdn.microsoft.com/en-us/library/windows/desktop/ms633494(v=vs.85).aspx) یا GetDlgItem (http://msdn.microsoft.com/en-us/library/windows/desktop/ms645481(v=vs.85).aspx) به دردت میخوره.
شما اول با FindWindow پنجره برنامه مورد نظرت رو با استفاده از متن Title پیدا میکنی و یه Handle ازش میگیری و بعد با SendMessage سعی میکنی بهش پیغام کلیک شدن رو ارسال کنی.
برای پیدا کردن کنترل مورد نظرت روی اون پنجره هم میتونی با EnumChildWindows همه ی فرزندان اون پنجره رو بخونی و ID اون رو با SendMessage به پنجره ارسال کنی. البته توجه داشته باش شاید دکمه ی مورد نظرت فرزند یه کنترل باشه و اون کنترل فرزند کل پنجره ت (یا حتی شاید بیشتر تو در تو باشه). در این صورت باید فرآیند EnumChildWindows رو بصورت تو در تو انجام بدی...
این کار به نظر من اصولی ترین راهه. مثال هم ازش توی نت پره. مثلا این یکیش (http://www.experts-exchange.com/Programming/Languages/Visual_Basic/Q_23039118.html) که یکم با این چیزی که من گفتم متفاوته! این (http://www.vbforums.com/showthread.php?683378-Click-the-button-from-other-applications-through-vb6-code) و اینم (http://stackoverflow.com/questions/2228604/vb6-how-to-click-buttons-on-another-running-process) ببین. جالبن.
من با اینکار یه برنامه ساده نوشته بودم که Username و Password رو از روی پنجره Yahoo Messanger میخوند و ایمیل میکرد! :لبخند:

راه ساده تر و غیر اصولی تر اینه که ماوس رو با API ببری روی اون دکمه و بعد پیغام کلیک شدن ماوس رو صادر کنی.

موفق باشی.

hackershz
پنج شنبه 06 شهریور 1393, 09:36 صبح
برای اینکار از APIهای استاندارد Win32 استفاده کن. برای مثال احتمالا FindWindow (http://msdn.microsoft.com/en-us/library/windows/desktop/ms633499(v=vs.85).aspx) و SendMessage (http://msdn.microsoft.com/en-us/library/windows/desktop/ms644950(v=vs.85).aspx) و EnumChildWindows (http://msdn.microsoft.com/en-us/library/windows/desktop/ms633494(v=vs.85).aspx) یا GetDlgItem (http://msdn.microsoft.com/en-us/library/windows/desktop/ms645481(v=vs.85).aspx) به دردت میخوره.
شما اول با FindWindow پنجره برنامه مورد نظرت رو با استفاده از متن Title پیدا میکنی و یه Handle ازش میگیری و بعد با SendMessage سعی میکنی بهش پیغام کلیک شدن رو ارسال کنی.
برای پیدا کردن کنترل مورد نظرت روی اون پنجره هم میتونی با EnumChildWindows همه ی فرزندان اون پنجره رو بخونی و ID اون رو با SendMessage به پنجره ارسال کنی. البته توجه داشته باش شاید دکمه ی مورد نظرت فرزند یه کنترل باشه و اون کنترل فرزند کل پنجره ت (یا حتی شاید بیشتر تو در تو باشه). در این صورت باید فرآیند EnumChildWindows رو بصورت تو در تو انجام بدی...
این کار به نظر من اصولی ترین راهه. مثال هم ازش توی نت پره. مثلا این یکیش (http://www.experts-exchange.com/Programming/Languages/Visual_Basic/Q_23039118.html) که یکم با این چیزی که من گفتم متفاوته! این (http://www.vbforums.com/showthread.php?683378-Click-the-button-from-other-applications-through-vb6-code) و اینم (http://stackoverflow.com/questions/2228604/vb6-how-to-click-buttons-on-another-running-process) ببین. جالبن.
من با اینکار یه برنامه ساده نوشته بودم که Username و Password رو از روی پنجره Yahoo Messanger میخوند و ایمیل میکرد! :لبخند:

راه ساده تر و غیر اصولی تر اینه که ماوس رو با API ببری روی اون دکمه و بعد پیغام کلیک شدن ماوس رو صادر کنی.

موفق باشی.


داداش ممنونم امکانش نیست توی وی بی یه مثال بزنید ؟

hackershz
یک شنبه 09 شهریور 1393, 12:59 عصر
کسی نمیتونه رو برنامه یاهو مثال بزنه ؟


اصلا چه جوری اسم دکمه یاهو مسنجر رو پیدا کنم که چیه ؟