PDA

View Full Version : سوال: SendMessage به TRichViewEdit از سی شارپ به دلفی



~B.B.C~
پنج شنبه 07 بهمن 1395, 01:28 صبح
با سلام

من میخواستم از طریق سی شارپ به TRichViewEdit در دلفی دسترسی و یک سری عملیات نظیر Get Text String , Set Text String , Get Listview Items ,... با کمک توابع ویندوز نظیر user32.dll انجام بدم این کار رو با فرم های خود سی شارپ تونستم انجام بدم اما مثلا برا دلفی هرکاری کردم نتونستم پنجره هاشو هندل کنم یک راه حل بگید لطفا

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

[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);

[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern IntPtr SendMessage(IntPtr hWnd, uint msg, IntPtr wParam, [Out] StringBuilder lParam);


//.............
IntPtr hwnd = FindWindow("Trmwindow", null);
SetForegroundWindow(hwnd);
IntPtr f = FindWindowEx(hwnd, IntPtr.Zero, "TRichViewEdit", "");
const uint WM_GETTEXT = 0x000D;
var length = (int)SendMessage(f, WM_GETTEXTLENGTH, IntPtr.Zero, null);
var sb = new StringBuilder(length + 1);
SendMessage(f, WM_GETTEXT, (IntPtr)sb.Capacity, sb);
MessageBox.Show(sb.ToString());