当前位置: 首页 > 编程笔记 >

C#线程间不能调用剪切板的解决方法

陆英毅
2023-03-14
本文向大家介绍C#线程间不能调用剪切板的解决方法,包括了C#线程间不能调用剪切板的解决方法的使用技巧和注意事项,需要的朋友参考一下

最近做一个C#项目,需要用到线程,而且要用到剪切板,创建了一个子线程之后发现在子线程中剪切板上获取不到数据,经过一番查找与测试最终该问题得以解决,现将解决方法归纳如下,供大家参考:

第一步:

public void btnAutoFocus_Click(object sender,EventArgs e)
{
Thread myThread = new Thread(msc.AutoFocusArithmetic);
//注意,一般启动一个线程的时候没有这句话,但是要操作剪切板的话这句话是必需要加上的,
//因为剪切板只能在单线程单元中访问
//这里的STA就是指单线程单元
myThread .SetApartmentState(ApartmentState.STA); 
myThread .Start();
}

第二步:还需要将Program启动类中

static class Program
{
///
/// 应用程序的主入口点。
///

[STAThread] //这句话保留,如果要在主线程中访问剪切板,这句式必须要的
//如果要在子线程中访问剪切板,这个应该可以不要,但是默认是有的
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
//Application.Run(new TestRGBPixelThumbForm());
//Application.Run(new TestImageForm());
//Application.Run(new TestJudgeDefinitionForm());
//Application.Run(new TestVirusForm());
}
}

第三步:这个是读取剪切板数据

private Image GetCaptureImage()
{
IDataObject iData = Clipboard.GetDataObject();
Image img = null;
if (iData != null)
{
if (iData.GetDataPresent(DataFormats.Bitmap))
{
img = (Image)iData.GetData(DataFormats.Bitmap);
}
else if (iData.GetDataPresent(DataFormats.Dib))
{
img = (Image)iData.GetData(DataFormats.Dib);
}
}
return img;
}

至此问题得以解决。

 类似资料:
  • 本文向大家介绍Python使用剪切板的方法,包括了Python使用剪切板的方法的使用技巧和注意事项,需要的朋友参考一下 此段代码可以利用剪切板,完成自动复制粘贴等功能。(Windows)  以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍C#编程实现查看剪切板内容的方法,包括了C#编程实现查看剪切板内容的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#编程实现查看剪切板内容的方法。分享给大家供大家参考,具体如下: 运行程序后,如果之前复制过BITMAP图,则TEXTBOX消失,PICTRUEBOX出现,并且显示该图;反之如果选择的是后三项,则TEXTBOX出现,并且显示复制过的值。效果图如下: 这里有

  • 这里的复制粘贴使用了 clipboard 本项目提供了两种使用方式 直接使用 <el-button @click='handleCopy(inputData,$event)'>copy</el-button> import clip from '@/utils/clipboard' // use clipboard directly methods: { handleCopy(text,

  • jd.setClipboardData(OBJECT) 设置系统剪贴板的内容 OBJECT 参数说明: 参数 类型 必填 说明 data String 是 需要设置的内容 success Function 否 接口调用成功的回调函数 fail Function 否 接口调用失败的回调函数 complete Function 否 接口调用结束的回调函数(调用成功、失败都会执行) 示例代码 jd.se

  • 本文向大家介绍wxPython使用系统剪切板的方法,包括了wxPython使用系统剪切板的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了wxPython使用系统剪切板的方法。分享给大家供大家参考。具体如下: 程序运行效果如下图所示: 主要代码如下: 希望本文所述对大家的Python程序设计有所帮助。

  • 我有一个,它由组成,其中有一个和一个以及一些其他布局。 问题是,在某些屏幕分辨率中,会被切断或被推到下一行,这是我不想要的。 在其他分辨率中,有很多空间。 如何组织布局,使有足够的空间,并相应地调整的大小? 这是项的xml: