কীভাবে ক্লিপবোর্ডে ডেটা অনুলিপি করবেন সি # তে


439

আমি কীভাবে সি # তে সিস্টেম ক্লিপবোর্ডে একটি স্ট্রিং (উদাহরণস্বরূপ "হ্যালো") অনুলিপি করতে পারি, তাই পরের বার আমি CTRL+V"হ্যালো" পাবো?


উত্তর:


798

দুটি সভা আছে যা বিভিন্ন সমাবেশ এবং বিভিন্ন নামের জায়গাগুলিতে বাস করে।

  • উইনফোর্ডস: নীচের নেমস্পেস ডিক্লেয়ারেশন ব্যবহার করুন, নিশ্চিত করুন যে গুণটি Mainচিহ্নিত করা [STAThread]হয়েছে:

    using System.Windows.Forms;
  • ডাব্লুপিএফ: নীচের নেমস্পেসের ঘোষণাটি ব্যবহার করুন

    using System.Windows;
  • কনসোল: রেফারেন্স যুক্ত করুন System.Windows.Forms, নিম্নলিখিত নেমস্পেস ডিক্লেয়ারেশন ব্যবহার করুন, নিশ্চিত করুন যে গুণটি Mainচিহ্নিত করা [STAThread]হয়েছে। অন্য উত্তরে ধাপে ধাপে গাইড

    using System.Windows.Forms;

সঠিক স্ট্রিংটি অনুলিপি করতে (এই ক্ষেত্রে আক্ষরিক):

Clipboard.SetText("Hello, clipboard");

পাঠ্যবাক্সের বিষয়বস্তু অনুলিপি করতে হয় টেক্সটবক্স.কপি () ব্যবহার করুন বা প্রথমে পাঠ্য সংগ্রহ করুন এবং তারপরে ক্লিপবোর্ডের মান সেট করুন:

Clipboard.SetText(txtClipboard.Text);

একটি উদাহরণের জন্য এখানে দেখুন । বা ... অফিসিয়াল এমএসডিএন ডকুমেন্টেশন বা এখানে ডাব্লুপিএফের জন্য


মন্তব্য:


@ কিয়েরেনজোনস্টোন কী-মান জোড় ব্যবহার করে ক্লিপবোর্ডের সামগ্রীগুলি অ্যাক্সেস করা সম্ভব?
আব্দুল

@ আবদুল - আপনার অর্থ কী তা আমি নিশ্চিত নই। ক্লিপবোর্ডের সামগ্রীগুলি পাঠ্য, ফাইল, চিত্র, যে কোনও ধরণের কাস্টম ডেটা হতে পারে। কেভি-জোড়ের ধারণাটি ক্লিপবোর্ড ধারণার সাথে কিছু করার মতো বলে মনে হচ্ছে না?
কাইরেন জনস্টোন

@ কেরেন জোনস্টোন আমি যা তৈরির চেষ্টা করছি তা হ'ল এমন কিছু যা ব্যবহারকারী ক্লিপবোর্ডে একাধিক জিনিস সঞ্চয় করতে পারে। এই জিনিসগুলি একটি কী দ্বারা অ্যাক্সেস করা হবে। এটি এইচটিএমএল 5 স্থানীয় স্টোরেজের মতো। নাকি ক্লিপবোর্ডের প্রকৃতির কারণে এরকম কিছু সম্ভব নয়?
আব্দুল

যদি আপনি এএসপি.এনইটি-তে ত্রুটি পেয়ে থাকেন তবে নতুন থ্রেডে ব্যবহার করে দেখুন: var থ্রেড = নতুন থ্রেড (প্যারাম => ip ক্লিপবোর্ড.সেটটেক্সট (txtName.Text);}); thread.SetApartmentState (ApartmentState.STA); thread.Start ();
ব্যবহারকারী 3790692

1
skia.heliou এর উত্তর আমাকে সাহায্য: অ্যাট্রিবিউট যোগ করার পরে [STAThreadAttribute], আমার Clipboard.SetText পদ্ধতি কাজ শুরু
viteo

44

ধাপে ধাপে ফ্যাশনে কনসোল প্রকল্পগুলির জন্য , আপনাকে প্রথমে System.Windows.Formsরেফারেন্স যুক্ত করতে হবে । নেট 4.5 সাথে নেট ভিজুয়াল স্টুডিও সম্প্রদায় 2013 এ নিম্নলিখিত পদক্ষেপগুলি কাজ করে:

  1. ইন সমাধান এক্সপ্লোরার , আপনার কনসোল প্রকল্প প্রসারিত।
  2. তথ্যসূত্রগুলিতে রাইট-ক্লিক করুন , তারপরে রেফারেন্স যুক্ত করুন ক্লিক করুন ...
  3. ইন অ্যাসেম্বলিজ গ্রুপ, অধীন ফ্রেমওয়ার্ক নির্বাচন System.Windows.Forms
  4. ঠিক আছে ক্লিক করুন ।

তারপরে, usingআপনার কোডের শীর্ষে অন্যদের সাথে নিম্নলিখিত বিবৃতিটি যুক্ত করুন :

using System.Windows.Forms;

তারপরে, নিম্নলিখিত দুটি যোগ করুন ClipboardSetTextআপনার কোড বিবৃতি:

Clipboard.SetText("hello");
// OR
Clipboard.SetText(helloString);

এবং সবশেষে, একটি এড়ানোর STAThreadAttributeজন্য আপনার Mainপদ্ধতিতে নিম্নলিখিত হিসাবে যুক্ত করুন System.Threading.ThreadStateException:

[STAThreadAttribute]
static void Main(string[] args)
{
  // ...
}

1
ক্লাসটি StackOverflowExceptionতত্ক্ষণাত্ STAThreadAttribute। নেট ফ্রেমওয়ার্ক সিস্টেম ক্লাস লাইব্রেরিতে পূর্ববর্তী হয় =)
skia.heliou

42

ক্লিপবোর্ডে ডাব্লুপিএফ সি # কপি করে ব্যবহার করে এই সমস্যাটির সাথে আমার অভিজ্ঞতা এবং System.Threading.ThreadStateExceptionএখানে আমার কোডটি রয়েছে যা সমস্ত ব্রাউজারের সাথে সঠিকভাবে কাজ করেছে:

Thread thread = new Thread(() => Clipboard.SetText("String to be copied to clipboard"));
thread.SetApartmentState(ApartmentState.STA); //Set the thread to STA
thread.Start(); 
thread.Join();

এখানে এই পোস্টে ক্রেডিট

তবে এটি কেবল লোকালহোস্টে কাজ করে, সুতরাং এটি কোনও সার্ভারে চেষ্টা করে দেখুন না কারণ এটি কাজ করে না।

সার্ভার-সাইডে, আমি এটি ব্যবহার করে করেছি zeroclipboard। একমাত্র উপায়, অনেক গবেষণা পরে।


আমি এটি স্বয়ংক্রিয় সেলেনিয়াম পরীক্ষায় (ওয়েবড্রাইভার) ব্যবহার করেছি এবং এটি দুর্দান্ত কাজ করে!
andrew.fox

@ andrew.fox আপনি নিজের সার্ভারে এটি ব্যবহার করে দেখেছেন - ক্লায়েন্টের মডেল? কারণ এটি যদি 2 টি আলাদা মেশিন হয় তবে আমার ধারণা এটি কাজ করা উচিত নয়।
বিএমএক্সিমাস

হ্যাঁ না, সেলেনিয়াম এজেন্ট মেশিনে ব্রাউজার উইন্ডোটি খুলবে।
andrew.fox


1

ক্লিপ.এক্সই উইন্ডোতে ক্লিপবোর্ড সেট করতে একটি এক্সিকিউটেবল। মনে রাখবেন যে এটি উইন্ডোজ ব্যতীত অন্য অপারেটিং সিস্টেমের জন্য কাজ করে না , যা এখনও সফল হয়।

        /// <summary>
        /// Sets clipboard to value.
        /// </summary>
        /// <param name="value">String to set the clipboard to.</param>
        public static void SetClipboard(string value)
        {
            if (value == null)
                throw new ArgumentNullException("Attempt to set clipboard with null");

            Process clipboardExecutable = new Process(); 
            clipboardExecutable.StartInfo = new ProcessStartInfo // Creates the process
            {
                RedirectStandardInput = true,
                FileName = @"clip", 
            };
            clipboardExecutable.Start();

            clipboardExecutable.StandardInput.Write(value); // CLIP uses STDIN as input.
            // When we are done writing all the string, close it so clip doesn't wait and get stuck
            clipboardExecutable.StandardInput.Close(); 

            return;
        }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.