- [SQLSERVER] Loại bỏ Restricted User trên database MSSQL
- [C#] Hướng dẫn tạo mã QRcode Style trên winform
- [C#] Hướng dẫn sử dụng temp mail service api trên winform
- [C#] Hướng dẫn tạo mã thanh toán VietQR Pay không sử dụng API trên winform
- [C#] Hướng Dẫn Tạo Windows Service Đơn Giản Bằng Topshelf
- [C#] Chia sẻ source code đọc dữ liệu từ Google Sheet trên winform
- [C#] Chia sẻ source code tạo mã QR MOMO đa năng Winform
- [C#] Chia sẻ source code phần mềm lên lịch tự động chạy ứng dụng Scheduler Task Winform
- [Phần mềm] Tải và cài đặt phần mềm Sublime Text 4180 full version
- [C#] Hướng dẫn download file từ Minio Server Winform
- [C#] Hướng dẫn đăng nhập zalo login sử dụng API v4 trên winform
- [SOFTWARE] Phần mềm gởi tin nhắn Zalo Marketing Pro giá rẻ mềm nhất thị trường
- [C#] Việt hóa Text Button trên MessageBox Dialog Winform
- [DEVEXPRESS] Chia sẻ code các tạo report in nhiều hóa đơn trên XtraReport C#
- [POWER AUTOMATE] Hướng dẫn gởi tin nhắn zalo từ file Excel - No code
- [C#] Chia sẻ code lock và unlock user trong domain Window
- [DEVEXPRESS] Vẽ Biểu Đồ Stock Chứng Khoán - Công Cụ Thiết Yếu Cho Nhà Đầu Tư trên Winform
- [C#] Hướng dẫn bảo mật ứng dụng 2FA (Multi-factor Authentication) trên Winform
- [C#] Hướng dẫn convert HTML code sang PDF File trên NetCore 7 Winform
- [C#] Hướng dẫn viết ứng dụng chat với Gemini AI Google Winform
[VB.NET] Gởi tin nhắn và file đính kèm qua ứng dụng gởi tin nhắn Whats App
Xin chào các bạn, bài viết hôm nay mình chia sẻ các bạn source code cách gởi tin nhắn và tập tin đính kèm WhatsApp sử dụng Selemium Winform.
[VB.NET] Send message with File Attachment via WhatsApp Winform
Ứng dụng di động WhatApp đã trở thành một trong những ứng dụng truyền thông hàng đầu trên thế giới, mang lại trải nghiệm kết nối linh hoạt và thuận lợi cho người dùng toàn cầu.
WhatApp không chỉ là một ứng dụng nhắn tin thông thường, mà còn cung cấp nhiều tính năng đa dạng, từ gọi điện thoại, video call, đến chia sẻ hình ảnh và video.
Các bạn, có thể dùng source code này để gởi marketing đến khách hàng, nhớ set delay nhé bạn.
Dưới đây, là giao diện demo ứng dụng:
Ứng dụng gởi tin nhắn bằng chạy sử dụng Selemium và dùng Javascript để thực thi những đoạn lệnh gởi tin nhắn.
Full source code VB.NET
Imports System.IO
Imports System.Net.Mime
Imports System.Threading
Imports OpenQA.Selenium
Imports OpenQA.Selenium.Chrome
Imports OpenQA.Selenium.Interactions
Imports OpenQA.Selenium.Chromium
Public Class FrmMain
Dim driver As IWebDriver
Dim driverPath As String = "chromedriver.exe"
Private Sub FrmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' Timer1.Start()
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim chromeDriverService As ChromeDriverService = ChromeDriverService.CreateDefaultService()
chromeDriverService.HideCommandPromptWindow = True
Dim chromeOptions As New ChromeOptions()
chromeOptions.AddArgument("--disable-features=PermissionsPolicy")
chromeOptions.AddArgument("--start-maximized")
chromeOptions.AddArgument("--disable-notifications")
chromeOptions.AddArgument("--disable-infobars")
chromeOptions.AddArgument("--disable-extensions")
'chromeOptions.AddArgument("--headless")
Dim userProfilePath As String = "profile"
'chromeOptions.AddExcludedArgument("enable-automation")
'chromeOptions.AddAdditionalCapability("useAutomationExtension", False)
'chromeOptions.AddArgument("user-data-dir=" & userProfilePath)
driver = New ChromeDriver(chromeDriverService, chromeOptions)
driver.Navigate().GoToUrl("https://web.whatsapp.com/")
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
InjectWapi(driver)
Dim phoneNumber = TextBox1.Text.Trim().Replace("+", "").Replace(" ", "")
SendMessage(driver, phoneNumber, TextBox2.Text)
If TextBox3.Text <> "" Then
Dim pathFile = TextBox3.Text
Dim bytes As Byte() = File.ReadAllBytes(pathFile)
Dim filebase64 As String = Convert.ToBase64String(bytes)
Dim fullBase64 As String = "data:application/pdf;base64," & filebase64
SendAttachment(driver, phoneNumber, fullBase64, Path.GetFileName(pathFile), TextBox2.Text)
End If
End Sub
Public Shared Sub SendAttachment(driver As IWebDriver, number As String, ImageBase64 As String, FileName As String, caption As String)
Dim text As String = ""
Dim text2 As String = ""
If text <> "" Then
text2 = $",useTemplateButtons: false,buttons:[{text}]"
End If
Dim javaScriptExecutor As IJavaScriptExecutor = DirectCast(driver, IJavaScriptExecutor)
Dim script As String = $"await WAPI.sendImage('{ImageBase64}','{number}@c.us','{FileName}',`{caption}`,'{text2}')"
Try
javaScriptExecutor.ExecuteScript(script, New Object() {})
Catch generatedExceptionName As Exception
End Try
End Sub
Public Shared Sub InjectWapi(driver As IWebDriver)
Try
Dim wapi = File.ReadAllText("chatTemplate.csv")
Dim javaScriptExecutor As IJavaScriptExecutor = DirectCast(driver, IJavaScriptExecutor)
javaScriptExecutor.ExecuteScript(wapi, New Object() {})
Thread.Sleep(500)
Catch generatedExceptionName As Exception
Dim err = generatedExceptionName.Message
End Try
End Sub
Public Shared Sub SendMessage(driver As IWebDriver, number As String, message As String, Optional isGroup As Boolean = False)
Dim text As String
If isGroup Then
text = number
Else
text = number & "@c.us"
End If
Dim javaScriptExecutor As IJavaScriptExecutor = DirectCast(driver, IJavaScriptExecutor)
Dim script As String = $"await WAPI.sendMessageToID('{text}',`{message}`,true)"
javaScriptExecutor.ExecuteScript(script, New Object() {})
End Sub
Private Sub FrmMain_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
KillAllChromeDrivers()
driver.Quit()
driver.Dispose()
End Sub
Private Sub KillAllChromeDrivers()
Try
Dim chromeDriverProcesses() As Process = Process.GetProcessesByName("chromedriver")
For Each chromeDriverProcess As Process In chromeDriverProcesses
chromeDriverProcess.Kill()
Next
Catch ex As Exception
End Try
End Sub
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
Dim openFileDialog As New OpenFileDialog()
openFileDialog.Title = "Select a File"
openFileDialog.Filter = "All Files|*.*|Text Files|*.txt|Image Files|*.png;*.jpg|Excel Files|*.xls;*.xlsx"
openFileDialog.Multiselect = False
If openFileDialog.ShowDialog() = DialogResult.OK Then
Dim selectedFilePath As String = openFileDialog.FileName
TextBox3.Text = selectedFilePath
End If
End Sub
Public Shared Function IsElementPresent(by As By, driver As IWebDriver) As Boolean
If driver Is Nothing Then
Return False
End If
Try
driver.FindElement(by)
Return True
Catch ex As NoSuchElementException
Return False
End Try
End Function
Public PageLoadOK As Boolean = False
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
Dim isElementDisplayed As Boolean = IsElementPresent(By.ClassName("_1XkO3"), driver)
If isElementDisplayed Then
PageLoadOK = True
Button2.Enabled = True
Activate()
End If
End Sub
End Class
Thanks for watching!