關于PB如何獲得剪貼板中檔案的路徑
就是說我在XP下選擇了檔案點右鍵選單的復制,要在PB的視窗中能把我所復制的檔案路徑粘貼出來就可以了
uj5u.com熱心網友回復:
用虛擬鍵盤事件的ctrl+V吧uj5u.com熱心網友回復:
有效果嗎,我的意思能獲取到對應的檔案路徑的資訊處理!uj5u.com熱心網友回復:
該貼中有類似問題及方案http://topic.csdn.net/u/20090513/15/0d1f2277-7e57-4a87-939f-f3971a2c834e.html如果你要對windows explorer進行操作的話,那么你就要用到鉤子,鉤到當前活動的的表單,并捕獲滑鼠動作,你要建立一個監聽器,一旦監聽到滑鼠捕獲到某個檔案,并使檔案處在選中狀態的話,那么便檢查鍵盤輸入,若為指定組合鍵,則向遠程目標發送檔案復本。
目標機上如是,該監聽器時刻監聽鍵盤動作,一旦為指定組合鍵,則從遠程源去掃描快取,是否有內容,有則復制到本地。
ms-help://MS.MSDNQTR.v90.en/winui/winui/windowsuserinterface/windowing/hooks.htm
查MSDN如是鏈接。
謝謝李博, 你的建議很可行。
不過最終我用了一個簡單的偷懶的方法,就是模擬鍵盤輸入Ctrl+C,(SendKeys.Sendwait()or send()), 偷懶了一下, 也節省點時間。
然后再在剪貼板中間去取得所要的東西, 最后再上傳到server,,,,注冊了一個新的熱鍵來完成這一系列的操作。反之,Ctrl+V也一樣。基本可行。
馬上加分給你。再次感謝以上回復的所有人。
uj5u.com熱心網友回復:
還是不是我要的結果,打個比方,我們在QQ中,需要發送檔案給對方,只要在windows explorer對需要發送的檔案復制一下,然后在QQ聊天視窗里點右鍵的粘貼就可以直接發送檔案了uj5u.com熱心網友回復:
自己查剪貼板的api把uj5u.com熱心網友回復:
您可以參考以下方法:1. 在Form1上放一個CommandButton和一個ListBox控制元件。
2. 在Form1中貼入以下代碼。它會在ListBox中列出您在Windows Explorer中Copy的檔案名。
Option Explicit
Private Const CF_HDROP = 15
Private Type POINT
x As Long
y As Long
End Type
Private Type DROPFILES
pFiles As Long
pt As POINT
fNC As Long
fWide As Long
End Type
Private Declare Function GlobalSize Lib "kernel32" _
(ByVal hMem As Long) 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 Function OpenClipboard Lib "user32" _
(ByVal hwnd As Long) As Long
Private Declare Function CloseClipboard Lib "user32" () As Long
Private Declare Function GetClipboardData Lib "user32" _
(ByVal wFormat As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
(Destination As Any, Source As Any, ByVal Length As Long)
Private Sub ShowFilesOnClipboard()
Dim lHandle As Long
Dim lpResults As Long
Dim lRet As Long
Dim df As DROPFILES
Dim strDest As String
Dim lBufferSize As Long
Dim arBuffer() As Byte
Dim vNames As Variant
Dim i As Long
If OpenClipboard(0) Then
lHandle = GetClipboardData(CF_HDROP)
' If you don't find a CF_HDROP, you don't want to process anything
If lHandle > 0 Then
lpResults = GlobalLock(lHandle)
lBufferSize = GlobalSize(lpResults)
ReDim arBuffer(0 To lBufferSize)
CopyMemory df, ByVal lpResults, Len(df)
Call CopyMemory(arBuffer(0), ByVal lpResults + df.pFiles, _
(lBufferSize - Len(df)))
If df.fWide = 1 Then
' it is wide chars--unicode
strDest = arBuffer
Else
strDest = StrConv(arBuffer, vbUnicode)
End If
GlobalUnlock lHandle
vNames = Split(strDest, vbNullChar)
i = 0
While Len(vNames(i)) > 0
List1.AddItem vNames(i)
i = i + 1
Wend
End If
End If
CloseClipboard
End Sub
Private Sub Command1_Click()
Call ShowFilesOnClipboard
End Sub
uj5u.com熱心網友回復:
CopyMemory df, ByVal lpResults, Len(df)Call CopyMemory(arBuffer(0), ByVal lpResults + df.pFiles, _
(lBufferSize - Len(df)))
誰能轉換成PB代碼,或解釋一下意思
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/94940.html
標籤:API 調用
