Principales respuestas
Enviar texto de richtextbox a textbox de otra aplicación

Pregunta
-
Eso mismo..
Quiero que el texto de un richtextbox (podría ser perfectamente un textbox) de una aplicacion se envíe aun textbox de otra.
No tengo ni idea de cómo sería, pero me vendría muy bien.
¿Alguna idea?
viernes, 11 de julio de 2014 21:22
Respuestas
-
Quizá esto te sirva
Process[] Procesos_Navegador = Process.GetProcessesByName("chrome"); foreach (Process Navegador in Procesos_Navegador) { if (Navegador.MainWindowHandle == IntPtr.Zero) { continue; } AutomationElement Elemento = AutomationElement.FromHandle(Navegador.MainWindowHandle); AutomationElement Elemento_Editable = Elemento.FindFirst(TreeScope.Subtree, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Edit)); if (Elemento_Editable != null) { AutomationPattern[] Patterns = Elemento_Editable.GetSupportedPatterns(); if (Patterns.Length > 0) { foreach (var Urls in Patterns) { try { ValuePattern Url = (ValuePattern)Elemento_Editable.GetCurrentPattern(Urls); return Url.Current.Value.ToString(); } catch (Exception) { } } } } } return "";
Ese mismo codigo lo use para sacar la url del navegador, solo tendrias que modificarlo un poco para que en vez de tomar el dato, lo ingresara
Creo que tendrías que cambiar:
Nombre del proceso = Al nombre de la aplicacion donde quieras enviar el dato
y creo que en vez de poner :
PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Edit)
deberias poner:
PropertyCondition(AutomationElement.AutomationIdProperty, "El nombre del TextBox")
y ya solo quedaria decir Url.SetValue("Lo que quieras enviar");
Lo acabo de probar con unas aplicaciones que tengo y me funciona espero y te sirva :)
- Editado Julio Cisneros viernes, 11 de julio de 2014 22:45
- Propuesto como respuesta Miguel.Vazquez.MSDNModerator lunes, 14 de julio de 2014 19:05
- Marcado como respuesta Miguel.Vazquez.MSDNModerator martes, 15 de julio de 2014 16:01
viernes, 11 de julio de 2014 22:43 -
hola
pero tanto la aplicacion de origen como la de destino tienes el codigo ? puedes modificarlo y estan ambos en .net
lo pregunto porque podrias usar socket o quizar WCF para comunicar las aplicaciones y enviar informaicon entre estas mostrando la informacion donde quieras
pero si esto no es posible vas a tener que usar la tecnica a hooking y trabajar con las api de windows
Get Text From Specific Textboxes From External Application - Visual Basic .Net
Insert text into the textbox of another application
[C#] Reading/Writing textbox on other program
como veras no son api facil de utilizar
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Editado Leandro TuttiniMVP sábado, 12 de julio de 2014 0:39
- Propuesto como respuesta Miguel.Vazquez.MSDNModerator lunes, 14 de julio de 2014 18:58
- Marcado como respuesta Miguel.Vazquez.MSDNModerator martes, 15 de julio de 2014 16:01
sábado, 12 de julio de 2014 0:37
Todas las respuestas
-
Yo estoy haciendo algo similar pero no se si te sirva lo que puedes hacer es abrir dicha aplicacion y mediante teclado (tabuladores) posisionarte en el textbox.
Ok suena a que no te resulvo nada jeje si usas VS 2013 usa esto:
my.computer.keyboard.sendkeys("texto a enviar")
Si quieres enviar un tabulador usa "{TAB}" o enter "{ENTER}" que creo lo nocesitaras
viernes, 11 de julio de 2014 21:29 -
Quizá esto te sirva
Process[] Procesos_Navegador = Process.GetProcessesByName("chrome"); foreach (Process Navegador in Procesos_Navegador) { if (Navegador.MainWindowHandle == IntPtr.Zero) { continue; } AutomationElement Elemento = AutomationElement.FromHandle(Navegador.MainWindowHandle); AutomationElement Elemento_Editable = Elemento.FindFirst(TreeScope.Subtree, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Edit)); if (Elemento_Editable != null) { AutomationPattern[] Patterns = Elemento_Editable.GetSupportedPatterns(); if (Patterns.Length > 0) { foreach (var Urls in Patterns) { try { ValuePattern Url = (ValuePattern)Elemento_Editable.GetCurrentPattern(Urls); return Url.Current.Value.ToString(); } catch (Exception) { } } } } } return "";
Ese mismo codigo lo use para sacar la url del navegador, solo tendrias que modificarlo un poco para que en vez de tomar el dato, lo ingresara
Creo que tendrías que cambiar:
Nombre del proceso = Al nombre de la aplicacion donde quieras enviar el dato
y creo que en vez de poner :
PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Edit)
deberias poner:
PropertyCondition(AutomationElement.AutomationIdProperty, "El nombre del TextBox")
y ya solo quedaria decir Url.SetValue("Lo que quieras enviar");
Lo acabo de probar con unas aplicaciones que tengo y me funciona espero y te sirva :)
- Editado Julio Cisneros viernes, 11 de julio de 2014 22:45
- Propuesto como respuesta Miguel.Vazquez.MSDNModerator lunes, 14 de julio de 2014 19:05
- Marcado como respuesta Miguel.Vazquez.MSDNModerator martes, 15 de julio de 2014 16:01
viernes, 11 de julio de 2014 22:43 -
hola
pero tanto la aplicacion de origen como la de destino tienes el codigo ? puedes modificarlo y estan ambos en .net
lo pregunto porque podrias usar socket o quizar WCF para comunicar las aplicaciones y enviar informaicon entre estas mostrando la informacion donde quieras
pero si esto no es posible vas a tener que usar la tecnica a hooking y trabajar con las api de windows
Get Text From Specific Textboxes From External Application - Visual Basic .Net
Insert text into the textbox of another application
[C#] Reading/Writing textbox on other program
como veras no son api facil de utilizar
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Editado Leandro TuttiniMVP sábado, 12 de julio de 2014 0:39
- Propuesto como respuesta Miguel.Vazquez.MSDNModerator lunes, 14 de julio de 2014 18:58
- Marcado como respuesta Miguel.Vazquez.MSDNModerator martes, 15 de julio de 2014 16:01
sábado, 12 de julio de 2014 0:37 -
Hola WeekSky,
Te mando un saludo, ¿Has resuelto tu consulta? Esperamos tus comentarios con respecto a las respuestas de la comunidad. Recuerda marcar las respuestas que te hayan ayudado a resolver tu consulta.
Saludos,
Miguel
MSDN/TechNet Soporte Comunidades
Por favor, recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema.
Es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.
lunes, 14 de julio de 2014 19:04Moderador