امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
کمک در استفاده از SendMessage
نویسنده پیام
behzadX آفلاین
كاربر دو ستاره
**

ارسال‌ها: 73
موضوع‌ها: 11
تاریخ عضویت: دى ۱۳۸۵

تشکرها : 83
( 84 تشکر در 47 ارسال )
ارسال: #1
کمک در استفاده از SendMessage
سلام
ببینید مشکل در کجاست.


کد:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private 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 SendMessageByString Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long
Private Const WM_SETTEXT = &HC
Private Const WM_GETTEXT = &HD
Private Const WM_DESTROY = &H2
Private Const WM_GETTEXTLENGTH = &HE



Private Sub Command1_Click()
Dim MainClass As Long
Dim ChildClass As Long
Dim A As String
MainClass = FindWindow(vbNullString, "calculator")
ChildClass = FindWindowEx(MainClass, 0&, "Edit", vbNullString)
A = SendMessageByString(ChildClass, WM_GETTEXT, 0, 0)
Label3.Caption = A
End Sub

هر کار می کنم نمی تونم عدد برکشتی از ماشین حساب ویندوز رو بخونم
چرا این ویژوال اینقدر گیره

هم اکنون نیازمند یاری سبزتان هستیم
گروه دوبلاژ بازی ایران ویج
از کابرانی که علاقه به دوبلاژ بازی دارند دعوت به همکاری می نماید.
با نظرات خود ما را در این امر یاری نمایید.
026
(آخرین ویرایش در این ارسال: ۱۷-شهریور-۱۳۸۹, ۲۰:۱۳:۲۰، توسط behzadX.)
۱۷-شهریور-۱۳۸۹, ۲۰:۱۱:۱۴
ارسال‌ها
پاسخ
CRazYFULL غایب
مدیر بازنشسته
*****

ارسال‌ها: 792
موضوع‌ها: 27
تاریخ عضویت: تير ۱۳۸۵

تشکرها : 1546
( 2836 تشکر در 593 ارسال )
ارسال: #2
RE: کمک در استفاده از SendMessage
ويژوال گير نيست شما مقدار طول عدد برگشتی و متغيری که بايد نوشته تکست رو بردونه رو 0 قرار دادی بعد انتظار داريد درست کار کنه !


کد:
Private Sub Command1_Click()
Dim MainClass As Long
Dim ChildClass As Long
Dim A As String
MainClass = FindWindow(vbNullString, "calculator")
ChildClass = FindWindowEx(MainClass, 0&, "Edit", vbNullString)

Dim strText As String
TrimSpace = String(255, Chr(0))

If SendMessageByString(ChildClass, WM_GETTEXT, 255, strText) <> 0 Then
Text1 = Replace(strText, Chr(0), "")
End If

End Sub

اين 255 اندازه حد اکثر طول مقداری هست که بر ميگردنه ميتونه بيشتر از اين هم باشه اما برای ماشين حساب همين کافيه.
اصوليش اينه که اندازه طول تکست رو با تابع ای پی آی Sendmessagebynum بگيريد
۱۷-شهریور-۱۳۸۹, ۲۱:۴۷:۴۲
ارسال‌ها
پاسخ
behzadX آفلاین
كاربر دو ستاره
**

ارسال‌ها: 73
موضوع‌ها: 11
تاریخ عضویت: دى ۱۳۸۵

تشکرها : 83
( 84 تشکر در 47 ارسال )
ارسال: #3
RE: کمک در استفاده از SendMessage
ممنون از راهنماییت ولی این کد کار نکرد.
نمی دونم کجای کار اشکال داره.
هر کاری می کنم نمی تونم چیزی دریافت کنم
همه چی درست کار می کنه میتونم عدد ارسال کنم حتی تعداد عددها رو هم بهم می ده ولی عدد داخل ماشین حساب رو نمی خونه خیلی جالبه به این می گن گیر سه پیچ به توان خودش ExclamationConfusedAngry

هم اکنون نیازمند یاری سبزتان هستیم
گروه دوبلاژ بازی ایران ویج
از کابرانی که علاقه به دوبلاژ بازی دارند دعوت به همکاری می نماید.
با نظرات خود ما را در این امر یاری نمایید.
026
(آخرین ویرایش در این ارسال: ۱۸-شهریور-۱۳۸۹, ۰۰:۰۹:۳۹، توسط behzadX.)
۱۷-شهریور-۱۳۸۹, ۲۳:۳۸:۱۴
ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  پیغام اینتر تو تابع SendMessage چی میشه؟ red11011 12 11,625 ۲۱-اسفند-۱۳۸۹, ۰۰:۱۷:۵۵
آخرین ارسال: GTAexcess
  کمک در مورد SendMessage aminbrleevb 5 3,155 ۱۰-شهریور-۱۳۸۷, ۲۱:۳۹:۴۸
آخرین ارسال: Iron_Fist
  توضیحاتی در مورد SendMessage وWM_GETTEXT m_vb6 19 9,867 ۱۱-اسفند-۱۳۸۶, ۰۰:۳۰:۵۵
آخرین ارسال: m_vb6

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS