Hola a todos, tenemos alguna funcion que haga esto, que creo es lo que necesito

| Asunto: | [oohg] consulta |
|---|---|
| Fecha: | Thu, 4 Mar 2021 06:21:55 +0100 |
| De: | David Tato Jimenez <jimenezt...@gmail.com> |
| Responder a: | oo...@googlegroups.com |
| Para: | oo...@googlegroups.com |
-- Has recibido este mensaje porque estás suscrito al grupo "[oohg]" de Grupos de Google. Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a oohg+uns...@googlegroups.com. Para ver este debate en la Web, visita https://groups.google.com/d/msgid/oohg/6fa5d809-111a-34e3-bf01-767a965de9dd%40gmail.com.
Hola David.
Desde la época de Clipper viene la función KEYBOARD() que introduce en el buffer del teclado un carácter o string de caracteres simulando la pulsación de dichas teclas.
Saludos...
Ricardo Sassy
KEYBOARD
Writes a string or numeric key codes into the keyboard buffer.
Syntax
KEYBOARD <cString>
KEYBOARD <nInkeyCode>
KEYBOARD <aKeyCodes>
Arguments
<cString>
This is the character string that is written into the keyboard buffer.
<nInkeyCode>
Alternatively, a numeric key code can be specified. Normally, the #define constants listed in the Inkey.ch files are used for <nInkeyCode>.
<aKeyCodes>
A mixture of character strings or numeric key codes can be specified as a one dimensional array.
Description
The KEYBOARD command first clears the keyboard buffer and then fills it with the key codes specified as character strin, numeric values or within an array. Thus, all pending key strokes are discarded before new characters are written into the keyboard buffer. They remain in the buffer until being fetched from it during a wait state in which the keyboard buffer is polled for the next key stroke.
Wait states are employed by functions and commands that wait for user input, such as Achoice(), READ or MemoEdit().
Info
See also: | Chr(), CLEAR TYPEAHEAD, HB_KeyPut(), Inkey(), LastKey(), NextKey(), SET KEY, SET TYPEAHEAD |
Category: | |
Header: | Inkey.ch |
Source: | rtl\inkey.c |
LIB: | xhbdll.lib |
DLL: | xhbdll.dll |
Examples
// The example writes a string into the keyboard buffer so that
// Memoedit() begins editing this text in a new line.
PROCEDURE MAIN
LOCAL cString
KEYBOARD "xHarbour:" + Chr(13) + Chr(10)
cString := MemoEdit()
CLS
? cString
RETURN
// The example does the same as the previous one but
// passes an array to the KEYBOARD command.
PROCEDURE MAIN
LOCAL cString
KEYBOARD { "xHarbour:", 13, 10 }
cString := MemoEdit()
CLS
? cString
RETURN
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/oohg/c80e2def-4669-951a-48fe-34a7ce59fe62%40gmail.com.
Buenas noches
Tengo este codigo para crear (en el caso de que no exista) o leer un archivo .ini... pero en algunas ocaciones debo crear algun parametro adicional (por ej. AnchoPos), en el momento para actualizar ese .ini debo borrarla para que se vuelva a crear.
Hay forma (o una idea de como hacerlo) de actualizar el archivo .ini?
Muchas Gracias...
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/oohg/CAFpvzknGjc%3DnEH9mUY4evLMTHJufbBzhrjeqvibWOZODVmLy8Q%40mail.gmail.com.
Ricardo gracis por responder.
Windows 10 trae una utilidad de recorte de pantalla muy rapida y facil.
Mi idea es asignar la combinacion de teclas que lanza esta aplicacion de recorte con un boton.
Al pulsar el boton que declaro a continuacion que sea como si se
hubieran pulsado las combinaciones de teclas en el teclado
siguiennte: tecla windows + tecla shift + s
Pero no me hace nada.
@ 190,800 BUTTON Button_2 CAPTION "Recortar" PICTURE
"recorte.JPG" ;
RIGHT ;
WIDTH 180 HEIGHT 60 ;
BOLD ;
TRANSPARENT ;
SIZE 14 ;
IMAGEMARGIN {0, 0, 0, 20} ;
ACTION { || hb_keyPut(VK_LWIN + VK_LSHIFT + VK_S) }
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/oohg/01a301d7112c%248b80b460%24a2821d20%24%40gmail.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/oohg/3541ae4f-d1d5-c039-c9d0-9e381c3111b1%40gmail.com.
Jose Antonio gracias por responder. No conocia esta forma pero no es lo que necesito.
Necesito poder activar la utilidad recorte con las teclas windows
+ tecla shift + s ya que de esta forma entra directamente a poder
seleccionar una parte de la pantalla seleccionada por el usuario
con el raton y la copia al portapapeles, para despues poderla
pegar directamente en otra aplicacion.
Ya he conseguido con la ayuda de este grupo ejecutar la utilidad con shellexecute(0,'OPEN','SnippingTool.exe') pero de esta forma el usuario tiene que dar un paso adicional para capturar una parte de la pantalla que quiera y de la otra forma con las teclas teclas windows + tecla shift + s entra directamente a seleccionar con el raton la zona que quiere copiar
saludos
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/oohg/CAMqt_0WbBM05tYVXwDcYc5gyYRBCgPjPcwyyo4hONpEiMFXxzQ%40mail.gmail.com.
--
Has recibido este mensaje porque estás suscrito al grupo "[oohg]" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a oohg+uns...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/oohg/a2dcc3b4-3d15-4648-85fe-e9d4e54659cen%40googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/oohg/CA%2BYc3wtAEZnbvgLvHVa%2BfiJGdyN%2B6Cb-_wL9OhD1y_DC3fLnYA%40mail.gmail.com.
Hola Juan Carlos Ocampo, donde puedo leer sobre oShell?
Con tu ayuda he asociado una rutina parecida a la tuya a un botón, para que se rellenen datos automaticamente en una aplicacion independiente a mi aplicacion, y lo hace bien.
El problema que tengo que es que al pulsar de nuevo el boton, se vuelve a abrir otra ventana del chrome y asi tantas veces como pulse el boton.
Hay alguna manera de detectar desde mi aplicacion con oShell que si el chrome ya está abierto, no lo vuelva a abrir
Gracias
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/oohg/CA%2BYc3wtAEZnbvgLvHVa%2BfiJGdyN%2B6Cb-_wL9OhD1y_DC3fLnYA%40mail.gmail.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/oohg/3c8419e9-f46f-234c-f5be-4628147d63e9%40gmail.com.
Hola a todos, continuando con esto, creo que lo que no hago bien es encadenar las tres teclas necesarias para abrir la utilidad recorte directamente.
Ya que si en la ACTION del BUTTON solamente pongo ACTION { || _PushKey(VK_LWIN ) } si me abre el menu windows.
Pero si le pongo ACTION { || _PushKey( (VK_LWIN) + (VK_LSHIFT) + (VK_S) ) } no me hace nada y no funciona.
Saludos.
Ricardo gracis por responder.
Windows 10 trae una utilidad de recorte de pantalla muy rapida y facil.
Mi idea es asignar la combinacion de teclas que lanza esta aplicacion de recorte con un boton.
Al pulsar el boton que declaro a continuacion que sea como si se hubieran pulsado las combinaciones de teclas en el teclado siguiennte: tecla windows + tecla shift + s
Pero no me hace nada.
@ 190,800 BUTTON Button_2 CAPTION "Recortar" PICTURE "recorte.JPG" ;
RIGHT ;
WIDTH 180 HEIGHT 60 ;
BOLD ;
TRANSPARENT ;
SIZE 14 ;
IMAGEMARGIN {0, 0, 0, 20} ;
ACTION { || + VK_LSHIFT + VK_S) }
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/oohg/3c8419e9-f46f-234c-f5be-4628147d63e9%40gmail.com.
Hola Mario, gracias por responder.
Esa opcion tambien la habia probado. Compila bien, se ejecuta el programa y cuando pulso el boton asociado a esta ACTION, no se hace nada, no sale mensaje ni se activa la utilidad recorte.
No se que puede estar pasando.
Saludos.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/oohg/642762BA5C944074A4B7AB37EA9EEFBD%40DESKTOP5U6GCJD.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/oohg/CAANhh_zTMCbyyGimjoBa-VxG763Oc%3DtrGFh73TGM6OVgxfUscQ%40mail.gmail.com.
Hola Miguel.
Muchas gracias por tu aporte.
Es muy ingenioso.
Ricardo Sassy
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/oohg/CADSbtg52stNKA3ZA6xiz6vpy71rr9eL0EWDwC-3hw3jwjnRs1w%40mail.gmail.com.
Juan Carlos, gracias por responder.
¿Fernando habria alguna posibilidad de crear el evento SendKeys para el control ActiveX?
Gracias.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/oohg/CAFpvzkkkzGxSQhU4hefhTgGspqiTDfmDW8uCq2owyp1Zbqtr2A%40mail.gmail.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/oohg/c0fb89d3-c067-39fb-ef89-2ca16b8d4c8d%40gmail.com.
Hola, mil gracias, me ha servido de utilidad.
Indicarte que al compilar me ha dado un warning en la linea
unsigned long Get_SerialNumber(char* RootPathName)
cambiandola por esta se arregla
unsigned long Get_SerialNumber(const char*
RootPathName)
Hola gente,
Se encuentra disponible la nueva versión de la interface Teresa 2.20.151 para acceso a los servidores AFIP.
NOVEDADES desde la anterior versión (2.14.017):
· Nuevo formato interno de gestión de archivos que permite “separar” completamente Teresa del Sistema de Gestión Comercial, facilitando el uso en entornos de Red Local con carpetas distribuidas. El funcionamiento es 100% compatible con la versión anterior.
· Mejoras internas en la codificación que optimiza recursos.
· Pequeña reducción de tiempo en las solicitudes automatizadas de TA (Ticket de Acceso).
· Reporte y solución de pequeño BUG en una función de listado.
· ¡¡¡NUEVO!!! Se agrega servicio “wsex” para Comprobantes de EXPORTACION.
· Se actualiza DemoTeresa_Usuario.exe incluyendo TODAS las nuevas funcionalidades.
· Se actualizan todos los documentos de ayuda.
IMPORTANTE: Para todos los usuarios actuales de Teresa, que quieran utilizar esta nueva versión, recomendamos hacer una copia de seguridad y realizar pruebas en un entorno de desarrollo antes de sobrescribir esta versión. Si bien, se ha realizado todo el “testeo” posible antes de publicarla, pudieran existir Bugs o incompatibilidades no observadas.
Cualquier novedad, falla o ideas nuevas serán bien recibidas.
¡GRACIAS TOTALES!...Teresa está siendo utilizada en producción en varios entornos de desarrollo sin problemas:
· VFP 9
· VFP 7
· Harbour-Consola
· Harbour-ooHG
· Harbour-MiniGUI
· Visual Basic
· Cobol
· Linux (Intermediación WinE)
· Genexus 6
Link de descarga:
https://mega.nz/file/dQ8CUJ4A#7dD7iPg-y_cLPzUGlb_hzYtobJ6vGmojkANer5z2rQI
Saludos,
Sergio Castellari
SDC Soluciones Informáticas
Creo el control ActiveX como pongo a continuacion
curl:="https://api.whatsapp.com/send?phone=" + str(prefijo) + telefono +"&text=" + mensajecompleto
if !HB_IsObject( oActiveX )
@ 0, 0 ACTIVEX ActiveX PARENT Win_1 WIDTH 100 HEIGHT 100 PROGID "Shell.Explorer" OBJ oActiveX DISABLED INVISIBLE
endif
oActiveX:Navigate( curl )
HB_IDLESLEEP(3)
oActiveX:sendkeys("~")
oActiveX:Release()Pongo oActiveX:sendkeys("~") porque en otras paginas y emails he leido que enviandole a la api de Whatsapp este simbolo "~" es como si el usuario hubiera pulsado el ENTER
Pero me da este error
--
Has recibido este mensaje porque estás suscrito al grupo "[oohg]" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a oohg+uns...@googlegroups.com.
Para ver este debate en la Web, visita https://groups.google.com/d/msgid/oohg/6fa5d809-111a-34e3-bf01-767a965de9dd%40gmail.com.
--
Has recibido este mensaje porque estás suscrito al grupo "[oohg]" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a oohg+uns...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/oohg/CAFpvzknGjc%3DnEH9mUY4evLMTHJufbBzhrjeqvibWOZODVmLy8Q%40mail.gmail.com.
--
Nippur
Mar del Plata
Buenos Aires
Argentina
--
Has recibido este mensaje porque estás suscrito al grupo "[oohg]" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a oohg+uns...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/oohg/CA%2BYc3wtAEZnbvgLvHVa%2BfiJGdyN%2B6Cb-_wL9OhD1y_DC3fLnYA%40mail.gmail.com.
--
Has recibido este mensaje porque estás suscrito al grupo "[oohg]" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a oohg+uns...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/oohg/CAFpvzkkkzGxSQhU4hefhTgGspqiTDfmDW8uCq2owyp1Zbqtr2A%40mail.gmail.com.
--
Has recibido este mensaje porque estás suscrito al grupo "[oohg]" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a oohg+uns...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/oohg/c0fb89d3-c067-39fb-ef89-2ca16b8d4c8d%40gmail.com.
--
Has recibido este mensaje porque estás suscrito al grupo "[oohg]" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a oohg+uns...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/oohg/CAHBF2g6AoY4P-arrtXQDG4eD8L%3DgDN8hPAwfsDVEcA_hNhHoNg%40mail.gmail.com.
A mí me ha funcionado esto.
********************************
function prep2_whatsapp
*****************************+
Local oShell
oShell := CreateObject( "WScript.Shell" )
oShell:run("chrome.exe https://api.whatsapp.com/send?phone=34XXXXXXXX" )
Sleep(1500)
oShell:sendkeys("{tab}{tab}")
oShell:SendKeys("~")
Sleep(5000)
oShell:sendkeys("Mensaje de prueba")
oShell:SendKeys("~")
Return nil
Saludos.
Antonio Vázquez
De: oo...@googlegroups.com <oo...@googlegroups.com> En nombre de david david
Enviado el: martes, 16 de marzo de 2021 7:00
Para: oo...@googlegroups.com
Asunto: Fwd: [oohg] consulta
Hola a todos, a ver si alguien puedo ayudarme con un control ActiveX.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/oohg/8999a9f5-8dc3-9719-f22f-79105cd9bab3%40gmail.com.
Hola Antonio, gracias por responder.
Efectivamente el mensaje se envia, pero encuentro los siguientes
problemas:
- se demora mucho el envio, como unos 35 segundos. De mi forma
tarda un par de segundos, pero no consigo enviar el ENTER para que
se valide el mensaje directamente.
- cada vez que envias un mensaje, se vuelve a abrir una nueva
ventana en el explorador, aunque la anterior la tengas abierta. No
encuentro solucion. De mi forma se abre, pero en modo invisible.
- El mensaje no se envia si pones oShell:sendkeys("Mensaje de
prueba, mañana"). Que es otro de los problemas que tengo y
consulte en otro email. De mi forma se envia el mensaje pero no
sale correctamente la ñ y las vocales con tilde á,é,í,ó,ú
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/oohg/010b01d71a2f%24e6bb2b10%24b4318130%24%40gmail.com.
Hola gente,
Wow!!! Recién veo este mail…
Gracias Miguel por compartir este código.
Facilita un montón la administración de archivos INI.
Saludos,
Sergio Castellari
De:
oo...@googlegroups.com [mailto:oo...@googlegroups.com] En nombre de Miguel
Ingles
Enviado el: miércoles, 10 de marzo de 2021 08:15 a.m.
Para: oo...@googlegroups.com
Asunto: Re: [oohg] Re: Consulta : Manejo de Archivos .ini
Hola
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/oohg/CADSbtg52stNKA3ZA6xiz6vpy71rr9eL0EWDwC-3hw3jwjnRs1w%40mail.gmail.com.
Hola Antonio, he seguido haciendo pruebas.
Si utilizo tu codigo con oShell:run("chrome.exe https://web.whatsapp.com/send?phone=34XXXXXXXX" )
Cada vez que mando un mensaje, se me abre una nueva ventana en el explorador. A parte demora muchisimo el envio del texto. Además hace cosas distintas si es el primer mensaje enviado o no. En el primer mensaje enviado todo medio normal, digo medio normal, sino envio caracteres como la ñ o palabras tildadas con acentos.
Este texto: Hola, Qué
tal estás, mañana
lo envia como: Hola, QuT tal ests, maana
Y he probado declarandolo de estas dos formas distintas y no sale
correcto.
local
mensaje:=HB_OEMTOANSI("Hola, Qué tal estás, mañana")
local mensaje:='Hola, Qué tal estás, mañana'
Además en el segundo mensaje enviado, se vuelve a abrir una nueva ventana en el explorador y sigue demorando muchisimo el envio del texto. En este segundo mensaje, el texto enviado, se pone en un campo que es donde se escribe para buscar un contacto.
Para que tu rutina
funcione bien, tengo que simplificarla a:
Local oShell
local mensaje:=HB_OEMTOANSI("Hola, Qué tal estás, mañana")
oShell :=
CreateObject( "WScript.Shell" )
oShell:run("chrome.exe
https://WEB.whatsapp.com/send?phone=34XXXXXXXXX" )
Sleep(1000)
oShell:sendkeys(mensaje)
oShell:SendKeys("~")
Pero sigo teniendo el
problema de que se abre una nueva ventana en chrome en cada
mensaje y el problema de los caracteres en el texto.
Si utilizo oShell:run("chrome.exe https://api.whatsapp.com/send?phone=34XXXXXXXX" )
Me hace exactamente lo
mismo que con la opcion anterior, pero primero me abre la
ventana de chrome una y otra vez por cada mensaje enviado y
despues se envia el mensaje desde la aplicacion whatsapp desktop
No se si tendrá algo que ver algo el sistema operativo utilizado
o la version de OOHG.
En mi caso Windows 10 Pro 64 bits. Y como version de Harbour,
MinGw y OOHG la siguiente.

Hola a todos, alguna ayuda al respecto.
| Asunto: | Fwd: [oohg] consulta |
|---|---|
| Fecha: | Tue, 16 Mar 2021 07:00:15 +0100 |
| De: | david david <dtat...@gmail.com> |
| Para: | oo...@googlegroups.com |
Buenos días, David.
No te doy solución, pero te cuento mi experiencia.
Si pongo el texto en la misma línea que llama a whatsapp, pierde el formato y no sale bien.
Yo lo que hago es copiar a memoria lo que quiero enviar (con formato, negrita, etc etc) y me sale bien, aunque no es directo, tengo que pulsar manualmente, una vez que abra CTRL+V y ENTER
SI lo hago así, sale perfecto.
Efectivamente, es un poco engorroso que abra una ventana del navegador cada ve< que lances un whatsapp, pero por ahora no encuentro otra solución.
Te pego un pantallazo de cómo me sale en el móvil. Si quieres pásame por privado tu tfno y te envío uno.

***********************************************
function prep_whatsapp_venta(oRsVentas, oRsAlbaran)
***********************************************
Local aLineas:={}, ni
aadd(aLineas,'*'+aRecEmpresa+'* ('+dtoc(_dfecha)+')'+chr(10)+chr(13))
aadd(aLineas,"Albarán: "+str(oRsVentas:idalbaran,8)+chr(13)+chr(10)+" Fecha: "+dtoc(oRsVentas:fecha)+chr(10)+chr(13))
if oRsVentas:numfactura>0
aadd(aLineas,"F. Simpl: "+str(oRsVentas:numfactura,8)+chr(13)+chr(10)+" Fecha: "+dtoc(oRsVentas:fechafactura)+chr(10)+chr(13))
endif
aadd(aLineas,"*"+ado_value('select nfiscal from clientes where id='+str(oRsVentas:idcliente,8))+"*"+chr(10)+chr(13))
oRsAlbaran:gotop()
for ni:=1 to oRsAlbaran:reccount()
aadd(aLineas,substr(oRsAlbaran:articulo+space(40),1,40)+chr(10))
aadd(aLineas," "+transform(oRsAlbaran:cantidad,"@E 9999")+" "+transform(oRsAlbaran:punidad,"@E 99,999.99")+" "+transform(oRsAlbaran:dto,"@E 99,999.99")+" "+oRsAlbaran:tipodto+" "+transform(oRsAlbaran:totlinea,"@E 99,999.99")+chr(10))
oRsAlbaran:skip()
next
aadd(aLineas," "+chr(10))
if oRsVentas:formapago="1.- Contado"
aadd(aLineas,"*Total: "+transform(oRsVentas:importetotal,"@E 999,999.99")+chr(10)+chr(13))
else
aadd(aLineas,"*Total a pagar: "+transform(oRsVentas:importetotal,"@E 999,999.99")+" € Venta a crédito.*"+chr(10)+chr(13))
endif
aadd(aLineas,"Gracias por su compra."+chr(13))
a0:=""
for ni:=1 to len(aLineas)
a0+=aLineas[ni]
next
SetClipboardText(a0+"Gire el móvil para verlo mejor")
ctel:=ado_value('select movil from clientes where id='+str(oRsVentas:idcliente,8))
ctel:=inputbox("Nº Móvil:",, cTel )
if valtype(cTel) $ "U" .or. empty(ctel)
else
EXECUTE FILE('https://api.whatsapp.com/send?phone=34'+strtran(alltrim(ctel)," ",""))
endif
De: oo...@googlegroups.com <oo...@googlegroups.com> En nombre de david david
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/oohg/fde81633-517b-43bf-42f1-6f569f975f24%40gmail.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/oohg/fde81633-517b-43bf-42f1-6f569f975f24%40gmail.com.
Antonio gracias por tu codigo, pero entiendo que utilizas este
codigo porque es para tu propio envio y no te importa copiar el
texto a memoria y despues cuando se abre whatsapp, pulsar CTRL+V
y ENTER .
Mi idea es hacerlo automatico, ya que me lo ha pedido un
cliente.
Mil gracias.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/oohg/01b901d71fbc%2450de2f10%24f29a8d30%24%40gmail.com.
Fernando gracias por tu ayuda.
Con tu ejemplo, se sigue abriendo una y otra vez, una ventana del explorador cada vez que se envia un mensaje. En el proceso desde que envias el mensaje, se abre la pagina de whatsapp en el explorador de internet, y despues se abre Whatsapp Desktop, demora un poco, tanto es asi, que si en ese proceso cambias la ventana activa por ejemplo a Word, el telefono y mensaje escrito en el script se copia en el documento de Word.
Aparte el script sirve siempre y cuando el mensaje a enviar sea a
un contacto que tengas en la agenda. Si se envia a un numero
telefono directamente, no se envia el mensaje y se escribe el
tanto el numero de telefono como el texto del mensaje en el campo
superior de busqueda de contactos.
Entiendo que al enviarme este ejemplo, el metodo oActiveX:SendKeys en el control ACTIVEX no es posible.
Seguiré investigando
Gracias.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/oohg/CAHBF2g7ChhB0pDEXKjzQmoZFRwqtOnVT%2B9gs%3DdVYJzA2GNHLrg%40mail.gmail.com.
Hola a todos, como continuacion de este email, de esta forma he resuleto el envio de caracteres especiales y vocales acentuadas.
Solo me faltaria el metodo oActiveX:SendKeys en el control
ACTIVEX, pero no tengo los conocimientos necesarios por si alguien
me puede ayudar a desarrollarlo.
codigo para solución de caracteres especiales
mensajelimpio:=strtran(mensajelimpio,"ñ","%C3%B1")
mensajelimpio:=strtran(mensajelimpio,"Ñ","%C3%91")
mensajelimpio:=strtran(mensajelimpio,"Á","%C3%81")
mensajelimpio:=strtran(mensajelimpio,"á","%C3%A1")
mensajelimpio:=strtran(mensajelimpio,"É","%C3%89")
mensajelimpio:=strtran(mensajelimpio,"é","%C3%A9")
mensajelimpio:=strtran(mensajelimpio,"Í","%C3%8D")
mensajelimpio:=strtran(mensajelimpio,"í","%C3%AD")
mensajelimpio:=strtran(mensajelimpio,"Ó","%C3%93")
mensajelimpio:=strtran(mensajelimpio,"ó","%C3%B3")
mensajelimpio:=strtran(mensajelimpio,"Ú","%C3%BA")
mensajelimpio:=strtran(mensajelimpio,"ú","%C3%9A")
mensajelimpio:=strtran(mensajelimpio,"º","%C2%BA")
mensajelimpio:=strtran(mensajelimpio,"ª","%C2%AA")
mensajelimpio:=strtran(mensajelimpio,"\","%5C")
mensajelimpio:=strtran(mensajelimpio,"¿","%C2%BF")
mensajelimpio:=strtran(mensajelimpio,"|","%7C")
mensajelimpio:=strtran(mensajelimpio,"{","%7B")
mensajelimpio:=strtran(mensajelimpio,"}","%7D")
mensajelimpio:=strtran(mensajelimpio,CHR(13),"%0A")
| Asunto: | Re: Fwd: [oohg] consulta |
|---|---|
| Fecha: | Sat, 27 Mar 2021 20:46:59 +0100 |
| De: | David Tato Jimenez <jimenezt...@gmail.com> |
|---|---|
| Responder a: | oo...@googlegroups.com |
| Para: | oo...@googlegroups.com |
Hola
Debes darle una mirada a las funciones HB_OEMTOANSI() y HB_ANSITOOEM() de Harbour.
Probablemente con ello soluciones tu problema..
Edson
--
Enviado desde Outlook Email App para Android
-------- Mensaje reenviado --------
Responder a: oo...@googlegroups.com Para: oo...@googlegroups.com
Fernando gracias por tu ayuda.
Con tu ejemplo, se sigue abriendo una y otra vez, una ventana del explorador cada vez que se envia un mensaje. En el proceso desde que envias el mensaje, se abre la pagina de whatsapp en el explorador de internet, y despues se abre Whatsapp Desktop, demora un poco, tanto es asi, que si en ese proceso cambias la ventana activa por ejemplo a Word, el telefono y mensaje escrito en el script se copia en el documento de Word.
Aparte el script sirve siempre y cuando el mensaje a enviar sea a un contacto que tengas en la agenda. Si se envia a un numero telefono directamente, no se envia el mensaje y se escribe el tanto el numero de telefono como el texto del mensaje en el campo superior de busqueda de contactos.
Entiendo que al enviarme este ejemplo, el metodo oActiveX:SendKeys en el control ACTIVEX no es posible.
Seguiré investigando
Gracias.
El 23/03/2021 a las 19:12, Fernando Yurisich escribió:
David:
En este enlace encontrarás un ejemplo que permite enviar mensajes por WhatsApp.Está basado en un script que encontré en Internet.
SaludosFernando Yurisich
OOHG project is located at https://github.com/oohg and QPM project is located at https://github.com/teamQPM
If you value my work to support this project , please consider supporting me with a donation via PayPal or Amazon Gift Card .
El mar, 23 de mar. de 2021 a la(s) 02:25, david david ( dtat...@gmail.com) escribió:
Hola a todos, alguna ayuda al respecto.
Gracias.
-------- Mensaje reenviado --------
Hola a todos, a ver si alguien puedo ayudarme con un control ActiveX.
Creo el control ActiveX como pongo a continuacion
curl:="https://api.whatsapp.com/send?phone=" + str(prefijo) + telefono +"&text=" + mensajecompleto
if !HB_IsObject( oActiveX )
@ 0, 0 ACTIVEX ActiveX PARENT Win_1 WIDTH 100 HEIGHT 100 PROGID "Shell.Explorer" OBJ oActiveX DISABLED INVISIBLE
endif
oActiveX:Navigate( curl )
HB_IDLESLEEP(3)
oActiveX:sendkeys("~")
oActiveX:Release()Pongo oActiveX:sendkeys("~") porque en otras paginas y emails he leido que enviandole a la api de Whatsapp este simbolo "~" es como si el usuario hubiera pulsado el ENTER
Pero me da este error
El 12/03/2021 a las 17:58, Fernando Yurisich escribió:
Luego de instanciado el control ACTIVEX puedes acceder a sus propiedades y métodos con la sintaxis tradicional.O sea oActiveX:SendKeysMira los ejemplos de la carpeta samples\activex.
SaludosFernando Yurisich
OOHG project is located at https://github.com/oohg and QPM project is located at https://github.com/teamQPM
If you value my work to support this project , please consider supporting me with a donation via PayPal or Amazon Gift Card .
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/oohg/62e18ace-d921-89a6-5a67-f9e174d5a6c2%40gmail.com.