PDA

View Full Version : ارسال متن به یک برنامه با حفظ ویژگی متن (فونت یا...)



samiasoft
شنبه 15 فروردین 1394, 20:12 عصر
سلام دوستان

من با دستور زیر میتونم متن تکست باکس 1 رو به یک برنامه دیگری بفرستم

SendMessage wHwnd, WM_SETTEXT, 0, ByVal Text1.Text

اون برنامه ای که متن رو براش میفرستم تکست باکسش دارای فونت تاهوما و اندازه 18 هست اما وقتی با دستور بالا این متن رو میفرستم فونت و اندازه فونت تکست باکس برنامه رو بخود نمیگیره.
یعنی من انتظار دارم وقتی متن داخل برنامه دیگر قرار میگیره فونت همون رو به خود بگیره.

آیا باید در این دستور تغییراتی انجام بدم؟

مشابه سوال من در تاپیک دیگری هم مطرح شده اما یعنی منم باید از RichTextBox به جای تکست باکس استفاده کنم؟
http://barnamenevis.org/showthread.php?203493-%D9%86%D8%AD%D9%88%D9%87-%D8%A7%D8%B1%D8%B3%D8%A7%D9%84-%D9%85%D8%AA%D9%86-%D9%85%D9%88%D8%AC%D9%88%D8%AF-%D8%AF%D8%B1-RichTextBox-%D8%A8%D9%87-%D9%87%D9%85%D8%B1%D8%A7%D9%87-Format-%D9%85%D8%AA%D9%86-%D8%A8%D9%87-%DB%8C%DA%A9-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%AF%DB%8C%DA%AF%D8%B1
(http://barnamenevis.org/showthread.php?203493-%D9%86%D8%AD%D9%88%D9%87-%D8%A7%D8%B1%D8%B3%D8%A7%D9%84-%D9%85%D8%AA%D9%86-%D9%85%D9%88%D8%AC%D9%88%D8%AF-%D8%AF%D8%B1-RichTextBox-%D8%A8%D9%87-%D9%87%D9%85%D8%B1%D8%A7%D9%87-Format-%D9%85%D8%AA%D9%86-%D8%A8%D9%87-%DB%8C%DA%A9-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%AF%DB%8C%DA%AF%D8%B1)
البته من همینکارو هم کردم ولی اصلا در اون حالت متن ارسال نشد بلکه موارد دیگری ایجاد میشد.

در صفحه زیر هم یه نوع دستوراتی نوشته شده که فرمت رو حفظ میکنه اما فرق داره
http://www.vb-helper.com/howto_set_rich_format.html

ممنون میشم راهنمایی کنید

vbhamed
یک شنبه 16 فروردین 1394, 23:06 عصر
سلام
شما باید اطلاعات بیشتری در مورد اون برنامه بدین و اگر میشه نام اون برنامه رو بگید و ترجیحا یک عکس هم از صفحش بزارید
ممکنه اون برنامه از RichText یا تکست باکسهای غیر استاندارد دیگه استفاده کرده باشه یا حتی browser

شاید هم راه بهتر این باشه که عمل کپی و چسباندن رو با api انجام بدین

samiasoft
دوشنبه 17 فروردین 1394, 15:20 عصر
سلام
میخواستم اینکارو برای مسنجر ایرانی الفور آی انجام بدم. مشخصاتش بدین صورته :

http://samisoft.ir/1/images/aXf9d.gif

همانطور که میبنید نام اون قسمت که باید متن داخلش قرار بگیره بنام richedit20w هست. حال چگونه متن رو داخلش بفرستم طوری که فونتی که در انجا انتخاب شده رو بخود بگیره.

در مورد عمل کپی و چسباندن با api ممنون میشم راهنمایی کنید

vbhamed
دوشنبه 17 فروردین 1394, 18:08 عصر
سلام
فایل نمونه رو ببینید
یک فایل Sender داره و یک Receiver
hwnd که Receiver میده رو در Sender وارد کنید و دکمه Send رو بزنید
برای اون برنامه یا هر برنامه دیگه ای هم که RichText داره کافیه hwnd اون RichText رو به Sender بدین
هر قسمتی از RichText مبدا رو هم که خواستید می‌تونید انتخاب کنید

samiasoft
جمعه 30 مرداد 1394, 19:52 عصر
تشکر جناب حامد بابت نمونه سورسی که قرار داده بودید من آن زمان ازش استفاده کردم و سپاسگزارم ازتون.

من با استفاده از کد زیر متن مورد نظرمو که داخل تکست باکس20 هست به یک تکست باکس برنامه ای با موفقیت ارسال میکنم.(برگرفته از نمونه سورس بالایی ضمیمه شده)

Dim wHwnd As Long
Dim s As String
Do
wHwnd = FindWindowEx(0, wHwnd, "#32770", vbNullString)

If wHwnd = 0 Then Exit Sub
Loop Until FindWindowEx(wHwnd, 0, "#32770", vbNullString)


wHwnd = FindWindowEx(wHwnd, 0, "#32770", vbNullString)
wHwnd = FindWindowEx(wHwnd, 0, "RichEdit20W", vbNullString)
Text9 = wHwnd
If wHwnd = 0 Then
MsgBox "baz nist panjere "
Else


On Error Resume Next

Text20.SelStart = 0
Text20.SelLength = Len(Text20)
DoEvents
ControlCopy Text20.hwnd
DoEvents
ControlPaste Text9
DoEvents

End If

مشکلی که دارم این هست که میخوام بجای تکست باکس20 از لیست باکسم متن رو بگیره و ارسال کنه. اما من در جایگذاری کدها با مشکل مواجه میشم که باید در کد زیر لیست باکس رو به جای تکست باکس20 قرار بدم :

Text20.SelStart = 0
Text20.SelLength = Len(Text20)
ControlCopy Text20.hwnd

چگونه لیست باکس رو به جای تکست باکس جایگذاری کنم؟ اخه در لیست باکس خاصیت SelStart و SelLength موجود نیست.
ممنون میشم راهنمایی کنید.

(همچنین شاید بگید متن رو اول از لیست باکس به تکست باکس انتقال بدم بعد انجام بدم اما من میخواستم مستقیما از لیست باکس استفاده کنم)

vbhamed
دوشنبه 02 شهریور 1394, 07:04 صبح
سلام
لطفا برنامتون رو کاملتر بزارید
این متد ControlCopy چیه ؟

samiasoft
دوشنبه 02 شهریور 1394, 12:21 عصر
سورس برنامه رو ضمیمه کردم. بدین صورته که بعضی از فونت ها رو شاید دیدید داخلشون کاراکتر شبیه شکلک دارن. که من الان اینو داخل لیست باکس نمایش میدم. بصورت زیر :

134596
میخواستم هرکدومو که انتخاب کردم با استفاده از دستورات بالا به پنجره ای نرم افزار دیگری که انتخاب کردم اتوماتیک کپی و پیست بشه.

متد کپی و پیست و کات هم بدین صورته :
Private Const WM_CUT = &H300
Private Const WM_COPY = &H301
Private Const WM_CLEAR = &H303
Private Const WM_PASTE = &H302
Sub ControlCopy(ByVal hwnd As Long)
SendMessage hwnd, WM_COPY, 0, ByVal 0&
End Sub

' Cut the contents of a control into the Clipboard
Sub ControlCut(ByVal hwnd As Long)
SendMessage hwnd, WM_CUT, 0, ByVal 0&
End Sub

' Paste the contents of the Clipboard into a control
Sub ControlPaste(ByVal hwnd As Long)
SendMessage hwnd, WM_PASTE, 0, ByVal 0&
End Sub

' Delete the selected contents of a control
Sub ControlDelete(ByVal hwnd As Long)
SendMessage hwnd, WM_CLEAR, 0, ByVal 0&
End Sub

من میخواستم اول از لیست باکس به تکست باکس انتقال بدم ولی در این حالت نمایشش به هم میریزه.در خود سورس هم برای نمایش از brwWebBrowser استفاده کردند ولی من میخواستم این رو هم حذف کنم.

samiasoft
دوشنبه 02 شهریور 1394, 16:40 عصر
سورس ضمیمه شده رو دوباره ویرایش کردم و اپلود کردم.

در واقع کل سوالات من بدلیل مشکل زیر ناشی میشه که برا همین میخواستم یکباره از لیست باکس کپی بگیرم.

الان مطابق تصویر میبنید که من شکل موردنظر رو انتخاب کردم ولی در تکست باکس جور دیگری نمایش میده.البته بعضی از شکلها رو اینطور نشون میده بقیه مشکلی ندارند.
(شاید بگید با تکست باکس های دیگری امتحان کنم اما نمیخوام اینکارو کنم)

http://s3.picofile.com/file/8208224818/2015_08_24_153610.gif