【发布时间】:2009-12-09 11:50:36
【问题描述】:
我想从另一个应用程序的文本框中检索文本。第二个应用程序的 ProcessName 是“TestTextBox”,TextBox 的名称是“textBox1”。
我的代码,返回空字符串:
[DllImport("user32.dll")]
static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, long wParam, [MarshalAs(UnmanagedType.LPStr)] StringBuilder lParam);
Process[] processes = Process.GetProcessesByName("TestTextBox");
foreach (Process p in processes)
{
IntPtr pFoundWindow = p.MainWindowHandle;
const int WM_GETTEXT = 0x0D;
StringBuilder sb = new StringBuilder();
IntPtr retVal = SendMessage(pFoundWindow, WM_GETTEXT, 100, sb);
MessageBox.Show(sb.ToString());
}
【问题讨论】:
-
LINQ 仍然在我的待办事项列表中...另外,据我了解,LINQ 仅在 .NET 3.5 或更高版本下工作。但这段代码应该适用于所有类型的 Windows,包括那些拥有 .NET 2.0
-
您希望如何使用 LINQ 对其进行优化?
-
Process.GetProcesses().Any(p => p.ProcessName.Contains(processName));或类似的东西。啊,没有意识到您使用的是 .NET 2!
标签: c# sendmessage