اندازهی قلم متن
تخمین مدت زمان مطالعهی مطلب:
یک دقیقه
امروز 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 را انتخاب کنید. به این صورت بدون نیاز به بستن برنامه یا هر عملیات دیگری مشکل برطرف میشود.