ক্লিপবোর্ডের এপিআই এর উইন্ডোজ 3.0 (বা তার আগে?) থেকে এসেছে এবং এটি খারাপভাবে ডিজাইন করা হয়েছে। দুর্ভাগ্যক্রমে, আদিম পেতে / সেট করার পরিবর্তে, এটি উন্মুক্ত / ঘনিষ্ঠ ব্যবহার করে, যা অ্যাপ্লিকেশনগুলির পক্ষে এটির দীর্ঘকাল অ্যাক্সেস রাখা সম্ভব করে তোলে। ভিস্তার ভিউয়ার্স চেইন হ্যান্ডলিংয়ে কিছু উন্নতি এনেছিল, তবে কোনও নতুন এপিআই নেই।
বিদ্যমান এপিআই দিয়ে ক্লিপবোর্ডের মালিককে কেবলমাত্র সনাক্ত করা সম্ভব যদি কেবল তার মালিকের কমপক্ষে একটি খোলা উইন্ডো থাকে। যদি মালিকের কোনও উইন্ডো না থাকে তবে তার ভাগ্যের বাইরে।
থ্রেডে আমার ক্লিপবোর্ড কেন কাজ বন্ধ করে দিয়েছে? , জে প্যারজিচ নিম্নলিখিত ভিবিএস কোডটি অবদান রেখেছেন যেখানে গেটক্লিপবোর্ডলকার ফাংশন ক্লিপবোর্ড ধারণকারী প্রক্রিয়াটির ফাইল-নাম দেয়:
<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
ক্লিপবোর্ডের মালিকদের শিরোনাম / পরিচয়লিপি পোস্টে একটি অনুরূপ সি # ফাংশন পাওয়া যাবে
।