[Risolto] SendKeys-invio messaggi Whatsapp

Creare una macro - Scrivere uno script - Usare le API
Rispondi
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

[Risolto] SendKeys-invio messaggi Whatsapp

Messaggio da patel »

Vorrei inviare stringhe ad una applicazione exe, riesco ad inviare il carattere TAB in modo da far posizionare il cursore nel campo di immissione ma non ad inserirci un testo, questo il mio codice

Codice: Seleziona tutto

Sub Main				

Dim oShell, MyApp, i  
doc = ThisComponent
Sh = doc.Sheets(0)
Set oShell = CreateObject("WScript.Shell")
MyApp = "C:\Users\patel\AppData\Local\WhatsApp\WhatsApp.exe"
i = 0
i = oShell.Run(MyApp, 1 ,false)
wait 8000
oShell.SendKeys "+{TAB}", True
oShell.SendKeys "+{TAB}", True
oShell.SendKeys "+{TAB}", True
oShell.SendKeys "+{TAB}", True
startrow = 1
startcol = 0
    contact = sh.GetCellByPosition(startcol,startrow).String
    line1 = sh.GetCellByPosition(startcol + 1,startrow).String
    oShell.SendKeys "+" & contact, True
    oShell.SendKeys "~", True
    oShell.SendKeys "+~", True
    oShell.SendKeys line1, True
    oShell.SendKeys "+~", True
    wait 5000
    oShell.SendKeys "+{TAB}", True
    oShell.SendKeys "+{ENTER}", True
    oShell.SendKeys "~", True

End Sub
Ultima modifica di patel il venerdì 25 novembre 2022, 15:56, modificato 2 volte in totale.
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: SendKeys

Messaggio da Gaetanopr »

Così funziona su whatsapp web.

Codice: Seleziona tutto

Sub InvioWhatsApp				

doc = ThisComponent
Sh = doc.Sheets(0)

startrow = 1
startcol = 0
contact = sh.GetCellByPosition(startcol,startrow).String
line1 = sh.GetCellByPosition(startcol + 1,startrow).String

Stringa = "https://web.whatsapp.com/send?phone=%2B" & contact & "&text=" & line1 & "&app_absent=1&send=1" 
Dim shell As Object 
Set shell = CreateObject("shell.application") 
shell.Open Stringa 
End Sub
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: SendKeys

Messaggio da patel »

Strano, a me non va, apre la pagina web.whatsapp.com , appaiono per un attimo i dati da inviare e poi spariscono.
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: SendKeys

Messaggio da Gaetanopr »

Non so che dire a me apre https://web.whatsapp.com/ il contatto indicato su A2 e scrive il messaggio indicato su B2, devo solo inviarlo.
Non ho provato la tua macro in quanto non ho ancora scaricato whatsapp desktop, appena ho due minuti la provo.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: SendKeys

Messaggio da patel »

C'è qualche documentazione su sendkeys ? non trovo niente, comunque non c'è fretta, si tratta solo di curiosità,
-
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: SendKeys

Messaggio da Gaetanopr »

Ho installato Whatsapp desktop ma cosa strana non riesco a risalire al suo percorso, dovrebbe trovarsi su

Codice: Seleziona tutto

"C:\Users\gaetano\AppData\Local\"
ma niente, hai provato con la funzione collegamento dal foglio direttamente?
Allegati
APRI_WHTSAPP.ods
(11.02 KiB) Scaricato 102 volte
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: SendKeys

Messaggio da patel »

Il percorso è C:\Users\gaetano\AppData\Local\WhatsApp\WhatsApp.exe.
Con l'app si può mettere il nome utente invece del numero di telefono, io avevo provato la tua macro per la versione web col nome utente, invece col num di telefono funziona ma aspetta l'invio manuale, quindi non è adatta per spedire messaggi ad una lista di contatti.
Con Excel usando SendKeys riesco a farlo e provavo a farlo anche con libre.
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: SendKeys

Messaggio da Gaetanopr »

patel ha scritto: giovedì 24 novembre 2022, 20:48 Il percorso è C:\Users\gaetano\AppData\Local\WhatsApp\WhatsApp.exe
Si questo intendevo, ma non esiste e la tua macro va in errore.
Con excel pure a me funziona sempre con whatsapp web, faccio una prova per vedere se riesco ad inviarlo tramite nome contatto.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: SendKeys

Messaggio da Gaetanopr »

L'ho testata con invio multiplo(due contatti) funziona sia con i numeri che con i nomi
Allego pure file

Codice: Seleziona tutto

Sub InvioWhatsApp				

doc = ThisComponent
Sh = doc.Sheets(0)


testo = sh.GetCellByPosition(1,1).String
Stringa = "https://web.whatsapp.com/" 
Dim shell As Object 
Set shell = CreateObject("shell.application") 
Set shell2 = CreateObject("WScript.Shell")

shell.Open Stringa 
   Wait 10000' 
   For x = 2 To 3 
       contatti = sh.GetCellByPosition(0, x).String
       shell2.SendKeys("{TAB}{TAB}{TAB}{TAB}", True) 
       Wait 10000' 
       shell2.SendKeys(contatti, True)
       shell2.SendKeys("~", True)		
       wait 10000
       shell2.SendKeys(testo, True)
      
       wait 3000
      
       shell2.SendKeys("~", True)
       shell2.SendKeys("{TAB}", True)    'Posiziona il cursore nel campo cerca per il prossimo contatto, se non si usa l'invio multiplo con il ciclo for può 
                                                        'essere tolto
  next x
End Sub
Naturalmente i tempi possono essere accorciati dipende dalle caratteristiche del proprio pc, il primo wait consiglio di lasciarlo a 10000 per dare tempo al pc di aprire whatsapp e posizionare il cursore sul campo cerca.
Purtroppo non riesco a provarla su WhatsApp pc in quanto la macro mi restituisce errore sul percorso.
Allegati
whatsapp.ods
(13.09 KiB) Scaricato 114 volte
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: SendKeys

Messaggio da patel »

Funziona perfettamente anche con l'applicazione
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: [Risolto] SendKeys

Messaggio da Gaetanopr »

:super: Aggiungerei WhatsApp al titolo, può sempre tornare utile a qualcuno.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
geovign
Messaggi: 219
Iscritto il: domenica 13 gennaio 2019, 11:19
Località: Modena

Re: [Risolto] SendKeys-invio messaggi Whatsapp

Messaggio da geovign »

Un saluto a tutti.
Scusate se mi accodo ad un problema già risolto, ma vorrei sapere se lo stesso risultato è possibile ottenerlo anche in ambiente GNU/Linux.
Ho provato su LO il codice scritto da @patel e @Gaetanopr ma non funziona.
All'istruzione " Set shell = CreateObject("shell.application") " mi restituisce il seguente errore:
"Errore nel creare l'oggetto. Formato non valido: impossibile caricare il modulo."
Esiste una possibile soluzione?
Saluti
Geo
LibO v.24 su Manjaro
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: [Risolto] SendKeys-invio messaggi Whatsapp

Messaggio da patel »

-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: [Risolto] SendKeys-invio messaggi Whatsapp

Messaggio da Gaetanopr »

Per puro divertimento ho voluto implementare la macro per inviare pure gli allegati, allego file aggiornato dove nella cella C2 basta indicare il nome del file da allegare(che deve trovarsi nella cartella che si apre di default quando si seleziona allega documento), nella macro ho impostato diversi tempi di attesa per visualizzare tutte le operazioni che vengono compiute.
Allegati
whatsapp2.ods
(14.88 KiB) Scaricato 140 volte
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: [Risolto] SendKeys-invio messaggi Whatsapp

Messaggio da patel »

Funziona perfettamente, ma non esiste il modo di indicare la cartella? mi si apre Desktop che io non uso mai.
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: [Risolto] SendKeys-invio messaggi Whatsapp

Messaggio da Gaetanopr »

patel ha scritto: mercoledì 30 novembre 2022, 9:49 Funziona perfettamente, ma non esiste il modo di indicare la cartella? mi si apre Desktop che io non uso mai.
Certo, ti basta inserire il nome del file completo di percorso C:\Users\Gaetano\Downloads\doc.pdf
Comunque il percorso rimane in memoria, nel senso che se manualmente indichi il percorso della cartella dei tuoi file successivamente viene usata questa, ma è sempre meglio indicare il percorso completo.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: [Risolto] SendKeys-invio messaggi Whatsapp

Messaggio da patel »

Sei riuscito poi ad utilizzare l'applicazione ?
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: [Risolto] SendKeys-invio messaggi Whatsapp

Messaggio da Gaetanopr »

Non ho più provato, in pratica sul percorso che dovrebbe avere non la trovo e andando sul collegamento facendo Proprietà > Percorso è presente una serie di caratteri indecifrabili, l'ho subito disinstallata . Nel fine settimana penso di dedicarci un pò di più tempo.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
nickGiard
Messaggi: 82
Iscritto il: lunedì 14 maggio 2012, 22:04

Re: [Risolto] SendKeys-invio messaggi Whatsapp

Messaggio da nickGiard »

Ciao geovign
la tua domanda "ma vorrei sapere se lo stesso risultato è possibile ottenerlo anche in ambiente GNU/Linux" attiva una considerazione che spesso viene ignorata. LibreOffice è stato progettato per essere ambiente multipiattaforma, ed i comandi e funzioni Basic e le API sono progettate per lavorare indipendentemente dalla piattaforma, e risulterebbe esistente in Basic una routine SendKeys Deprecata che genera un errore.
La funzione CreateObject, comune in molti linguaggi, viene definita da Pitonyak come : "CreateObject(obj_type) Able to create any standard type, more flexible than CreateUnoStruct and CreateUnoService" e quindi dovrebbe essere usata con i nomi dei Service presenti nelle API.
La funzione usata nella soluzione proposta Set shell2 = CreateObject("WScript.Shell") riesce a creare (con mia meraviglia!!) un oggetto COM di una dll wshom.ocx specifica dell'ambiente Windows, e precisamente in linguaggio di Windows Script Host che gestisce per l'appunto tale ambiente, ed usata nei file vbs (visual basic script) che tra l'altro molti antivirus bloccano per la potenziale possibilità di essere un virus.
Penso che una strada da studiare sia in ambiente python dove esiste un modulo selenium (Selenium è una libreria Python utilizzata per l’automazione del browser web) con una funzione send_keys, ma mi sembra piuttosto complesso. Nel caso fosse trovata una soluzione, tale funzione potrebbe essere lanciata dal Basic.
Ultime notizie: ho letto che WScript e Visual Basic Script verranno in futuro tolti da Windows a causa dei molti virus che lo utilizzano !!!
Nicola con LibreOffice 7.1 (x64) su Windows 11
geovign
Messaggi: 219
Iscritto il: domenica 13 gennaio 2019, 11:19
Località: Modena

Re: [Risolto] SendKeys-invio messaggi Whatsapp

Messaggio da geovign »

Ok.
Saluti
Geo
LibO v.24 su Manjaro
Rispondi