ชุมชนคนรักภาษาเบสิค - Visual Basic Community

 ลืมรหัสผ่าน
 ลงทะเบียน
ค้นหา
ดู: 8047|ตอบกลับ: 5

[VB6] การทำ Line Notify และอัพโหลดรูปภาพจากตัวโปรแกรม ด้วยการใช้คำสั่ง cURL

[คัดลอกลิงก์]

320

กระทู้

512

โพสต์

6583

เครดิต

ผู้ดูแลระบบ

ทองก้อน ทับทิมกรอบ

Rank: 9Rank: 9Rank: 9

เครดิต
6583




จากบทความ [VB.NET] การทำ Line Notify และอัพโหลดรูปภาพจากตัวโปรแกรม ด้วยการใช้คำสั่ง cURL จากการใช้งานคำสั่งแบบ Command Line ด้วย cURL ทำให้แอดมินได้ค้นพบความรู้ใหม่ในการใช้ Windows Application จาก Visual Basic เพื่อประสานการทำงานร่วมกันกับบรรดา API ที่ใช้งานอยู่บนไดนามิคเว็บเพจ แต่สำหรับ VB6 มันไม่มีคำสั่งสำเร็จรูป หรือ Build In มาให้เหมือนกับ VB.NET ดังนั้นเราจึงต้องเรียกใช้ความสามารถพิเศษเพิ่มเติมจากในตัว Windows หรือที่เรียกว่า WinAPI32 มาใช้งานกับโปรเจคนี้ โดยการสร้างโปรแกรมย่อย ShellAndWait คือการเรียก Shell เพื่อแยกการประมวลผลออกมา แล้วรอคอยจนกว่ามันจะทำงานเสร็จสมบูรณ์เรียบร้อย ...

ดาวน์โหลด cURL สำหรับ Windows ทั้ง 32 บิตและ 64 บิต ... เมื่อดาวน์โหลดเรียบร้อยให้แตกไฟล์ออกมา แล้วไปที่โฟลเดอร์ Bin จะมีอยู่ 3 ไฟล์ และต้องนำไฟล์ทั้ง 3 ตัวของ cURL ไปเก็บไว้ในโฟลเดอร์ที่เราสั่งรันโปรแกรม หรือตำแหน่งที่เรากำหนดเองก็ได้

รูปแบบของการ POST ไปยัง Line ...
  1.         '// Format
  2.         '// " -X POST -H "Authorization: Bearer TOKEN" -F "message=Send Picture" -F "imageFile=@D:\Sample.jpg" https://notify-api.line.me/api/notify"
คัดลอกไปที่คลิปบอร์ด


มาดูโค้ดฉบับเต็มกันเถอะ ...
  1. ' / --------------------------------------------------------------------------------
  2. ' / Developer : Mr.Surapon Yodsanga (Thongkorn Tubtimkrob)
  3. ' / eMail : thongkorn@hotmail.com
  4. ' / URL: http://www.g2gnet.com (Khon Kaen - Thailand)
  5. ' / Facebook: https://www.facebook.com/g2gnet (For Thailand)
  6. ' / Facebook: https://www.facebook.com/commonindy (Worldwide)
  7. ' / Purpose: Line Notify and Upload image with Visual Basic 6.
  8. ' / Microsoft Visual Basic 6.0 (SP6)
  9. ' /
  10. ' / This is open source code under @CopyLeft by Thongkorn Tubtimkrob.
  11. ' / You can modify and/or distribute without to inform the developer.
  12. ' / --------------------------------------------------------------------------------
  13. Option Explicit

  14. Private Declare Function OpenProcess Lib "kernel32" ( _
  15.     ByVal dwDesiredAccess As Long, _
  16.     ByVal bInheritHandle As Long, _
  17.     ByVal dwProcessId As Long _
  18.     ) As Long
  19. Private Declare Function WaitForSingleObject Lib "kernel32" ( _
  20.     ByVal hHandle As Long, _
  21.     ByVal dwMilliseconds As Long _
  22.     ) As Long
  23. Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
  24. Const WAIT_TIMEOUT = &H102
  25. Const SYNCHRONIZE As Long = &H100000
  26. Const INFINITE As Long = &HFFFFFFFF

  27. Dim FullPathFileName As String
  28. '// Line Notify Access Token
  29. Const strToken As String = "YOUR TOKEN"

  30. Private Sub Form_Load()
  31.     txtMessage.Text = "ทดสอบการส่งข้อความผ่าน Line Notify จากคุณทองก้อน นารีแขยง"
  32.     Image1.Picture = LoadPicture(App.Path & "\Images\NoImage.gif")
  33.     FullPathFileName = ""
  34. End Sub

  35. Private Sub cmdSend_Click()
  36.     If Trim$(txtMessage.Text) = "" Or Len(Trim$(txtMessage.Text)) = 0 Then Exit Sub
  37.     Call SendMessage
  38.     If FullPathFileName <> "" Or Len(FullPathFileName) <> 0 Then Call SendPicture
  39. End Sub

  40. Sub SendMessage()
  41.     On Error GoTo ErrHandler
  42.    
  43.     Dim oXML As Object
  44.    
  45.     Dim strMessage As String
  46.     Dim strDate As String
  47.     Dim URL As String

  48.     '// Line Notify
  49.     URL = "https://notify-api.line.me/api/notify"
  50.     strMessage = Trim(txtMessage.Text)
  51.     strDate = Format(Now, "dd/MM/yyyy - hh:mm:ss")
  52.     '//Line Message
  53.     strMessage = "message=" & strMessage & vbCrLf & "Date-Time: " & strDate
  54.     'strMessage = strMessage & "&stickerPackageId=1" & "&stickerId=109"
  55.     '//
  56.     Set oXML = CreateObject("Microsoft.XMLHTTP")
  57.     With oXML
  58.         '// Line POST Method
  59.         .Open "POST", URL, 0
  60.         '// Header
  61.         .SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
  62.         .SetRequestHeader "Authorization", "Bearer " & strToken
  63.         '// Send message
  64.         .send (strMessage)
  65.         '// Debug Line
  66.         Debug.Print oXML.responseText
  67.     End With
  68.    
  69.     Set oXML = Nothing
  70.     Exit Sub
  71.    
  72. ErrHandler:
  73.     '// Error
  74.     MsgBox Err.Number & vbCrLf & Err.Description
  75. End Sub

  76. Sub SendPicture()
  77.     '// Format
  78.     '// " -X POST -H "Authorization: Bearer TOKEN" -F "message=Send Picture" -F "imageFile=@D:\Sample.jpg" https://notify-api.line.me/api/notify"
  79.     Dim arg As String
  80.     arg = arg & " -X POST -H "
  81.     arg = arg & """Authorization: Bearer " & strToken & """"
  82.     arg = arg & " -F ""message=" & "Send Picture" & """"
  83.     arg = arg & " -F ""imageFile=@" & FullPathFileName & """ https://notify-api.line.me/api/notify"
  84.     Call ShellAndWait(App.Path & "\Curl.exe", arg)
  85.     '// Clear Image
  86.     Image1.Picture = LoadPicture(App.Path & "\Images\NoImage.gif")
  87.     FullPathFileName = ""
  88. End Sub

  89. '// Process command line.
  90. Public Sub ShellAndWait(PathName, args As String, Optional WindowStyle As VbAppWinStyle = vbMinimizedFocus, Optional b As Boolean = False)
  91.    
  92.     On Error GoTo ErrHandler
  93.    
  94.     Dim dwProcessId As Long
  95.     Dim hProcess As Long
  96.     '// Process Shell
  97.     dwProcessId = Shell(PathName & Space$(1) & args, WindowStyle)
  98.    
  99.     If dwProcessId = 0 Then Exit Sub
  100.    
  101.     hProcess = OpenProcess(SYNCHRONIZE, False, dwProcessId)
  102.    
  103.     If hProcess = 0 Then Exit Sub
  104.    
  105.     If b Then
  106.         Do While WaitForSingleObject(hProcess, 100) = WAIT_TIMEOUT
  107.              DoEvents
  108.         Loop
  109.     Else
  110.         WaitForSingleObject hProcess, INFINITE
  111.     End If
  112.    
  113.     CloseHandle hProcess
  114.    
  115. ExitProc:
  116.     Exit Sub
  117.    
  118. ErrHandler:
  119.     Resume ExitProc
  120. End Sub

  121. Private Sub cmdBrowseImage_Click()
  122.     On Error Resume Next
  123.     With dlgOpenFile
  124.         .FileName = ""
  125.         .InitDir = App.Path & "\Images"
  126.         .DialogTitle = " เลือกไฟล์ภาพ - Graphics File Format "
  127.         .Filter = "ไฟล์ภาพ (*.jpg;*.gif;*.bmp)|*.jpg;*.gif;*.bmp"
  128.         .CancelError = True
  129.         .ShowOpen
  130.     End With
  131.    
  132.     FullPathFileName = dlgOpenFile.FileName
  133.    
  134.     If Trim(FullPathFileName) = "" Or Len(FullPathFileName) = 0 Then Exit Sub
  135.    
  136.     Image1.Picture = LoadPicture(FullPathFileName)
  137. End Sub

  138. Private Sub cmdDelImage_Click()
  139.     FullPathFileName = ""
  140.     Image1.Picture = LoadPicture(App.Path & "\Images\NoImage.gif")
  141. End Sub

  142. Private Sub cmdExit_Click()
  143.     Unload Me
  144. End Sub

  145. Private Sub Form_Unload(Cancel As Integer)
  146.     Set frmLineNotify = Nothing
  147.     End
  148. End Sub
คัดลอกไปที่คลิปบอร์ด


ดาวน์โหลดโค้ดต้นฉบับ VB6 (SP6) ได้ที่นี่ ...

ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง

คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน

x
สิ่งที่ดีกว่าการให้ คือการให้แบบไม่มีที่สิ้นสุด

0

กระทู้

1

โพสต์

14

เครดิต

Newbie

Rank: 1

เครดิต
14
โพสต์ 2020-2-25 08:47:55 | ดูโพสต์ทั้งหมด

เรียนคุณสุรพล...
                  ผม ทดสอบการ ส่ง Text ไป Line Nctify...โดยใช้ cURL..
                  ผล... Line NotiFy แสดงผล เป็นตัวอักษรต่างดาวครับ....
                  ผลควรปรับแก้ไขอย่างไรครับ... (ต้องการใช้ cURL ครับ)
                  ขอบคุณมากครับ...
------------------------------------------

ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง

คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน

x

320

กระทู้

512

โพสต์

6583

เครดิต

ผู้ดูแลระบบ

ทองก้อน ทับทิมกรอบ

Rank: 9Rank: 9Rank: 9

เครดิต
6583
 เจ้าของ| โพสต์ 2020-2-25 12:11:29 | ดูโพสต์ทั้งหมด

pycshop8007 ตอบกลับเมื่อ 2020-2-25 08:47
เรียนคุณสุรพล...
                  ผม ทดสอบการ ส่ง Text ไป Line Nctify.. ...

ผมทดสอบแล้ว ภาษาไทยก็ปกติดีครับ ลองปรับจาก Control Panel-->Region/Language ปรับภาษาทุกแท็บเป็น Thai/Thailand ให้หมดดูครับ และลองเช็คแท็บ Adminstrative --> Change system locale ต้องเป็น Thai (Thailand) และติ๊กเครื่องหมายถูกหน้า Beta: Use Unicode UTF-8 ออกไป (คือไม่เลือก) ตัวนี้มักมีปัญหาบน Windows 10 บางเวอร์ชั่นครับ
สิ่งที่ดีกว่าการให้ คือการให้แบบไม่มีที่สิ้นสุด

1

กระทู้

4

โพสต์

81

เครดิต

Member

Rank: 2

เครดิต
81
โพสต์ 2021-1-29 15:15:00 | ดูโพสต์ทั้งหมด

ขอบคุณมากครับ

0

กระทู้

1

โพสต์

16

เครดิต

Newbie

Rank: 1

เครดิต
16
โพสต์ 2021-5-6 00:38:42 | ดูโพสต์ทั้งหมด

อาจารย์ครับ ในกรณีที่ ตัวโปรแกรมส่งแต่ข้อความ ไม่ยอิมส่งรูปที่ Select ให้ เกิดจากอะไรครับ มัน ส่ง เป็น Emoticon แทน (VB2019)

320

กระทู้

512

โพสต์

6583

เครดิต

ผู้ดูแลระบบ

ทองก้อน ทับทิมกรอบ

Rank: 9Rank: 9Rank: 9

เครดิต
6583
 เจ้าของ| โพสต์ 2021-5-6 10:51:36 | ดูโพสต์ทั้งหมด

konantuktuy ตอบกลับเมื่อ 2021-5-6 00:38
อาจารย์ครับ ในกรณีที่ ตัวโปรแกรมส่งแต่ข้อความ ไม่ยอ ...

ลองดู [VB.NET] การทำ Line Notify และอัพโหลดรูปภาพจากตัวโปรแกรม ด้วยการใช้คำสั่ง cURL ครับ
สิ่งที่ดีกว่าการให้ คือการให้แบบไม่มีที่สิ้นสุด
ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

รายละเอียดเครดิต

ข้อความล้วน|อุปกรณ์พกพา|ประวัติการแบน|G2GNet.com  

GMT+7, 2024-11-27 21:44 , Processed in 0.225171 second(s), 4 queries , File On.

Powered by Discuz! X3.4, Rev.62

Copyright © 2001-2020 Tencent Cloud.

ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้