ID Artikel: 274326 - Kajian Terakhir: 22 September 2011 - Revisi: 1.0

Bagaimana menambahkan kode HTML ke clipboard dengan menggunakan Visual Basic

Tips SistemThis article applies to a different operating system than the one you are using. Article content that may not be relevant to you is disabled.

Pada Halaman ini

Perbesar semua | Perkecil semua

RINGKASAN

Artikel ini menunjukkan bagaimana untuk menambahkan dan mengambil HTML data pada Microsoft Windows clipboard dengan menggunakan Visual Basic.

INFORMASI LEBIH LANJUT

Pengembang dapat menggunakan format clipboard CF_HTML (HTML Format) untuk berbagi HTML data dengan aplikasi lain yang memahami HTML, seperti sebagai Microsoft Office dan Microsoft Internet Explorer.

CF_HTML adalah sepenuhnya berbasis teks format yang menyertakan deskripsi, konteks, dan fragmen dalam konteks. Ketika Anda sedang membangun data untuk mengirim ke clipboard, Anda harus menyertakan deskripsi data untuk menunjukkan clipboard Versi dan offset untuk konteks dan fragmen. Anda dapat menggunakan PutHTMLClipboard prosedur yang dijelaskan pada artikel ini untuk menyederhanakan tugas ini.

Langkah-langkah untuk membuat contoh proyek

  1. Memulai sebuah proyek EXE standar baru dalam Visual Basic. Form1 adalah dibuat secara default.
  2. Menambahkan dua CommandButton kontrol untuk Form1. Perubahan Keterangan properti Command1 untuk Menempatkan HTML, dan mengubah Keterangan properti Command2 untuk Mendapatkan HTML.
  3. Pada Project menu, pilih Menambahkan modul untuk menambahkan modul BAS standar untuk proyek.
  4. Tambahkan kode berikut ke jendela modul:
    
    Option Explicit
    
    Private Declare Function CloseClipboard Lib "user32" () As Long
    Private Declare Function OpenClipboard Lib "user32" (ByVal hWnd As Long) _
       As Long
    Private Declare Function GlobalAlloc Lib "kernel32" ( _
    
       ByVal wFlags As Long, ByVal dwBytes As Long) As Long
    Private Declare Function SetClipboardData Lib "user32" ( _
       ByVal wFormat As Long, ByVal hMem As Long) As Long
    Private Declare Function EmptyClipboard Lib "user32" () As Long
    Private Declare Function RegisterClipboardFormat Lib "user32" Alias _
       "RegisterClipboardFormatA" (ByVal lpString As String) As Long
    Private Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) _
       As Long
    Private Declare Function GlobalUnlock Lib "kernel32" ( _
       ByVal hMem As Long) As Long
    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ( _
       pDest As Any, pSource As Any, ByVal cbLength As Long)
    Private Declare Function GetClipboardData Lib "user32" ( _
       ByVal wFormat As Long) As Long
    Private Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" ( _
       ByVal lpData As Long) As Long
    
    Private Const m_sDescription = _
                      "Version:1.0" & vbCrLf & _
                      "StartHTML:aaaaaaaaaa" & vbCrLf & _
                      "EndHTML:bbbbbbbbbb" & vbCrLf & _
                      "StartFragment:cccccccccc" & vbCrLf & _
                      "EndFragment:dddddddddd" & vbCrLf
                      
    Private m_cfHTMLClipFormat As Long
    
    Function RegisterCF() As Long
    
    
       'Register the HTML clipboard format
       If (m_cfHTMLClipFormat = 0) Then
          m_cfHTMLClipFormat = RegisterClipboardFormat("HTML Format")
       End If
       RegisterCF = m_cfHTMLClipFormat
       
    End Function
    
    Public Sub PutHTMLClipboard(sHtmlFragment As String, _
       Optional sContextStart As String = "<HTML><BODY>", _
       Optional sContextEnd As String = "</BODY></HTML>")
       
       Dim sData As String
       
       If RegisterCF = 0 Then Exit Sub
       
       'Add the starting and ending tags for the HTML fragment
       sContextStart = sContextStart & "<!--StartFragment -->"
       sContextEnd = "<!--EndFragment -->" & sContextEnd
       
       'Build the HTML given the description, the fragment and the context.
       'And, replace the offset place holders in the description with values
       'for the offsets of StartHMTL, EndHTML, StartFragment and EndFragment.
       sData = m_sDescription & sContextStart & sHtmlFragment & sContextEnd
       sData = Replace(sData, "aaaaaaaaaa", _
                       Format(Len(m_sDescription), "0000000000"))
       sData = Replace(sData, "bbbbbbbbbb", Format(Len(sData), "0000000000"))
       sData = Replace(sData, "cccccccccc", Format(Len(m_sDescription & _
                       sContextStart), "0000000000"))
       sData = Replace(sData, "dddddddddd", Format(Len(m_sDescription & _
                       sContextStart & sHtmlFragment), "0000000000"))
    
       'Add the HTML code to the clipboard
       If CBool(OpenClipboard(0)) Then
       
          Dim hMemHandle As Long, lpData As Long
          
          hMemHandle = GlobalAlloc(0, Len(sData) + 10)
          
          If CBool(hMemHandle) Then
                   
             lpData = GlobalLock(hMemHandle)
             If lpData <> 0 Then
                
                CopyMemory ByVal lpData, ByVal sData, Len(sData)
                GlobalUnlock hMemHandle
                EmptyClipboard
                SetClipboardData m_cfHTMLClipFormat, hMemHandle
                            
             End If
          
          End If
       
          Call CloseClipboard
       End If
    
    End Sub
    
    Public Function GetHTMLClipboard() As String
    
       Dim sData As String
       
       If RegisterCF = 0 Then Exit Function
       
       If CBool(OpenClipboard(0)) Then
       
          Dim hMemHandle As Long, lpData As Long
          Dim nClipSize As Long
          
          GlobalUnlock hMemHandle
    
          'Retrieve the data from the clipboard
          hMemHandle = GetClipboardData(m_cfHTMLClipFormat)
          
          If CBool(hMemHandle) Then
                   
             lpData = GlobalLock(hMemHandle)
             If lpData <> 0 Then
                nClipSize = lstrlen(lpData)
                sData = String(nClipSize + 10, 0)
                
    
                Call CopyMemory(ByVal sData, ByVal lpData, nClipSize)
                
                Dim nStartFrag As Long, nEndFrag As Long
                Dim nIndx As Long
                
                'If StartFragment appears in the data's description,
                'then retrieve the offset specified in the description
                'for the start of the fragment. Likewise, if EndFragment
                'appears in the description, then retrieve the
                'corresponding offset.
                nIndx = InStr(sData, "StartFragment:")
                If nIndx Then
                   nStartFrag = CLng(Mid(sData, _
                                     nIndx + Len("StartFragment:"), 10))
    
                End If
                nIndx = InStr(sData, "EndFragment:")
                If nIndx Then
                   nEndFrag = CLng(Mid(sData, nIndx + Len("EndFragment:"), 10))
                End If
                
                'Return the fragment given the starting and ending
                'offsets
                If (nStartFrag > 0 And nEndFrag > 0) Then
                   GetHTMLClipboard = Mid(sData, nStartFrag + 1, _
                                     (nEndFrag - nStartFrag))
                End If
                            
             End If
          
          End If
    
       
          Call CloseClipboard
       End If
    
    
    End Function
    					
  5. Tambahkan kode berikut dalam jendela kode untuk Form1:
    Private Sub Command1_Click()
        Dim sFrag As String, sStart As String, sEnd As String
        sStart = "<HTML><BODY><FONT FACE=Arial SIZE=1 COLOR=BLUE>"
        sFrag = "<B>This is bold</B> and <I>this is italic.</I>"
        sEnd = "</FONT></BODY></HTML>"
        PutHTMLClipboard sFrag, sStart, sEnd
    End Sub
    
    Private Sub Command2_Click()
        MsgBox GetHTMLClipboard
    End Sub
    					
  6. Tekan tombol F5 untuk memulai program Visual Basic. Klik Menempatkan HTML untuk menambahkan HTML data ke clipboard. Kemudian, klik Mendapatkan HTML untuk mengambil clipboard data. Catatan yang menampilkan kotak pesan fragmen HTML.
  7. Mulai Microsoft Word (atau aplikasi yang mengakui HTML Format untuk clipboard). Menyisipkan konten clipboard ke baru dokumen untuk memeriksa hasil kode HTML yang terdapat pada Clipboard.

Catatan tambahan

Menggunakan pendekatan yang mengirim kode HTML ke clipboard mungkin sangat bermanfaat untuk otomatisasi Office klien. Sebagai contoh, jika Anda memiliki klien otomasi yang perlu menghasilkan data diformat untuk sel dalam Microsoft Excel atau paragraf di Microsoft Word, Anda bisa membangun data Kode HTML, mengirimkannya ke clipboard, dan kemudian menyisipkannya ke dalam aplikasi. Oleh menggunakan teknik ini, Anda dapat mengurangi jumlah panggilan keluar dari proses untuk klien otomasi.

REFERENSI

Untuk mempelajari lebih lanjut tentang Spesifikasi HTML clipboard format, lihat topik "HTML Clipboard Format" di Pengembang Microsoft berikut Situs Web Network (MSDN):
http://msdn2.Microsoft.com/en-us/library/Aa767917.aspx (http://msdn2.microsoft.com/en-us/library/Aa767917.aspx)
Note This is a "FAST PUBLISH" article created directly from within the Microsoft support organization. The information contained herein is provided as-is in response to emerging issues. As a result of the speed in making it available, the materials may include typographical errors and may be revised at any time without notice. See Terms of Use (http://go.microsoft.com/fwlink/?LinkId=151500) for other considerations.

Berlaku bagi:
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Office Basic 2007
  • Microsoft Office Enterprise 2007
  • Microsoft Office Home and Student 2007
  • Microsoft Office Professional 2007
  • Microsoft Office Professional Plus 2007
  • Microsoft Office Small Business 2007
  • Microsoft Office Standard 2007
  • Microsoft Office Ultimate 2007
  • Microsoft Office Professional Edition 2003
  • Microsoft Office Basic Edition 2003
  • Microsoft Office Small Business Edition 2003
  • Microsoft Office XP Developer Edition
  • Microsoft Office 2000 Developer Edition
Kata kunci: 
kbexpertiseinter kbclipboard kbhowto kbhtml kbmt KB274326 KbMtid
Penerjemahan MesinPenerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:274326  (http://support.microsoft.com/kb/274326/en-us/ )