宏福 發問時間: 電腦與網際網路程式設計 · 1 0 年前

VB 做類似剪貼簿功能。

要怎麼寫一個程式 就是 可以自動複製 TXT檔裡面的文字

就是 程是開啟以後

我想要 按Ctrl+V 就能夠貼上 TXT檔裡面的第一行

(是能夠貼在任意的地方 不是 只有From裡面)

在按第次Ctrl+V 貼上 TXT檔裡面的第二行

.

.

.

以此類推

我大概的想法是 程式會先複製第一行 當我按下 Ctrl+V

貼上後 她會去複製 第二行 這樣子

有類似剪貼簿的功能 只是次數非常大

我用的是VB6.0 有點底子而已

可以的話 提供我一些 我可能或是我能夠用到的 指令

或是 方法 可以的話 直接貼上來 部份程式 最好可以註解

超級感謝

3 個解答

評分
  • W.J.S.
    Lv 7
    1 0 年前
    最佳解答

    'VB6.0

    '--以下在模組--

    Type Eve

    M As Long

    L As Long

    H As Long

    End Type

    Const WM_KEYDOWN = &H100

    Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (D As Any, ByVal S&, ByVal C&)

    Declare Sub UnhookWindowsHookEx Lib "user32" (ByVal H&)

    Declare Function CallNextHookEx& Lib "user32" (ByVal K&, ByVal N&, ByVal W&, L As Any)

    Declare Function SetWindowsHookEx& Lib "user32" Alias "SetWindowsHookExA" (ByVal H&, ByVal L&, ByVal M&, ByVal D&)

    Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

    Public H&, V%, N%, D$(), b As Boolean

    Function HP&(ByVal C&, ByVal W&, ByVal L&)

    Dim M As Eve, I%

    If C = 0 And V > -1 Then

    CopyMemory M, L, LenB(M)

    If M.M = WM_KEYDOWN Then

    If GetAsyncKeyState(vbKeyControl) And GetAsyncKeyState(vbKeyV) Then

    N = (N + 1) Mod (V + 1)

    Clipboard.Clear

    Clipboard.SetText D(N)

    End If

    End If

    End If

    HP = CallNextHookEx(H, C, W, L)

    End Function

    '--以下在表單,表單須置1個Timer--

    Private Sub Form_Load()

    Text1_Change

    H = SetWindowsHookEx(0, AddressOf HP, App.hInstance, 0)

    End Sub

    Private Sub Form_Unload(Cancel As Integer)

    UnhookWindowsHookEx H

    End Sub

    Private Sub Text1_Change()

    On Error Resume Next

    V = -1: Erase D: N = -1

    Clipboard.Clear

    If Text1 <> "" Then

    D = Split(Text1, vbCrLf)

    V = UBound(D)

    End If

    End Sub

    2008-11-30 01:07:07 補充:

    表單不須放Timer(複製時忘記刪掉)XD

    2008-11-30 14:08:27 補充:

    若你剛學不久一來要註解很麻煩(補充有字數限制)二來你可能還沒學到API,你可先到http://sunh.hosp.ncku.edu.tw/~cww/html/vb.html看一下H...

    2008-11-30 22:47:33 補充:

    我把專案放在以下連結,有改了一下,你參考看看

    http://waroger.myweb.hinet.net/VB6/Ctrl+V.rar

    2008-12-01 01:28:13 補充:

    可能版本不同吧,我下沒問題,乾脆你把信箱給我好了

  • 1 0 年前

    恩 是這樣沒錯 我本來也是這樣想 只是不知道怎麼下手

    2008-11-30 21:15:03 補充:

    那你能不能跟我說一下 妳寫得這個程式要怎麼使用 我不知道我TXT黨按要放在哪 叫什麼名子 感謝WJS

    2008-12-01 00:14:55 補充:

    又發現問題 我下載以後是7K的壓縮檔 但是好像有損毀 沒辦法解壓縮

    麻煩請妳在上傳一次 謝謝

    再次謝謝妳

    2008-12-01 20:13:47 補充:

    我的信箱 dks60109@yahoo.com.tw

    備用 dks90636@yahoo.com.tw

    兩個都寄好了 以防萬一

    謝謝妳幫我忙 還是謝謝^^

  • 1 0 年前

    或許可以先將txt文字讀入記憶體中

    如果想要一行一行貼的話就一次讀一行然後放到剪貼的記憶體

還有問題?馬上發問,尋求解答。