sysctrl2 wrote:Solamente con algún API de paga?
lo ideal sería que se puedan enviar adjuntos
sin utilizar pulsaciones
saludos
https://www.whatsendbot.com/en/home/
sysctrl2 wrote:Solamente con algún API de paga?
lo ideal sería que se puedan enviar adjuntos
sin utilizar pulsaciones
saludos
Aprobecho para consultarle a Mr. Rao:
Si tengo las imagenes en el XBrowse y quiero copiarlas al portapapeles para luego despues pegarlas en Whatsapp, como podría hacer?
Ejemplo, si tengo este arreglo:
function XbrCopyColumnImage( oCol )
local aBmp
local lRet := .f.
if IfNil( oCol:cDataType, " " ) $ "PF"
aBmp := FW_ReadImage( nil, oCol:Value, nil, .f. )
if !Empty( aBmp[ 1 ] )
GDIPLUSHBITMAPTOCLIPBOARD( aBmp[ 1 ], GetDeskTopWindow() )
lRet := .t.
PalBmpFree( aBmp )
endif
endif
return lRet
#include "FiveWin.ch"
FUNCTION Main()
LOCAL oDlg1, oBrw, oBot1,;
aCols := {;
{'54999999999','*Jose:*'+chr(13)+'Venezuela','https://forums.fivetechsupport.com/download/file.php?avatar=3176_1605719869.jpg',"c:\fwh21\samples\whatsapp.prg"},;
{'54999999999','*Mr. Rao:*'+chr(13)+'India','https://forums.fivetechsupport.com/download/file.php?avatar=868_1446686491.jpg',"c:\fwh21\samples\whatsapp1.prg"},;
{'54999999999','*Cesar:*'+chr(13)+'Argentina','https://forums.fivetechsupport.com/download/file.php?avatar=294_1327638239.jpg',"c:\fwh21\samples\whatsapp2.prg"}}
DEFINE DIALOG oDlg1 TITLE "Envio de whatsapp" SIZE 700,600 PIXEL TRUEPIXEL RESIZABLE
@ 60, 20 XBROWSE oBrw SIZE 600,500 pixel OF oDlg1 ARRAY aCols ;
HEADERS "Telefono", "Texto","Imagen","Adjunto";
COLUMNS 1,2,3,4;
SIZES nil, 100,150,nil;
CELL LINES NOBORDER
WITH OBJECT oBrw
:nRowHeight := 150
:aCols[3]:cDataType := "P"
:CreateFromCode()
END
@ 05,05 BUTTON oBot1 PROMPT "&Enviar" OF oDlg1 SIZE 100,40 ACTION Enviar(aCols,oBrw) PIXEL
ACTIVATE DIALOG oDlg1 CENTERED
RETURN nil
*--------------------------------------------------------------------------------
STATIC Function Enviar(aData, oBrw)
Local oShell, cTexto, i
oBrw:GoTop()
FOR i := 1 TO LEN(aData)
cTexto := aData[i,2]
XbrCopyColumnImage(oBrw:aCols[3])
cTexto := STRTRAN(cTexto," ","%20")
cTexto := STRTRAN(cTexto,"&","%26")
cTexto := STRTRAN(cTexto,chr(13),"%0D%0A")
ShellExecute( 0, "open", "whatsapp://send?phone="+alltrim(aData[i,1])+"&text="+cTexto)
oShell := CreateObject( "WScript.Shell" )
syswait(.2)
oShell:SendKeys( "~" )
syswait(3)
oShell:SendKeys( "^v" )
syswait(4)
oShell:SendKeys("~")
syswait(4)
oShell:SendKeys("+{TAB}")
syswait(.2)
oShell:SendKeys("~")
syswait(.2)
oShell:SendKeys("{DOWN}")
syswait(.2)
oShell:SendKeys("~")
syswait(2)
oShell:SendKeys(aData[i,4])
syswait(.2)
oShell:SendKeys("~")
syswait(4)
oShell:SendKeys("~")
syswait(.2)
oShell:SendKeys("{TAB}")
oBrw:Skip()
NEXT i
Return nil
function XbrCopyColumnImage( oCol )
local aBmp
local lRet := .f.
if IfNil( oCol:cDataType, " " ) $ "PF"
aBmp := FW_ReadImage( nil, oCol:Value, nil, .f. )
if !Empty( aBmp[ 1 ] )
GDIPLUSHBITMAPTOCLIPBOARD( aBmp[ 1 ], GetDeskTopWindow() )
lRet := .t.
PalBmpFree( aBmp )
endif
endif
return lRet
function CopyImageToClipboard( cImage )
local hBitmap := FW_ReadImage( nil, cImage, , .f. )[ 1 ]
if !Empty( hBitmap )
GDIPLUSHBITMAPTOCLIPBOARD( hBitmap, GetDeskTopWindow() )
DeleteObject( hBitmap )
return .t.
endif
return .f.
SendToWhatsApp( cPhone, cMessage, aFiles, aImages ) --> lSuccess
#include "FiveWin.ch"
FUNCTION Main()
//Whatsapp con mensaje por default "Hola"
SendToWhatsApp('5492324463274')
//Whatsapp con mensaje
SendToWhatsApp('5492324463274','*Estimado Mr. Rao'+chr(13)+'Esto es una prueba')
//Whatsapp con imagen y archivo adjunto
SendToWhatsApp('5492324463274','Esto es una prueba',;
'c:\fwh21\samples\whatsapp2.prg',;
'https://forums.fivetechsupport.com/download/file.php?avatar=294_1327638239.jpg')
//Whatsapp con array de imagenes y array de archivos adjuntos
SendToWhatsApp('5492324463274','Esto es una prueba',;
{'c:\fwh21\samples\whatsapp2.prg','c:\fwh21\samples\whatsapp1.prg'},;
{'https://forums.fivetechsupport.com/download/file.php?avatar=294_1327638239.jpg',;
'https://forums.fivetechsupport.com/download/file.php?avatar=868_1446686491.jpg'})
RETURN nil
Function SendToWhatsApp( cPhone, cMessage, aFiles, aImages )
Local oShell, cTextFormated, i, cImage, cFile
Default cMessage := 'Hola'
oShell := CreateObject( "WScript.Shell" )
If cPhone == nil .or. empty(cPhone)
Return .f.
endif
cTextFormated := cMessage
cTextFormated := STRTRAN(cTextFormated," ","%20")
cTextFormated := STRTRAN(cTextFormated,"&","%26")
cTextFormated := STRTRAN(cTextFormated,chr(13),"%0D%0A")
cTextFormated := STRTRAN(cTextFormated,chr(10),"%0D%0A")
// Primer envio el whatsapp comun
ShellExecute( 0, "open", "whatsapp://send?phone="+alltrim(cPhone)+"&text="+cTextFormated)
syswait(.5)
oShell:SendKeys( "~" )
//Tercero me fijo si tiene adjuntos y los voy agregando
if !(aImages == nil)
if ValType(aImages) == 'C'
syswait(2)
CopyImageToClipboard(aImages)
oShell:SendKeys( "^v" )
syswait(2)
oShell:SendKeys("~")
syswait(2)
else
if ValType(aImages) == 'A'
for each cImage in aImages
syswait(2)
CopyImageToClipboard(cImage)
oShell:SendKeys( "^v" )
syswait(2)
oShell:SendKeys("~")
syswait(4)
next
endif
endif
endif
//Tercero me fijo si tiene adjuntos y los voy agregando
if !(aFiles == nil)
if ValType(aFiles) == 'C'
syswait(2)
oShell:SendKeys("+{TAB}")
syswait(.2)
oShell:SendKeys("~")
syswait(.2)
oShell:SendKeys("{DOWN}")
syswait(.2)
oShell:SendKeys("~")
syswait(2)
oShell:SendKeys(aFiles)
syswait(.2)
oShell:SendKeys("~")
syswait(4)
oShell:SendKeys("~")
syswait(.2)
oShell:SendKeys("{TAB}")
syswait(2)
else
if ValType(aFiles) == 'A'
for each cFile in aFiles
syswait(2)
oShell:SendKeys("+{TAB}")
syswait(.2)
oShell:SendKeys("~")
syswait(.2)
oShell:SendKeys("{DOWN}")
syswait(.2)
oShell:SendKeys("~")
syswait(2)
oShell:SendKeys(cFile)
syswait(.2)
oShell:SendKeys("~")
syswait(2)
oShell:SendKeys("~")
syswait(.2)
oShell:SendKeys("{TAB}")
syswait(2)
next
endif
endif
endif
return .t.
function CopyImageToClipboard( cImage )
local hBitmap := FW_ReadImage( nil, cImage, , .f. )[ 1 ]
if !Empty( hBitmap )
GDIPLUSHBITMAPTOCLIPBOARD( hBitmap, GetDeskTopWindow() )
DeleteObject( hBitmap )
return .t.
endif
return .f.
FW_CopyToClipBoard( { FullName( cFile1 ), FullName( cFile2 ), ... } ) --> lSuccess
function SendToWhatsApp( cPhone, cMsg, aFiles )
local oShell
// Aftere check params and format cMsg
oShell := CreateObject( "WScript.Shell" )
ShellExecute( 0, "Open", "whatsapp://send?phone="+cPhone+"&text="+cMsg )
SysWait(2)
if !Empty( aFiles )
if HB_ISSTRING( aFiles ); aFiles := { aFiles }; endif
FW_CopyToClipBoard( aFiles )
SysWait( 2 )
oShell:SendKeys( "^v" )
SysWait( 2 )
endif
oShell:SendKeys("~")
return nil
function SendToWhatsApp( cPhone, cMsg, aFiles, aImages )
local oShell, tmp
// Aftere check params and format cMsg
oShell := CreateObject( "WScript.Shell" )
ShellExecute( 0, "Open", "whatsapp://send?phone="+cPhone+"&text="+cMsg )
SysWait(1)
if !Empty( aFiles )
if HB_ISSTRING( aFiles ); aFiles := { aFiles }; endif
if !Empty( aImages )
if !HG_ISARRAY( aImages ); aImages := { aImages }; endif
tmp := {}
AEval( aImages, { |c| If( File( c ), AAdd( aFiles, c ), AAdd( tmp, c ) ) } )
aImages := tmp
endif
if FW_CopyToClipBoard( aFiles )
SysWait( 2 )
oShell:SendKeys( "^v" )
SysWait( 2 )
endif
for each tmp in aImages
if CopyImageToClipBoard( tmp ) // present vesion
// if FW_CopyToClipBoard( tmp ) // FWH2310
SysWait( 1 )
oShell:SendKeys( "^v" )
endif
next
endif
oShell:SendKeys("~")
return nil
cmsoft wrote:Excelente!!!! Mucho mejor!!!
Muchas gracias por compartirlo!
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: Google [Bot] and 44 guests