امروز Clipboard سيستم عمل نميكرد و عمليات حياتي copy/paste از كار افتاده بود! پس از كمي جستجو مشخص شد كه به صورت زير ميتوان نام پروسهاي كه Clipboard را باز و قفل كرده و مانع عملكرد ساير برنامهها ميشود، بدست آورد:
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using System.Diagnostics;
namespace testWinForms87
{
class CTestClipboard
{
[DllImport("user32.dll", SetLastError = true)]
private static extern IntPtr GetOpenClipboardWindow();
[DllImport("user32.dll", SetLastError = true)]
private static extern uint GetWindowThreadProcessId(
IntPtr hWnd,
out uint lpdwProcessId);
public static void TrySetData()
{
try
{
Clipboard.SetData(DataFormats.Text, "وحيد");
}
catch
{
IntPtr hwnd = GetOpenClipboardWindow();
if (hwnd == IntPtr.Zero) return;
uint pid;
GetWindowThreadProcessId(hwnd, out pid);
MessageBox.Show(string.Format("clipboard is locked by: {0}",
Process.GetProcessById((int)pid).Modules[0].FileName));
}
}
}
}
به نظر اين يك باگ در VPC است.
اگر از MS Virtual PC استفاده ميكنيد و اين اتفاق رخ داد، داخل سيستم عاملي كه توسط VPC در حال اجرا است، يك متن ساده را كپي كنيد. سپس به منوي برنامه VPC ، گزينه edit مراجعه كرده و در ادامه گزينه Paste را انتخاب كنيد. به اين صورت بدون نياز به بستن برنامه يا هر عمليات ديگري مشكل برطرف ميشود.