高手教我!已经得到控件的句柄,如何文本框的内容? 试试看用sendmessage发送一条WM_GETTEXT消息? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 char szText[256]; WPARAM wParam = sizeof(szText); LPARAM lParam = (LPARAM)szText; memset (szText, 0, sizeof(szText)); SendMessage(hwndEdit, WM_GETTEXT, wParam, lParam); 上面是c++的代码实现,可以参考! int hEdit = FindWindowEx(p.MainWindowHandle, 0, "Edit", ""); string w = " "; IntPtr ptr = Marshal.StringToHGlobalAnsi(w); if (SendMessage(hEdit, WM_GETTEXT, 100, ptr)) Console.WriteLine(Marshal.PtrToStringAnsi(ptr));48楼回复http://topic.csdn.net/u/20100603/09/8ed5d58b-feb1-4c02-b4cb-f2cf1e064f60.html 完整的:1、函数导入和消息常量定义 [DllImport("user32.dll")] public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam); [DllImport("user32.dll", EntryPoint = "FindWindowEx")] private static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow); //应用程序发送此消息来复制对应窗口的文本到缓冲区 public static int WM_GETTEXT = 0x0D;2、调用方法:int hEdit = FindWindowEx(p.MainWindowHandle, 0, "Edit", ""); string w = " "; IntPtr ptr = Marshal.StringToHGlobalAnsi(w); if (SendMessage(hEdit, WM_GETTEXT, 100, ptr)) Console.WriteLine(Marshal.PtrToStringAnsi(ptr)); sendmessage可以搞定。但也并非所有的。 private void button1_Click(object sender, System.EventArgs e) { int hwnd = FindWindow( "notepad ", null); hwnd = FindWindowEx(hwnd, 0, "Edit ", null); System.Text.StringBuilder str = new System.Text.StringBuilder(255); SendMessage(hwnd, 0xD, str.Capacity, str); MessageBox.Show(str.ToString()); } 具体要获得的内容如下图SESSION1窗口中的文本 晕倒, 那个根本就不是 Edit 控件, 怎么获取 Text spy++看看有文本那块是什么。贴图上来。看控件的类名 16楼,以上把SPY++那个文本块的控件类名取出来了。 如果你没点错。那就无法获得了。可能是gdi画上去的。 要不你吧那玩意整到csdn下载。大家试试。否则大家看帖子就这么对着这么一张“蒙娜丽莎”微笑,估计没法知道你真正的问题… 看来不是那么容易的,还以为是textbox呢 了解了一下,是不是要用到hook?谁能提供一个C#的hook例子给我。 如何使CombBox其中一项处于选中状态 C#,Fortran混合编程数组传递 怎样判断一个快捷键是否已经被注册? !!-高分求解-!! 使用 Process.Start 来调用一个.bat文件, 但是出错,内详 ~~~~~~~ 关于控件重绘后看不到文字的问题 请教C#排序的问题(急!在线等) cs bs程序中是否都可以用一个Connection 使用C#抓取网页数据,怎么判断抓取的网页是否出现验证码? C# \winform控件库 C#中鼠标在菜单岚山一冬会触发什么事件? 为什么dataGrid的示例里会出现系统错误? c#如何调用lame.dll
char szText[256];
WPARAM wParam = sizeof(szText);
LPARAM lParam = (LPARAM)szText;
memset (szText, 0, sizeof(szText));
SendMessage(hwndEdit, WM_GETTEXT, wParam, lParam);
上面是c++的代码实现,可以参考!
string w = " ";
IntPtr ptr = Marshal.StringToHGlobalAnsi(w);
if (SendMessage(hEdit, WM_GETTEXT, 100, ptr)) Console.WriteLine(Marshal.PtrToStringAnsi(ptr));
48楼回复
http://topic.csdn.net/u/20100603/09/8ed5d58b-feb1-4c02-b4cb-f2cf1e064f60.html
1、函数导入和消息常量定义 [DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam); [DllImport("user32.dll", EntryPoint = "FindWindowEx")]
private static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow); //应用程序发送此消息来复制对应窗口的文本到缓冲区
public static int WM_GETTEXT = 0x0D;
2、调用方法:int hEdit = FindWindowEx(p.MainWindowHandle, 0, "Edit", "");
string w = " ";
IntPtr ptr = Marshal.StringToHGlobalAnsi(w);
if (SendMessage(hEdit, WM_GETTEXT, 100, ptr)) Console.WriteLine(Marshal.PtrToStringAnsi(ptr));
{
int hwnd = FindWindow( "notepad ", null);
hwnd = FindWindowEx(hwnd, 0, "Edit ", null);
System.Text.StringBuilder str = new System.Text.StringBuilder(255);
SendMessage(hwnd, 0xD, str.Capacity, str);
MessageBox.Show(str.ToString());
}
16楼,以上把SPY++那个文本块的控件类名取出来了。