Visual Basic - Tomar el control de otra aplicación desde VB

Life is soft - evento anual de software empresarial
 
Vista:

Tomar el control de otra aplicación desde VB

Publicado por Garitoman (11 intervenciones) el 21/10/2004 10:44:41
Hola a tod@s:
Quiero controlar desde VB6 otra aplicación llamada CX-Programer (para enviar datos a un autómata). Soy capaz de cargarla (fácil) pero una vez abierta necesito cargar un archivo en esta y enviarlo. Ambas acciones tienen asociadas combinaciones de teclas.
Me han comentado que puedo usar las API´s para resolverlo pero no encuentro ningún manual que me ayude
¿Me podeis echar un cable? Gracias por adelantado
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Tomar el control de otra aplicación desde VB

Publicado por Garitoman (11 intervenciones) el 22/10/2004 13:19:26
Me contesto a mi mismo, he usado "sendkeys" pero no me deja abrir la ventana de "Abrir...". Las teclas para obtenerlas son CTRL+O, uso este código:
CXP_ID = Shell("C:\Archivos de programa\Omron\CX-Programmer\CX-P.exe", 1)
AppActivate CXP_ID
SendKeys "^{O}", True

Pero no se porque no me hace caso y no la abre
si uso otra orden como SendKeys "%{Enter}", True
si que carga otro menú (que no me hace falta...)
¿Se os ocurre algo? Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

SendMessage( )

Publicado por Hely (126 intervenciones) el 22/10/2004 19:09:35
Usar SendKeys es very "Cutre"

primero se debe averiguar el HWND de la ventana que deseo apropiarme para ello se usa FindWindow( )
esta funcion devuelve el Handle (HWND) de la ventana por el texto de la barra de titulo. ademas de esa hay apis que recuperan la ventana por sus coordenadas.

Luego averiguamos el HDC de la ventana que quiero.
para ello se usa el api GetDC( )

luego usamos una funcioncilla CallBack de la cual no me acuerdo su nombre que me devuelve
todos y cada uno de los controles de la subventana, bueno lo que
realmente devuelve es el HDC de cada control, lo mismo que la
Tclase a la que pertenece (boton, listBox, etc)

Luego se usa SendMesage( ) para enviar clicks, DblClics etc.

una vez capturado el HWND se puede hacer lo que se quiera con esa ventana, Agregar menus, borrar menus, resizarla, cerrarla, TODOooo.
muy util si se desea crear un Virusillo o un antivrus.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SendMessage( )

Publicado por Garitoman (11 intervenciones) el 27/10/2004 11:25:07
Muchas gracias, ahora mismo me pongo con ello

Hasta Otra
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SendMessage( )

Publicado por Garitoman (11 intervenciones) el 16/11/2004 10:58:22
Pues no consigo hacer nada, me vuelvo loco con todos los posibles parámetros de sendmessage().
Imaginemos que quiero cargar el menú abrir del Word (en realidad es el CX-Programmer), ya tengo los manipuladores de ventana, menú y submenú.
¿Cómo sería la instrucción de sendmessage?
Supongo que debo usar WM_MENUSELECT= &H11F pero no se por donde tirar...
¿Alguien me puede echar una mano?
Gracias ;-)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Tomar el control de otra aplicación desde VB

Publicado por Oscar Barrios (5 intervenciones) el 20/11/2004 12:29:59
Hola, necesito algo parecido, quiero capturar una tecla estando enfocado otro programa, si sabes algo mas sobre el tema o me dices de donde has pillado esa info, me mandas un mail. Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

GetAsyncKeyState Lib "user32"

Publicado por Hely (126 intervenciones) el 22/11/2004 00:44:14
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

Private Sub Timer1_Timer()
'timer intervalo = 50
'solo sabe si X tecla ha sido pulsada
'hay otras funciones
' 65 es el keycode de "a"
r = GetAsyncKeyState(65)
Me.Caption = r
End Sub

//////////////////////
estas son otras funciones para leer teclado -- faltarian las del DirectInput
ActivateKeyboardLayout
EnableWindow
GetActiveWindow
GetAsyncKeyState
GetFocus
GetKeyboardLayout
GetKeyboardLayoutList
GetKeyboardLayoutName
GetKeyboardState
GetKeyNameText
GetKeyState
IsWindowEnabled
keybd_event
LoadKeyboardLayout
MapVirtualKey
MapVirtualKeyEx
OemKeyScan
RegisterHotKey
SendInput
SetActiveWindow
SetFocus
SetKeyboardState
ToAscii
ToAsciiEx
ToUnicode
ToUnicodeEx
UnloadKeyboardLayout
UnregisterHotKey
VkKeyScan
VkKeyScanEx
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

GetAsyncKeyState Lib "user32"

Publicado por jesus veliz (1 intervención) el 27/02/2015 19:19:08
Alguien me podría decir que hace esta fusión

If GetAsyncKeyState(i) = -32767.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 147
Ha disminuido 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

GetAsyncKeyState Lib "user32"

Publicado por Juan Gilberto (323 intervenciones) el 28/02/2015 19:29:38
La funcion GetAsyncKeyState(x) nos sirve para saber si una tecla x esta oprimida o no, tambien nos sirve para saber todas las teclas que fueron oprimidas desde la ultima vez que se invoco la funcion
Se utiliza mucho para espiar lo que se teclea en otras aplicaciones, como contraseñas, etc.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar