Clipboard API วันที่จาก Windows 3.0 (หรือก่อนหน้า?) และได้รับการออกแบบมาไม่ดี น่าเสียดายที่แทนที่จะได้รับ / ตั้งค่าพื้นฐานมันใช้เปิด / ปิดซึ่งทำให้แอปพลิเคชันสามารถระงับการเข้าถึงได้นานเกินไป การปรับปรุงบางอย่างถูกนำมาใช้โดย Vista เพื่อจัดการห่วงโซ่ผู้ชม แต่ไม่มี API ใหม่
ด้วย API ที่มีอยู่แล้วคุณสามารถระบุเจ้าของคลิปบอร์ดได้หากเจ้าของรายนั้นมีหน้าต่างที่เปิดอยู่อย่างน้อยหนึ่งหน้าต่าง หากเจ้าของไม่มีหน้าต่างแสดงว่าไม่มีใครโชคดี
ในหัวข้อเหตุใดคลิปบอร์ดของฉันจึงหยุดทำงาน , Jay Parzych ได้สนับสนุนโค้ด vbs ต่อไปนี้ซึ่งฟังก์ชัน GetClipboardLocker ส่งคืนชื่อไฟล์ของกระบวนการที่เก็บคลิปบอร์ด:
<DllImport("user32.dll")> _
Public Function GetOpenClipboardWindow() As IntPtr
End Function
<DllImport("user32.dll", SetLastError:=True)> _
Public Function GetWindowThreadProcessId(ByVal hWnd As IntPtr, ByRef lpdwProcessId As Integer) As Integer
End Function
Public Function GetClipboardLocker() As String
Dim hwnd As IntPtr = GetOpenClipboardWindow()
If hwnd <> IntPtr.Zero Then
Dim processId As Integer
GetWindowThreadProcessId(hwnd, processId)
Dim p As Process = Process.GetProcessById(processId)
GetClipboardLocker = p.Modules(0).FileName
Else
GetClipboardLocker = String.Empty
End If
End Function
ฟังก์ชั่นที่คล้ายกัน C # สามารถพบได้ในการโพสต์
ได้รับเจ้าของคลิปบอร์ดชื่อ / คำบรรยายภาพ