PDA

View Full Version : مشکل در ارسال متن با SendMessage



samiasoft
چهارشنبه 09 بهمن 1392, 03:15 صبح
سلام دوستان

من هنگامی که متنی رو از طریق تابع SendMessage ارسال میکنم در قسمت عدد مشخص شده قرمز رنگ مشکل دارم

Private Const WM_SETTEXT = &HC


s = Text1


SendMessage combobox&, &HC, 3, ByVal s


مشکلم این هست که اگر این عدد 0 باشد اصلا متنی ارسال نمیشه
هرگاه هم عدد بزرگتری قرار بدم هرچی تو تکست باکسم باشه همونو میفرسته به علاوه کاراکترهای نامشخص!!

به جای این مقدار 3 مگه نباید همواره 0 باشه؟ اما اینطوری هیچ چیزی ارسال نمیشه!
به نظرتون مشکل کجاست؟

محسن واژدی
چهارشنبه 09 بهمن 1392, 07:55 صبح
سلام،
کد مسئله ای نداشت، به عنوان مثال:
Private Sub Command1_Click()
SendMessage Text2.HWnd, &HC, 0&, ByVal Text1.Text
End Sub


بدون مشکل عمل میکند، درصورت لزوم نمونه سورس مشکل را ضمیمه کنید

موفق باشید

samiasoft
چهارشنبه 09 بهمن 1392, 11:20 صبح
سلام،
کد مسئله ای نداشت، به عنوان مثال:
Private Sub Command1_Click()
SendMessage Text2.HWnd, &HC, 0&, ByVal Text1.Text
End Sub


بدون مشکل عمل میکند، درصورت لزوم نمونه سورس مشکل را ضمیمه کنید

موفق باشید

بازم مشکلم حل نمیشه
فقط مقدار3 مثلا بزارم کار میکنه با مقدار 0& مشکل داره

samiasoft
چهارشنبه 09 بهمن 1392, 11:23 صبح
سوس کد من بصورت زیر هست
Private Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString 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 FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Const WM_SETTEXT = &HC

Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) 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

Private Const WM_PASTE = &H302
Private Const WM_COPY = &H301
Const WM_GETTEXTLENGTH As Long = &HE
Const WM_GETTEXT = &HD


Dim x&, x1&
Dim combobox&

x& = FindWindow("TPMWindow", vbNullString)
x1& = FindWindowEx(x&, 0&, "TsPanel", vbNullString)
combobox& = FindWindowEx(x1&, 0&, "TRichViewEdit", vbNullString)

If combobox& = 0 Then
MsgBox "baz nist panjere "
Else

SendMessage combobox&, &HC, 3, ByVal Text1.Text

End If

سید حمید حق پرست
چهارشنبه 09 بهمن 1392, 14:00 عصر
سلام علیکم
برای چه برنامه ای ارسال میکنید؟

یا علی (ع)

samiasoft
چهارشنبه 09 بهمن 1392, 17:44 عصر
برای مسنجر زامتاک هست که بصورت زیر هوک کردم و میخوام تو تکست باکسش متنم بره....ه



http://samisoft.ir/1/images/JP8Vj.jpg

مثلا اگر متن من در تکست باکسم کلمه TEXTOL باشه و با کد زیر بخوام متنمو بفرستم

SendMessage combobox&, &HC, 3, ByVal s

فقط دو کلمه از این تکست رو انتقال میده در تکست باکس مسنجر یعنی کلمه TE را فقط.
وقتی به جای اون مقدار 3 مقدار صفر قرار بدم کار نمیکنه در حالی که در بقیه برنامه ها با همین مقدار صفر کار میکرد.

به نظرتون چرا چنین مشکلی اتفاق میفته؟

سید حمید حق پرست
چهارشنبه 09 بهمن 1392, 19:12 عصر
سلام علیکم
تست کردم ارسال نکرد! حتی با 3 هم برای من ارسال نمیکنه. روش دیگه ای هم تست کردم اما ارسال نکرد، شاید مسنجر از این کار جلوگیری کنه
موفق باشید.

یا علی (ع)

samiasoft
چهارشنبه 09 بهمن 1392, 19:17 عصر
سلام علیکم
تست کردم ارسال نکرد! حتی با 3 هم برای من ارسال نمیکنه. روش دیگه ای هم تست کردم اما ارسال نکرد، شاید مسنجر از این کار جلوگیری کنه
موفق باشید.

یا علی (ع)

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

سید حمید حق پرست
چهارشنبه 09 بهمن 1392, 19:38 عصر
نه دوست عزیز کار میکنه
شما وارد مسنجر که شدید ایدی خود رو اد کنید بعد وارد پنجره پیام بشین یعنی اونجا که به خودتون پیام میدید
خواهید دید که به تکست باکس میره متن
خب همین کارو کردم! ارسال نکرد!!!

یا علی (ع)

samiasoft
چهارشنبه 09 بهمن 1392, 21:10 عصر
خب همین کارو کردم! ارسال نکرد!!!

یا علی (ع)

خیلی عجیبه اخه ااالان من که دوباره امتحان کردم دو تا حرف ارسال میکنه
شما در هنگام اجرای برنامتون سعی کنید برنامه هایی دیگر در حال اجرا نباشن اخه شاید ممکن هست کلاس برنامه دیگری در حال اجراست هم TPMWindow باشه


اما در کل سورس من کارمیکنه و فقط مشکل من در ارسال نشدن کل متن هست .

سید حمید حق پرست
چهارشنبه 09 بهمن 1392, 23:02 عصر
خیلی عجیبه اخه ااالان من که دوباره امتحان کردم دو تا حرف ارسال میکنه
شما در هنگام اجرای برنامتون سعی کنید برنامه هایی دیگر در حال اجرا نباشن اخه شاید ممکن هست کلاس برنامه دیگری در حال اجراست هم TPMWindow باشه


اما در کل سورس من کارمیکنه و فقط مشکل من در ارسال نشدن کل متن هست .
کلا به این برنامه ارسال نمیکنه، پنجره لوگین، پنجره ادد که کلاسشون TPMWindow هم نبود تست کردم کار نکرد.
حتی با توابع ای پی آی FindWindow و SetForegroundWindow یک متن با استفاده از SendKeys ارسال کردم اما دریافت نمیکرد! فکر کنم جلوی اینکار توسط برنامه گرفته شده.
موفق باشید.

یا علی (ع)