Algunos códigos para envio de mensajes a Whatsapp

1,709 views
Skip to first unread message

Departamento de Soporte Avantio Development

unread,
Nov 21, 2020, 10:34:34 AM11/21/20
to Comunidad de Visual Foxpro en Español

Ayer encontré en Foxite unos códigos para poder enviar mensajes a Whatsapp desde VFP, para ello, es neesario tener en el equipo instalado y configurado correstamente el Whatsapp para Windows (por lo menos en mi caso) no se si con Whatsapp web funciona. Los códigos fueron compartidos por Tariq Mehmood, de Paquistan. Espero les sirva a alguno. (Hice la traducción de algunos mensajes).

*------------------------------------------------------------

* 1- Como enviar un mensaje simple

*------------------------------------------------------------

** Declare Sleep

Declare Sleep In kernel32 Integer

Declare Integer FindWindow In WIN32API String , String

Declare Integer SetForegroundWindow In WIN32API Integer

Declare Integer ShowWindow In WIN32API Integer , Integer

Declare Integer ShellExecute In shell32.Dll ;

INTEGER hndWin, ;

STRING cAction, ;

STRING cFileName, ;

STRING cParams, ;

STRING cDir, ;

INTEGER nShowWin


Local lt, lhwnd

cPhone=[923000000000] &&Cambiar el número incluyendo el código del país pero sin el +

ccMessage=[Salduos, prueba de Whatsapp desde VFP.]

cmd='whatsapp://send?phone=&cPhone&text='+ccMessage

=ShellExecute(0, 'open', cmd,'', '', 1)

Wait "" Timeout 3

lt = "Whatsapp"

lhwnd = FindWindow (0, lt)

If lhwnd!= 0

SetForegroundWindow (lhwnd)

ShowWindow (lhwnd, 1)

ox = Createobject ( "Wscript.Shell" )

Sleep(2000)

ox.sendKeys ( '{ENTER}' )

Else

Messagebox ( "Whatsapp no esta activado" )

Endif


*------------------------------------------------------------

* 2- Como enviar un archivo de imagen

*------------------------------------------------------------

Do image_to_clip

** Declare Sleep

Declare Sleep In kernel32 Integer

Declare Integer FindWindow In WIN32API String , String

Declare Integer SetForegroundWindow In WIN32API Integer

Declare Integer ShowWindow In WIN32API Integer , Integer

Declare Integer ShellExecute In shell32.Dll ;

INTEGER hndWin, ;

STRING cAction, ;

STRING cFileName, ;

STRING cParams, ;

STRING cDir, ;

INTEGER nShowWin


Local lt, lhwnd

cPhone=[923000000000] &&Cambiar el número incluyendo el código del país pero sin el +

cmd='whatsapp://send?phone=&cPhone'

=ShellExecute(0, 'open', cmd,'', '', 1)

Wait "" Timeout 3

lt = "Whatsapp"

lhwnd = FindWindow (0, lt)

If lhwnd!= 0

SetForegroundWindow (lhwnd)

ShowWindow (lhwnd, 1)

ox = Createobject ( "Wscript.Shell" )

ox.sendKeys ("^{v}")

Sleep(2000)

ox.sendKeys ( '{ENTER}' )

Else

Messagebox ("Whatsapp no esta activado" )

Endif


Procedure image_to_clip

Declare Integer Sleep In kernel32 Integer

Declare Integer OpenClipboard In User32 Integer

Declare Integer CloseClipboard In User32

Declare Integer EmptyClipboard In User32

Declare Integer SetClipboardData In User32 Integer,Integer

Declare Integer LoadImage In WIN32API Integer,String,Integer,Integer,Integer,Integer

Declare Integer GetClipboardData In User32 Integer

Declare Integer GdipCreateBitmapFromHBITMAP In GDIPlus.Dll Integer, Integer, Integer @

Declare Integer GdipSaveImageToFile In GDIPlus.Dll Integer,String,String @,String @

Declare Long GdipCreateHBITMAPFromBitmap In GDIPlus.Dll Long nativeImage, Long @, Long

Declare Long GdipCreateBitmapFromFile In GDIPlus.Dll String FileName, Long @nBitmap

Declare Long GdipCreateBitmapFromFile In GDIPlus.Dll String FileName, Long @nBitmap

Declare Long CopyImage In WIN32API Long hImage, Long, Long, Long , Long


#Define CF_BITMAP 2

#Define CF_DIB 8

#Define IMAGE_BITMAP 0

#Define LR_LOADFROMFILE 16

#Define LR_MONOCHROME 0x00000001


Local xpict

m.xpict=Getpict()

If !Empty(m.xpict)

m.ext=Proper(Justext(m.xpict))

If !Inlist(m.ext,"Png","Jpg","Bmp","Gif","Tif")

Messagebox('Por favor, seleccione solo imagenes.',0+16,'Whatsapp',3000)

Return

Endif

Else

Messagebox('Imagen no seleccionada.',0+64,'Whatsapp',3000)

Return

Endif


Local m.oo

m.oo=Newobject("image")

m.oo.Picture=m.xpict

Local lnWidth,lnHeight

lnWidth=m.oo.Width

lnHeight=m.oo.Height


nBitmap=0

hbm=0

GdipCreateBitmapFromFile(Strconv(m.xpict+0h00,5),@nBitmap)

GdipCreateHBITMAPFromBitmap(nBitmap,@hbm,0)

lhBmp = CopyImage(hbm, 0, m.lnWidth, m.lnHeight,0)

If OpenClipboard(0)!= 0

EmptyClipboard()

SetClipboardData(CF_BITMAP, lhBmp)

CloseClipboard()

Endif

Endproc


*------------------------------------------------------------

* 4- Como enviar mensajes masivos

*------------------------------------------------------------

* Primero crearemos algunos datos

** Declare Sleep

Declare Sleep In kernel32 Integer


Create Cursor clients(mobile c(12))

Insert Into clients Values('923000000000') &&Cambiar el número incluyendo el código del país pero sin el +

Insert Into clients Values('923000000000') &&Cambiar el número incluyendo el código del país pero sin el +

Insert Into clients Values('923000000000') &&Cambiar el número incluyendo el código del país pero sin el +

Go Top

lnMessNum = 0

Scan

Scatter Memv

cPhone=Alltrim(m.mobile)

cMessage=Alltrim('Este es un mensaje de promoción de ventas ') + Alltrim(Str(lnMessNum))

lnMessNum = lnMessNum + 1


Declare Integer FindWindow In WIN32API String , String

Declare Integer SetForegroundWindow In WIN32API Integer

Declare Integer ShowWindow In WIN32API Integer , Integer

Declare Integer ShellExecute In shell32.Dll ;

INTEGER hndWin, ;

STRING cAction, ;

STRING cFileName, ;

STRING cParams, ;

STRING cDir, ;

INTEGER nShowWin

Local lt, lhwnd

cmd='whatsapp://send?phone=&cPhone&text=' + cMessage

=ShellExecute(0, 'open', cmd,'', '', 1)

Sleep(2000) && 2 segundo de intervalo en cada mensaje.

lt = "Whatsapp"

lhwnd = FindWindow (0, lt)

If lhwnd!= 0

SetForegroundWindow (lhwnd)

ShowWindow (lhwnd, 1)

ox = Createobject ( "Wscript.Shell" )

Sleep(2000)

ox.sendKeys ( '{ENTER}' )

Else

Messagebox ( "Whatsapp is not activated!" )

Endif

Endscan


*------------------------------------------------------------

* 5- Como enviar el contenido de un archivo de texto

*------------------------------------------------------------

cFile=Getfile('txt')

_Cliptext=Filetostr(cFile)


** Declare Sleep

Declare Sleep In kernel32 Integer


Declare Integer FindWindow In WIN32API String , String

Declare Integer SetForegroundWindow In WIN32API Integer

Declare Integer ShowWindow In WIN32API Integer , Integer

Declare Integer ShellExecute In shell32.Dll ;

INTEGER hndWin, ;

STRING cAction, ;

STRING cFileName, ;

STRING cParams, ;

STRING cDir, ;

INTEGER nShowWin


Local lt, lhwnd

cPhone=[923000000000] &&Cambiar el número incluyendo el código del país pero sin el +

cmd='whatsapp://send?phone=&cPhone'

=ShellExecute(0, 'open', cmd,'', '', 1)

Wait "" Timeout 3

lt = "Whatsapp"

lhwnd = FindWindow (0, lt)

If lhwnd!= 0

SetForegroundWindow (lhwnd)

ShowWindow (lhwnd, 1)

ox = Createobject ( "Wscript.Shell" )

ox.sendKeys ("^{v}")

Sleep(2000)

ox.sendKeys ( '{ENTER}' )

Else

Messagebox ( "Whatsapp no esta activado." )

Endif

*-********************************************

Hay otros dos ejemplos pero no los he probrado.





Zarlu

unread,
Nov 21, 2020, 10:42:10 AM11/21/20
to Comunidad de Visual Foxpro en Español
Buenos días soporte.avantio !

Gracias.

zarlu
Chetumal, Quintana Roo, México

HernanCano

unread,
Nov 21, 2020, 9:35:49 PM11/21/20
to Comunidad de Visual Foxpro en Español
Listo, colega. Gracias por compartir.

He probado todos y cada uno de los ejemplos aquí expuestos y --tengo que decirlo-- funcionan bien. 
Pero tengo que pedir a los colegas que comparten que deben informar adecuadamente la forma de uso de las utilidades que exponen.

Para que estos ejemplos funcionen debe tenerse presente lo sgte:

1. Hay que tener instalado WhatsApp web en el computador, y evidentemente conectado a una cuenta.
2. Hay que tener abierto WhatsApp web en el computador.
3. Para tener en cuenta para próximos ensayos: normalmente utilizo Google en modo privado y la primera vez que ejecuté los ejemplos, se abría WhatsApp web en el código QR como si apenas lo fuera a abrir, pero en modo normal, el modo no privado. Significa que en modo privado no funcionan los ejemplos expuestos por el colega "soporte" (y probablemente tampoco otros --compartidos hace un tiempo--).
4. Hay que dejar de usar el computador, pues la funcionalidad se basa en enviar los textos a la ventana "activa" de WhatsApp, como si uno estuviera usando el computador (recuerdo que hace un tiempo --un año o menos quizá-- alguien expuso ejemplos similares; pero a mí no me funcionó en condiciones normales: si ejecutaba bien en un momento, unos segundos después ya no; tal vez era por que yo usaba modo privado o porque el ejemplo no hacía las pausas de segundos lo suficientemente amplios para que el ejemplo funcionara.... Bueno... éste me funciona ahora y trataré de ser cuidadoso al instalarlo donde un cliente).
5. Sinceramente me continúa la duda si los receptores de los mensajes tengan que estar entre los contactos de quien envía. Sólo probé con miembros de mi familia como receptores, que evidentemente está entre mis contactos--, e incluso conmigo mismo como receptor, y "todo bien".

VFP es una nota !!!
Seguimos en contacto.

Programador Desarrollador

unread,
Nov 22, 2020, 9:00:01 AM11/22/20
to Comunidad de Visual Foxpro en Español
disculpen mi pregunta o novatada, pero alguien podra colocar un pequeño ejemplo de uso, ya que lo copie y pegue en un prg y no hace nada.

Kisko

unread,
Nov 22, 2020, 12:06:39 PM11/22/20
to publice...@googlegroups.com
Hola.

Me parece un muy buen aporte.

¿Tendrías el código para adjuntar un archivo al mensaje de WhatsApp? o el enlace al Foxsite donde los has conseguido.
Gracias.

Saludos.
Francisco Lorente.
Murcia. España


Libre de virus. www.avg.com

--
Visita el Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" 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 publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/40a2652b-edc6-405f-a861-4155d1ea360bn%40googlegroups.com.

Libre de virus. www.avg.com

Jairo Cedeño

unread,
Nov 22, 2020, 3:55:06 PM11/22/20
to Comunidad de Visual Foxpro en Español
Estimados todos, acá les dejo link de videos explicativos y como se usa SMSWhatsApp.dll en Visual FoxPro y otros lenguajes.

Marcelo Barberis

unread,
Nov 22, 2020, 5:49:10 PM11/22/20
to publicesvfoxpro
Una consulta y la dll  SMSWhatsApp.dll donde se la puede descargar o solo son los videos nomas

--
Visita el Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" 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 publicesvfoxp...@googlegroups.com.


--
Marcelo Barberis Gutierrez
Sistemas Informaticos
Villa Montes - Bolivia
Telef.: +591-76830544

Jairo Cedeño - GMail

unread,
Nov 22, 2020, 5:52:51 PM11/22/20
to publice...@googlegroups.com

&& herramienta para las pruebas!

Has recibido este mensaje porque estás suscrito a un tema del grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este tema, visita https://groups.google.com/d/topic/publicesvfoxpro/ONB-OlHq0HI/unsubscribe.
Para cancelar la suscripción a este grupo y a todos sus temas, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/CAMUm0dm_Fp38s%3DYkPkLG%2B28k97H-pJRsmNOKfTLNHhurn86HZA%40mail.gmail.com.

Marcelo Barberis

unread,
Nov 22, 2020, 6:43:04 PM11/22/20
to publicesvfoxpro
otra consulta he bajado el archivo que compartiste por mega tengo esta duda
   Costos solo para programadores:           Tiempo máximo para activación total
 Kit de  3 licencias: $140 cada una                       03 días
 Kit de  6 Licencias: $130 cada una                      08 días
 Kit de  9 Licencias: $120 cada una                      15 días
 Kit de 12 Licencias y más: $110 cada una           30 días

si compro el kit de 3 licencia solo me sirven para 3 dias ??????

normalmente como todos por aca somos desarrolladores o programadores necesitamos las herramientas que sean 100% sin restricciones de tiempo deberia poner alguna categoria que sea libre de tiempo sino estariamos pagando eternamente



Jairo Cedeño - GMail

unread,
Nov 22, 2020, 6:56:02 PM11/22/20
to publice...@googlegroups.com

Hola, cuando compras un kits es porque ya tienes clientes listos para funcionar, normalmente todos los clientes han comprado licencias cuando ya tienen realizada todas las pruebas!

Por favor usar la demo y realiza las pruebas, cuando ya tenga usted listo un cliente, compras la licencia, y se activa en poco tiempo!

Jairo Cedeño - GMail

unread,
Nov 22, 2020, 6:58:18 PM11/22/20
to publice...@googlegroups.com

Le licencia es por un año a partir de la compra, se renueva cada año,

Los tiempos de activación pues son considerados en rango para activar…

Saludos cordiales…

Cualquier duda estamos al https://wa.me/593984958499

James Suárez

unread,
Nov 22, 2020, 7:45:58 PM11/22/20
to publice...@googlegroups.com
Les recuerdo una opción más, mi servicio waba:

- Sin DLL, es un API Rest JSON, no gasta recursos en su equipo
- Acceda al mismo whatsapp desde diferentes clientes
- Activación en unos 5-20 minutos.  
- Sin tiempos de compromiso, cancele cuando desee:
- Se le da mantenimiento constante para garantizar que el servicio siga funcionando correctamente.  
- Servicio rápido y eficaz (no se hace simulando clicks y teclado que suele ser impreciso y lento)
- Soporta texto, imágenes, audio, video, documentos

10 al mes (100 al año) para envío de mensajes
30 al mes (300 al año) para envío+recepción de mensajes. Ideal para realizar bots de whatsapp. 

Ya varios han usado mi servicio , tengo una app demo, por si quieren ver que sí funciona. 

Dsan

unread,
Nov 23, 2020, 11:45:07 AM11/23/20
to publice...@googlegroups.com
Esos códigos sirven tal vez para enviar una porción pequeña de registros, pero para algo ya más corporativo te sugiero usar una api controlada por los autorizados o por ti mismo en tu propio servidor. y si no es el autorizado siempre hay que tomar en cuenta esto, para evitar bloqueos, porque si unos cuantos destinatarios te bloquean y reportan, adios whatsapp con ese número....

Yo en mi caso, Vendo la api full, donde ustedes mismo pueden crear sus propias instancia sin Limites, el que desee em contacta a mi correo douglas....@gmail.com, y asi si ustedes no tiene servidores donde alojar la api, se la instalan la instancia al cliente, yo sacando cuenta hace mucho tiempo anduve buscando soluciones en vfp, y lo mejor es usar la api.

Tomar en cuesta esto:


Cinco motivos por los que WhatsApp le puede bloquear la cuenta

La app contempla dos tipos de sanciones: las graves con bloqueos definitivos de la cuenta y otras leves con bloqueos temporales de 24 horas

La aplicación más popular del mundo con más de 1.500 millones de usuarios detalla en su página web la lista de términos y condiciones de uso, aunque en algunos casos sin especificar demasiado.

WhatsApp contempla dos tipos de sanciones: las graves con bloqueos definitivos de la cuenta y otras leves con bloqueos temporales de 24 horas, tras las que se podrá volver a usar la aplicación con normalidad. Repasamos los cinco motivos por los que WhatsApp puede bloquear su cuenta.

Enviar demasiados mensajes a desconocidos
¿Va a escribirle a una persona que no lo tiene guardado en sus contactos? Lo mejor es que mande un par de mensajes y espere a que le conteste antes de lanzarse a escribir de forma excesiva. En caso de hacerlo, WhatsApp considerará su acción como spam o acoso a desconocidos y podría bloquearle la cuenta.

La compañía no detalla qué cantidad considera excesiva, pero sí recomienda a sus usuarios que se aseguren de que la persona a la que escriban lo tiene guardado en su agenda de contactos o, en caso de saber que no es así, manden algún mensaje para que lo agreguen.

Crear demasiados grupos con desconocidos
Además de las conversaciones individuales, suele ser habitual contar con varios grupos de WhatsApp: familia, amigos del colegio, de la Universidad, compañeros del trabajo… Mientras crees grupos con personas de su lista de contacto no hay ningún problema, el problema surge cuando son desconocidos.

Así, WhatsApp considera una actividad sospechosa crear demasiados grupos con personas que no tienes en su agenda y podría llegar a bloquear su cuenta. Eso sí, no pasa nada por crear un grupo con sus amigos y además añadir a alguien cuyo teléfono no tienes guardado. La alarma surge cuando son muchos grupos y todos están formados por personas desconocidas.

Enviar el mismo mensaje a muchos contactos
WhatsApp considera que el envío del mismo mensaje a muchas personas puede considerarse spam aunque tenga guardado su número de teléfono en su agenda y podría conllevar un bloqueo temporal de su cuenta.

Si quiere enviar el mismo mensaje a muchos usuarios y no quiere exponerse a ningún riesgo, WhatsApp recomienda el uso de las listas de difusión.

Bloqueo de muchos usuarios
Si muchos usuarios toman la decisión de bloquearlo en un breve espacio de tiempo, WhatsApp sospechará sobre el uso que le das a la cuenta y pasará a bloquearla.

WhatsApp no explica cuál es el número de bloqueos necesarios para la suspensión temporal de la cuenta, pero sí recomienda comunicarse solo con usuarios conocidos para evitar que lo bloqueen.

Violar los términos y condiciones
WhatsApp, al igual que cualquier otra aplicación o servicio, cuenta con una lista de términos y condiciones que debes aceptar antes de empezar a usarla. ¿El problema? Que muchas veces los aceptamos sin leerlos detenidamente.

En ellas, se detallan algunas de las actividades de los usuarios que no están permitidas y que podrían llevar al bloqueo de su cuenta en caso de realizarlas como por ejemplo el envío de mensajes spam, noticias falsas o contenidos obscenos o difamatorios. WhatsApp considera también una violación de sus condiciones el uso de aplicaciones de terceros para conseguir una experiencia más completa, por lo que puede proceder a bloquear su cuenta.



Saludes


--
Visita el Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" 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 publicesvfoxp...@googlegroups.com.

Jairo Cedeño

unread,
Dec 28, 2020, 11:50:36 AM12/28/20
to Comunidad de Visual Foxpro en Español
Estimado, se entiende lo expuesto, deberías lanzar una demo, así como hemos lanzado demo sin limites para SMSWhatsApp como servicio...esperamos sus pruebas!

Giovanni Colombo

unread,
Jul 30, 2021, 10:14:40 AM7/30/21
to Comunidad de Visual Foxpro en Español
Hola.
En el envio de una imagen en whastapp me da error en:

GdipCreateBitmapFromFile(Strconv(m.xpict+0h00,5),@nBitmap)

FUNTION NAME IN MISSING )

Agradeceria si me pueden ayudar.
gracias


Reply all
Reply to author
Forward
0 new messages