PDA

View Full Version : سوال: کار با تابع SendMessage



sina_saravi1
پنج شنبه 14 خرداد 1388, 10:38 صبح
سلام استادان گرامی

کسی در مورد تابع SendMessage میتونه کمکم کنه؟

xxxxx_xxxxx
پنج شنبه 14 خرداد 1388, 12:49 عصر
سلام،
SendMessage كاربردهاي بسيار زيادي داره ولي جهت اطلاع دوستان اين تاپيك مرتبط با اين تاپيك هست:Sendkeys (http://barnamenevis.org/forum/showthread.php?t=162283)
براي انجام عمل Paste روي تكست باكس.

همونطور كه قبلاً گفته شد هركاري در ويندوز توسط پيغام ها انجام ميشود. و براي انجام عمل Paste روي تكست باكس هم بهتره كه راه اصولي رو انجام بدهيم نه ارسال تركيب دكمه هاي Ctrl+v


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
Private Const WM_PASTE = &H302

Private Sub Command1_Click()
SendMessage Text1.hwnd, WM_PASTE, 0, 0
End Sub


موفق باشيد/

sina_saravi1
پنج شنبه 14 خرداد 1388, 13:04 عصر
سلام،
SendMessage كاربردهاي بسيار زيادي داره ولي جهت اطلاع دوستان اين تاپيك مرتبط با اين تاپيك هست:Sendkeys (http://barnamenevis.org/forum/showthread.php?t=162283)
براي انجام عمل Paste روي تكست باكس.

همونطور كه قبلاً گفته شد هركاري در ويندوز توسط پيغام ها انجام ميشود. و براي انجام عمل Paste روي تكست باكس هم بهتره كه راه اصولي رو انجام بدهيم نه ارسال تركيب دكمه هاي Ctrl+v


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
Private Const WM_PASTE = &H302

Private Sub Command1_Click()
SendMessage Text1.hwnd, WM_PASTE, 0, 0
End Sub


موفق باشيد/

ممنونم
ولی اگه این تکست باکس تو یه نرم افزار در حال اجرا بود چی کار باید کرد؟

من تو جست و جو هام به یه نکته رسیدم که گفتخ بود تابع SendMessage پیام رو تو صف نگه میداره ولی تابع PostMessage مستقیم پیام رو ارسال میکنه؟
آیا این مسئله صحت داره؟

xxxxx_xxxxx
پنج شنبه 14 خرداد 1388, 13:35 عصر
ولی اگه این تکست باکس تو یه نرم افزار در حال اجرا بود چی کار باید کرد؟

با استفاده از توابع FindWindow و FindWindowEx و GetWindow (به ترتيب) بايد به هندل اون تكست باكس دست پيدا كنيد.




من تو جست و جو هام به یه نکته رسیدم که گفتخ بود تابع SendMessage پیام رو تو صف نگه میداره ولی تابع PostMessage مستقیم پیام رو ارسال میکنه؟
آیا این مسئله صحت داره؟

بله تقريباً همينطور هست. ولي تفاوت آشكار اين دو رو بزاريد اين طور بيان كنم كه وقتي با استفاده از تابع SendMessage پيامي را ارسال مي كنيد به برنامه اي، تابع منتظر دريافت پيامي مي ماند كه نشان ميدهد پيامش به درستي ارسال شده. مثل زماني كه شما sms اي ارسال مي كنيد و بعد منتظر پيام ارسالش مي مانيد. SendMessage هم به همين صورت هست. درواقع تضمين ميكنه تا زماني كه پيامش به درستي ارسال نشده باشه روال برنامه ادامه پيدا نميكنه. و گاهي موجب هنگ كردن برنامه ميشه. آخه ممكنه پنجره فراخوانده شده نخواد پيام رو بپذيره.
ولي PostMessage بلافاصله پيام رو ارسال مي كنه و منتظر هيچ بازخوردي هم نميمونه.

sina_saravi1
پنج شنبه 14 خرداد 1388, 13:44 عصر
واقعا از زحماتتون متشکرم

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

واقعان ممنونم:خجالت:

xxxxx_xxxxx
پنج شنبه 14 خرداد 1388, 13:49 عصر
تو پست هاي كاربر sanaz13x (http://barnamenevis.org/forum/member.php?find=lastposter&t=157896) جستو كنيد. تا دلتون بخواد از اين توابع استفاده شده.

sina_saravi1
جمعه 15 خرداد 1388, 16:29 عصر
لطفا یه نفر به من یه پروژه با توضیحات بده...!
من نتونستم یاد بگیرم

لطفا کمکم کنید!

gune_baxan
سه شنبه 20 مرداد 1388, 22:07 عصر
با سلام،

در مورد تابع SendMessage سوالی داشتم بهتر دیدم تاپیک جدید نزنم و در همین جا سوالم رو بپرسم.

میشه با این تابع عمل copy رو انجام داد، همونطوری که عمل paste رو میشه انجام داد؟

ممنون.

xxxxx_xxxxx
چهارشنبه 21 مرداد 1388, 12:31 عصر
میشه با این تابع عمل copy رو انجام داد، همونطوری که عمل paste رو میشه انجام داد؟
صددرصد: (http://msdn.microsoft.com/en-us/library/ms649022%28VS.85%29.aspx)


WM_COPY = &H301

اون قسمتي از متن كپي ميشه كه آماده كپي شدن باشه، يعني select شده باشه.

butterfly8528
چهارشنبه 21 مرداد 1388, 13:46 عصر
xxxxx_xxxxx عزیز از این رو که تابع SendMessage تابعی پیچیده و سخت و 100 البته پرکاربردی هست و شما هم که ظاهرا بر این تابع مسلط هستید ، لطفا یک تاپیک جداگانه در مورد SendMessage ایجاد کنید و هر چی از این تابع و پارامتر ها و . . . میدونید قرار بدید .

البته اگه زحمتی نیست !

اگه این کار رو انجام بدید کمک خیلی خیلی بزرگی به خیلی از بچه ها از جمله من کردید .

با تشکر .

Mbt925
چهارشنبه 21 مرداد 1388, 21:32 عصر
کافیه فقط کمی در بخش جستجو کنید:


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


http://barnamenevis.org/forum/showpost.php?p=696980&postcount=324


http://barnamenevis.org/forum/showpost.php?p=705870&postcount=327