PDA

View Full Version : سوال: پیدا کردن نام اشیائ وتغییر



amin1softco
سه شنبه 04 فروردین 1388, 10:20 صبح
دوستان آیا میشه با استفاده از این توابع


Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
کاری کرد که مثلا ویندوزی با تیتر simi را اشیاش را بدست آورده و محتویات اشیاء را با same تعویض کرد اگه تکست باشه:متفکر:
در ضمن اگر هم اون تکست disable بود بازم بنویسه یعنی تغیرش بده آیا میشه؟

Mbt925
چهارشنبه 05 فروردین 1388, 11:59 صبح
نمونه زیر متن ماشین حساب ویندوز رو تغییر میده:

http://barnamenevis.org/forum/showpost.php?p=695750&postcount=323

xman_dj
چهارشنبه 05 فروردین 1388, 12:26 عصر
با تشکر از Mbt925 (http://barnamenevis.org/forum/member.php?u=34702)
من برنامه ها رو دیدم ولی چند تا مشکل دارم
اول اینکه مقاله ای در مورد استفاده از توابع دارین تا برام بگذارین؟


Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long


2-سوال دوم من این که این برنامه ها چطور text مربوط به ورودی ماشین حساب ویندوز رو پیدا میکنه که بخونه یا چیزی توش بنویسه تا جایی که اطلاع دارم از این کد برای پیدا کردن برنامه استفاده کردین


MainWin_Hwnd = FindWindow(vbNullString, "Calculator")

برای مثال اگه بخوام که تو برنامه یاهو هم مثل این کاری کنم باید چیکار کنم چون یاهو دو تا جای ورودی داره یکی برای نام کاربر و دیگری برای پسورد.

بازم ممنون
داود

Mbt925
چهارشنبه 05 فروردین 1388, 18:01 عصر
مراحل کار بصورت زیره:

1- پیدا کردن هندل پنجره اصلی موردنظر
- کدی که شما قرار دادید مربوط به این مرحله میشه. یعنی پیدا کردن هندل پنجره ماشین حساب


2- پیدا کردن هندل شیء موردنظر که در پنجره اصلی قرار داره.
- که در این نمونه می خوایم هندل یه جعبه متن رو پیدا کنیم.
برای این منظور باید نوع کلاس شیء مورد نظر رو بدونید. برای مثال نوع کلاس جعبه متنی
که در ماشین حساب قرار داره، "Edit" هست. حتی جعبه متن های مختلف می تونن نوع
کلاس های مختلفی داشته باشن. برای مثال نوع کلاس جعبه متن برنامه هایی که با وی
بی نوشته میشن "ThunderRT6TextBox" هست.

اگه چندتا شیء در پنجره موردنظر قرار داشته باشه. باید چند بار از کد دوم استفاده کنیم، تا به شیء موردنظر برسیم. آرگومان سوم تابه FindWidnowX هندل شیء قبلی که بدستش آوردیم رو دریافت می کنه و شیء بعدی رو میده. در این نمونه شیء قبلی وجود نداشته، پس 0 پاس شده.

-------------
در مورد توابع API هم نمونه و راهنما و مثال بارها در بخش قرار داده شده. جستجو کنید.

amin1softco
پنج شنبه 06 فروردین 1388, 22:55 عصر
دوست من ممنون ولی من این کار را برای ارسال ی ام کردم ولی فهمیدم که یاهو از اون پنجره استفاده نمی کنه و یک متغیر درون خودش هست که از رو اون لیست آی دی ها رو می خونه
-------------------