View Full Version : سوال: كليك روي آپشن باتون و تكست باكس و كمبو توسط هندل
javadt
یک شنبه 22 اسفند 1389, 11:35 صبح
سلام
چطوري مي تونم رو آپشن باتون توسط هندلش دستور كليك رو بفرستم(با دستور كليك روي دكمه تست كردم نشد)
چطوري ميشه روي تكست باكس يا كليك كنم يا فوكاس رو روش بفرستم و يا متن داخلش رو كليك كنم
چجوري ميشه با هندل يكي از آيتم هاي كمبو باكس رو انتخاب كنم
با تشكر
Restlesa
یک شنبه 22 اسفند 1389, 12:27 عصر
براي اين كار اول بايد هندل ابزار مورد نظرت رو پيدا كني
ali.rezaei7
یک شنبه 22 اسفند 1389, 12:39 عصر
سلام
چطوري مي تونم رو آپشن باتون توسط هندلش دستور كليك رو بفرستم(با دستور كليك روي دكمه تست كردم نشد)
چطوري ميشه روي تكست باكس يا كليك كنم يا فوكاس رو روش بفرستم و يا متن داخلش رو كليك كنم
چجوري ميشه با هندل يكي از آيتم هاي كمبو باكس رو انتخاب كنم
با تشكر
سلام. تابع SendMessage تونايي انجام اين عمليات رو داره.
براي كليك رو يك كنترل مي تونيد از پيغام BM_CLICK استفاده كنيد.
SendMessage Option1.hwnd, BM_CLICK, 0, 0
براي انتخاب آيتم در كومبو، از پيغام CB_SETCURSEL استفاده كنيد. اگر itemindex بزرگتر از تعداد آيتم ها باشد، تابع مقدار -1 رو بر مي گردونه.
SendMessage Combo1.hwnd, CB_SETCURSEL, itemindex, ByVal 0
Const BM_CLICK = &HF5
Private Const CB_SETCURSEL = &H14E
http://www.xtremevbtalk.com/archive/index.php/t-257383.html
http://www.visual-basic5.de/vbclassic/januar04/cbselite.htm
Restlesa
یک شنبه 22 اسفند 1389, 12:47 عصر
دوست عزيز مقاله ي آموزشي كامل و جامع درباره ي اين تابع نداري معرفي كني ؟؟؟
از قرار معلوم خيلي خيلي كاربرديه
ali.rezaei7
یک شنبه 22 اسفند 1389, 13:02 عصر
دوست عزيز مقاله ي آموزشي كامل و جامع درباره ي اين تابع نداري معرفي كني ؟؟؟
از قرار معلوم خيلي خيلي كاربرديه
نه متاسفانه. هيچ مرجع فارسي ندارم. اما اگه زبان انگليسيتون قوي هست:
تابع SendMessage (http://msdn.microsoft.com/en-us/library/ms644950%28v=vs.85%29.aspx)
تمامي فرامين بصورت گروه بندي شده (http://msdn.microsoft.com/en-us/library/ms644927%28v=vs.85%29.aspx#system_defined)
javadt
یک شنبه 22 اسفند 1389, 16:37 عصر
فرم دو تا آپشن باتون داره
اينها درون فريم هستند و من فقط هندل فريم رو تونستم به دست بيارم
هندل آپشن ها با تايل به دست نمياد-كلاس آپشن ها هم Button هست
براي اين آپشن ها چكار كنم؟
---------------------
گفتم مي خوام روي تكست باكس كليك كنم
توي فرم دو تا تكست باكس دارم و اينها چك مي كنند اگر متن ورودي صحيح بود يك كامند رو enable رو true مي كنند
من متن رو مي فرستم داخل تكيت ها اما هيچ اتفاقي رخ نميده
ولي اگر بعد از ارسال متن روي هر دو تكست كليك كنم كامند فعال مي شه
اين رو چطوري مي تونم رفع كنم؟؟
--------------------
الان تونستم آيتم كمبو باكس رو انتخاب كنم
اما يك مشكلي مثل تكست ها دارم
آيتم كمبو عوض مي شه اما كامندي فعال نمي شه
ولي وقتي كه كليك كنم رو كمبو فعال مي شه
-------------------
كليك هم فرستادم روي اين تكست ها و كمبو اما نشد
با تشكر
ali.rezaei7
دوشنبه 23 اسفند 1389, 14:42 عصر
سلام آقا جواد. اگه براتون مقدور هست، کدی که بوسیلش هندل کنترل های پنجره های محتلف رو بدست میارید رو قرار بدید. تا شاید با همفکری مشکل برطرف بشه.
پ.ن:در پست ابتدایی گفتید که کدی لازم دارید که روی کنترل عملیات کلیک انجام بده و آیتم کمبوباکس رو تغییر بده. من هم کد موردنظر رو براتون گذاشتم. ولی دیگه اینو نگفتید که آپشن باتون داخل فریم هست . فریم هم داخل یک پنجره ی جداگانه هست. همه این ها رو باید در پست اولتون می گفتید.
javadt
دوشنبه 23 اسفند 1389, 14:47 عصر
من با اين كد هندل پنجره ها رو به دست ميارم
هندل فريم رو به دست آوردم اما هندل آپشن رو نمي تونم به دست بيارم
wnd = FindWindow("VBMClass", "Form 1")
meswnd = FindWindowEx(wnd, 0, "Button", "&Cancel")
ali.rezaei7
دوشنبه 23 اسفند 1389, 17:21 عصر
من با اين كد هندل پنجره ها رو به دست ميارم
هندل فريم رو به دست آوردم اما هندل آپشن رو نمي تونم به دست بيارم
wnd = FindWindow("VBMClass", "Form 1")
meswnd = FindWindowEx(wnd, 0, "Button", "&Cancel")
به صورت زير عمل كنيد:
Dim ParentWindowHandle As Long
Dim FrameHandle As Long
Dim OptionHandle As Long
ParentWindowHandle = FindWindow("ClassName or vbNullString", "WindowTitle")
If ParentWindowHandle = 0 Then
MsgBox "Window not found"
Exit Sub
End If
MsgBox "Window Handle: " & ParentWindowHandle
FrameHandle = FindWindowEx(ParentWindowHandle, 0, vbNullString, "FrameTitle")
If FrameHandle = 0 Then
MsgBox "Frame not found"
Exit Sub
End If
MsgBox "Frame Handle: " & FrameHandle
OptionHandle = FindWindowEx(FrameHandle, 0, vbNullString, "OptionTitle")
MsgBox "Option Handle: " & OptionHandle
نكته:
اگر از ClassName كنترل مورد نظر اطمينان نداريد،مقدار vbNullString را بجاي ClassName قرار بديد.
ممكن هست كه كنترل Option روي فريم قرار گرفته باشد ولي جزيي از زير مجموعه هاي اون فريم نباشه، در اين صورت زماني كه كنترل مورد نظر را در هندل فريم جستجو مي كنيد، به هيچ نتيجه اي نمي رسيد. پس اگر چنين اتفاقي افتاد، بايد بعد از بدست آورد هندل پنجره اصلي، مستقيما هندل option رو بدست بياريد.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.