| |
|
21
|
Programación / Programación Visual Basic / Como pegar o enviar un textbox a otro programa?
|
en: 22 Enero 2023, 22:00 pm
|
Buenas, estoy intentando enviar el contenido de un textbox a otra app, y no puedo hacerlo, sin tener foco en la app que lo recibe.... con sendkeys, funciona, pero no es estable al 100% con sendmessage, no puedo lograrlo.... en realidad, puedo enviar sin foco, pero el vm_paste no..... adjunto codigo, a ver si se ve el error... gracias Private Declare Function FindWindowX Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, _ ByVal hWnd2 As Long, ByVal lpsz1 As Long, ByVal lpsz2 As Long) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function BringWindowToTop Lib "user32" (ByVal hWnd As Long) As Long Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hWnd As Long, _ ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Integer) As Long Private Const WM_PASTE = &H302 Private Const WM_KEYDOWN = &H100 Private Const WM_KEYUP = &H101
Sub Three()
hWind = FindWindow(vbNullString, "Calculadora") cWind = FindWindowX(hWind, 0, 0, 0) Debug.Print PostMessage(cWind, WM_KEYDOWN, vbKey1, 0) Debug.Print PostMessage(cWind, WM_KEYDOWN, vbKey2, 0) Debug.Print PostMessage(cWind, WM_KEYDOWN, vbKey3, 0)
End Sub
Private Sub Command1_Click() Three End Sub
Sub Three2()
hWind = FindWindow(vbNullString, "Calculadora") cWind = FindWindowX(hWind, 0, 0, 0) Debug.Print PostMessage(cWind, WM_KEYDOWN, vbKey1, 0) Debug.Print PostMessage(cWind, WM_KEYDOWN, vbKey2, 0) Debug.Print PostMessage(cWind, WM_KEYDOWN, vbKey3, 0) End Sub
Private Sub Command2_Click() Three2 End Sub
Private Sub Command3_Click() lnghwnd = FindWindow(vbNullString, "Calculadora") Debug.Print lnghwnd BringWindowToTop lnghwnd ShowWindow lnghwnd, 1 'strProv = "Esta es una prueba" 'For i = 1 To Len(strProv) 'keybd_event Asc(Mid(strProv, i, 1)), 0, 0, 0 'keybd_event Asc(Mid(strProv, i, 1)), 0, KEYEVENTF_KEYUP, 0 'Next i 'keybd_event 13, 0, 0, 0 'keybd_event 13, 0, KEYEVENTF_KEYUP, 0 If lnghwnd <> 0 Then SendKeys ("123") SendKeys ("{+}") SendKeys ("456") SendKeys ("{enter}") 'Timer2.Enabled = True 'Me.WindowState = 1 Exit Sub End If End Sub
Private Function FromClip(hWnd As Long) SendMessage hWnd, WM_PASTE, 0, 0 End Function
Private Sub Command4_Click() lnghwnd = FindWindow(vbNullString, "Calculadora") Debug.Print lnghwnd BringWindowToTop lnghwnd ShowWindow lnghwnd, 1 'strProv = "Esta es una prueba" 'For i = 1 To Len(strProv) 'keybd_event Asc(Mid(strProv, i, 1)), 0, 0, 0 'keybd_event Asc(Mid(strProv, i, 1)), 0, KEYEVENTF_KEYUP, 0 'Next i 'keybd_event 13, 0, 0, 0 'keybd_event 13, 0, KEYEVENTF_KEYUP, 0 If lnghwnd <> 0 Then FromClip (lnghwnd) 'SendKeys ("123") 'SendKeys ("{+}") 'SendKeys ("456") 'SendKeys ("{enter}") 'Timer2.Enabled = True 'Me.WindowState = 1 Exit Sub End If End Sub
dejo los comentarios porque eran ideas, que fui cambiando... gracias ps: el command4 es el que da lios....
|
|
|
|
|
22
|
Programación / Programación Visual Basic / Re: hex a string pero rapido, es posible?
|
en: 26 Agosto 2022, 20:32 pm
|
|
Muchisimas gracias!! anoche, ví el msj y era otro, y no lo había guardado, porque era madrugada aca ejjeje
yo no sabía como hacer el filtro, porque si ponía que buscara en el input, por algunos de esos bytes, y me los cambiara por otro valor conocido y funcional, eso me lo iba a hacer en todo el input, y yo solo necesitaba los 3 primeros bytes nomás comparar... me has salvado!!! estoy muy agradecido... me gustaría invitarte una coca, cerveza, café o lo que sea, tenes alguna manera de que te haga llegar una colaboración?
|
|
|
|
|
23
|
Programación / Programación Visual Basic / Re: hex a string pero rapido, es posible?
|
en: 25 Agosto 2022, 22:37 pm
|
Buenas, como va? aquí de nuevo, la verdad, me da pena volver a preguntar, con la tremenda ayuda que me han dado... estoy teniendo problemas con la conversión, el code tiene problemas para convertir, o eso parece. adjunto fotos de como se debería ver y quedar, y como me queda a mi.... texto a convertir:  En vista hexadecimal, tiene otros caracteres, antes del texto plano, que son los que hacen el problema  la salida correcta que me da el cyberchef y funciona, es:  y el code, a mi me genera esto:  si en el texto, yo borro a "EF BB BF" el codigo funciona... al perecer, todos los txt que se necesitan convertir, tienen eso antes del texto plano... como podría solucionar ese problema? el code usado es: Private Sub Command1_Click() Open "hex.txt" For Input As #1 Open "txt.txt" For Output As #2 Do While Not EOF(1) Print #2, Chr(Val("&H" & Input(2, #1))); Loop Close #1 Close #2 End Sub muchisimas gracias y perdon :/
|
|
|
|
|
24
|
Programación / Programación Visual Basic / Re: hex a string pero rapido, es posible?
|
en: 24 Julio 2022, 00:16 am
|
Muchas gracias!!! la velocidad ahora es como el soft cyberchef, con el primer ejemplo de code tarda 2 segundos... solo que me da error, que ahora estoy de salida, pero lo veré al volver.... error 62 la entrada de datos ha sobrepasado el final del archivo Print #2, Chr(Val("&H" & Input(2, #1))); y los primero bytes, los da en 00 pero como digo, con un poco de filtro quedará bien  (EDIT: On error resume next sirvió para el primer error, ambos codes generan mismo archivo, solo que como dije, el primero tarda 2 segundos, el segundo entre 20 y 30) el segundo code, también funciona, solo que toma más tiempo, en el mismo archivo, tomará unos 30 segundos... y no arroja error el code que yo estaba usando anteriormente, tardaba más de 1 hora y no se hasta donde, porque lo corté... pero 1 hora ha llegado a estar luego con un poco más de tiempo lo reviso nuevamente, muchisimas gracias!!!
|
|
|
|
|
25
|
Programación / Programación Visual Basic / Re: hex a string pero rapido, es posible?
|
en: 22 Julio 2022, 20:51 pm
|
Hola, ese code es para vb6? el code que puse, creo que eso hace, lee de 2 en 2 y los transforma, pero tarda eternidad en ficheros grandes. el soft cyberchef, hace exactamente lo mismo, pero tarda 2 segundos en hacerlo. no creo que los lea de 2 en 2, sino tardaría lo mismo... no lo sé, intentaré contactar al autor. voy a intentar ver ese code, aunque se me hace que es .net  gracias EDIT: este es el code del cyberchef que hace lo mismo que intento en mi code, pero en menos de 2 segundos https://github.com/gchq/CyberChef/blob/master/src/core/operations/FromHex.mjs
|
|
|
|
|
26
|
Programación / Programación Visual Basic / hex a string pero rapido, es posible?
|
en: 22 Julio 2022, 05:04 am
|
Hola, estoy intentando hacer hex to string, leyendo un fichero desde disco, pero el inconveniente, es que tarda muchisimo... funciona bien, pero tarda una eternidad, en un archivo de 3 megas por ejemplo.... el code es este: Public Function HexToString(ByVal HexToStr As String) As String Dim strTemp As String Dim strReturn As String Dim I As Long For I = 1 To Len(HexToStr) Step 2 strTemp = Chr$(Val("&H" & Mid$(HexToStr, I, 2))) strReturn = strReturn & strTemp Next I HexToString = strReturn End Function
Public Function ReadFileIntoString(strFilePath As String) As String
Dim fso As New FileSystemObject Dim ts As TextStream
Set ts = fso.OpenTextFile(strFilePath) ReadFileIntoString = ts.ReadAll
End Function
funcionar, funciona, pero tarda una eternidad.... el soft cyberchef ( https://gchq.github.io/CyberChef/)la misma funcion, que sería "from hex" hace lo mismo y tarda 2 segundos en hacerlo... alguna idea que se puede mejorar? gracias saludos
|
|
|
|
|
28
|
Programación / Programación Visual Basic / Obtener retorno de consola en un tetxtbox o richtext. Ayuda
|
en: 12 Abril 2021, 04:36 am
|
Hola, necesito leer el retorno de consola, en un textbox, un richtextbox Encontré algo que me sirve, pero no para todas las aplicaciones de consola. Por ej, comando de win, ping, route, etc va. Pero si quiero leer el valor leido desde una consola fastboot (ya todos la conocen) la pantalla queda negra. adjunto code Private Sub Command1_Click() Dim Exec As String Exec = ("C:\Windows\System32\route.exe" & " " & "ADD " & Text1 & " " & " MASK 255.255.255.255 192.168.1.1") txt_resultado.Text = ejecutar_Dos(Trim(Exec))
End Sub
Function ejecutar_Dos(Comando As String) As String Dim oShell As WshShell Dim oExec As WshExec Dim ret As String Set oShell = New WshShell DoEvents ' ejecutar el comando Set oExec = oShell.Exec("%comspec% /c " & Comando) ret = oExec.StdOut.ReadAll() ' retornar la salida y devolverla a la función ejecutar_Dos = ret ' Replace(ret, Chr(10), vbNewLine) DoEvents Me.SetFocus End Function el code de ejemplo va bien, con dir, ping, route al poner por ejemplo, fastboot devices, el code arroja el dispositivo conectado, pero por ejemplo, al hacer fastboot getvar all, que me daría toda la info del movil, no arroja resultado... alguna idea que puede ser? algún code funcional? gracias
|
|
|
|
|
30
|
Programación / Programación Visual Basic / Usar dll de .net en vb6, intenté regasm y no queda del todo
|
en: 25 Febrero 2021, 06:21 am
|
Hola, tengo unas dll en .net algunas framework 2.x y otras 4.x el asunto es, que hasta ahora, la 2.x quedó con el regasm, sin, problemas, he creado la tlb y al estar en el explorador de objetos, aparece la dll con sus clases. no me pasa con la que está hecha en 4.7.2 se que el regasm es otro para hacerlo, no hay problemas por eso, la tlb la pude crear, pero me aparece vaciom sin clases.... que puede ser? pongamos como ejemplo: Private Sub cmd_leer_Click() dll2x.leer End Sub comando usado para 2x C:\Windows\Microsoft.NET\Framework\v2.0.50727\regasm.exe /tlb:dll2x.tlb dll2x.dll para 4x C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe /tlb:dll4x.tlb dll4x.dll mientras voy codificando, al poner dll2x y poner el "." ya me aparece lo que necesito, por ejemplo "leer" pero al hacer en la de 4.x nada.... no aparece nada de nada.... que puede ser? gracias
|
|
|
|
|
|
| |
|