Windows 剪切板的应用——复制浏览器or本地目录图片

VBA操作剪切板全解析:从DataObject到Windows API的进阶指南 在Windows自动化编程中,剪切板是实现应用程序间数据交换的核心机制。其原理是通过系统级接口,在不同进程间传递格式化数据。掌握剪切板操作的技术价值在于,能够突破单一应用的限制,构建跨软件的数据自动化流程,极大提升办公效率。在VBA(Visual Basic for Applications)环境中,这尤其关键,因为它允许Excel等Office组件与浏览器、记事本等其他程序无缝交互。常见的应用场景包括网页数据抓取、跨文档信息汇总以及报表自动生成。本文聚焦于VBA操作剪切板的两种主流方案:基于Microso 阅读详情

一、简述

最近看了windows的剪切板相关的应用代码,于是乎,便想将浏览器中复制的图片保存到本地,经过尝试,通过以下代码完成在浏览器中右键选择复制图片,然后监控键盘事件,当按下Ctrl + v 时保存到本地,并显示到界面上。

看一下效果图:

这里写图片描述

二、代码之路

下面是基于Qt建立的工程,其他工程直接使用sendCopyImage() 、 SaveBitmapToFile()方法即可。

#include "clipboardtest.h"
#include "windows.h"
#include <QKeyEvent>

// CString 与 QString 相互转换;
inline QString  CS2QS(CString cs) { return  QString::fromWCharArray((LPCTSTR)cs, cs.GetLength()); }
inline CString  QS2CS(QString qs) { return  qs.toStdString().c_str(); }

ClipboardTest::ClipboardTest(QWidget *parent)
    : QWidget(parent)
{
    ui.setupUi(this);
}

ClipboardTest::~ClipboardTest()
{

}

void ClipboardTest::keyPressEvent(QKeyEvent *event)
{
    // 按下Ctrl + v 时根据当前剪切板的内容是否显示图片;
    if (event->modifiers() == Qt::ControlModifier && event->key() == Qt::Key_V)
    {
        sendCopyImage();
    }

    return __super::keyPressEvent(event);
}

// 根据当前剪切板的内容是否显示图片
void ClipboardTest::sendCopyImage()
{
    bool bHasImage = false;
    CString strFileName;
    //判断剪贴板的数据格式是否可以处理。;

    // 从浏览器中复制图片;
    if (IsClipboardFormatAvailable(CF_BITMAP))
    {
        if (OpenClipboard((HWND)this->winId()))
        {
            HBITMAP hBitMap = (HBITMAP)GetClipboardData(CF_BITMAP);
            //关闭剪贴板;
            CloseClipboard();
            if (hBitMap)
            {
                bHasImage = true;
                strFileName = ".//MyImage.bmp";
                // 将浏览器复制的图片保存在本地;
                SaveBitmapToFile(hBitMap, strFileName);
            }
            else
            {
                int errorType = GetLastError();
            }
        }
    }
    // 从浏览器中复制图片;
    else if (IsClipboardFormatAvailable(CF_BITMAP))
    {
        if (OpenClipboard((HWND)this->winId()))
        {
            HBITMAP hBitMap = (HBITMAP)GetClipboardData(CF_BITMAP);
            //关闭剪贴板;
            CloseClipboard();
            if (hBitMap)
            {
                bHasImage = true;

                SaveBitmapToFile(hBitMap, strFileName);
            }
            else
            {
                int errorType = GetLastError();
            }
        }
    }

    // 如果有图片则显示图片;
    if (bHasImage)
    {
        QPixmap pixmap(CS2QS(strFileName));
        this->setFixedSize(pixmap.size());
        ui.label->setPixmap(pixmap);
    }
}

// 将图片保存为bmp文件;
bool ClipboardTest::SaveBitmapToFile(HBITMAP hBitmap, CString imageFileName)
{  
    HDC     hDC;           
    //当前分辨率下每象素所占字节数;            
    int     iBits;           
    //位图中每象素所占字节数;            
    WORD     wBitCount;           
    //定义调色板大小,     位图中像素字节大小     ,位图文件大小     ,     写入文件字节数;
    DWORD     dwPaletteSize=0,   dwBmBitsSize=0,   dwDIBSize=0,   dwWritten=0;               
    //位图属性结构;                
    BITMAP     Bitmap;                   
    //位图文件头结构;
    BITMAPFILEHEADER     bmfHdr;                   
    //位图信息头结构;
    BITMAPINFOHEADER     bi;                   
    //指向位图信息头结构;
    LPBITMAPINFOHEADER     lpbi;                   
    //定义文件,分配内存句柄,调色板句柄;               
    HANDLE     fh,   hDib,   hPal,hOldPal=NULL;               

    //计算位图文件每个像素所占字节数;  
    hDC  = CreateDC(CString("DISPLAY"),   NULL,   NULL,   NULL);           
    iBits  = GetDeviceCaps(hDC,   BITSPIXEL)     *     GetDeviceCaps(hDC,   PLANES);               
    DeleteDC(hDC);               
    if(iBits <=  1)                                                     
        wBitCount = 1;               
    else  if(iBits <=  4)                                 
        wBitCount  = 4;               
    else if(iBits <=  8)                                 
        wBitCount  = 8;               
    else                                                                                                                                 
        wBitCount  = 24;  

    GetObject(hBitmap,   sizeof(Bitmap),   (LPSTR)&Bitmap);           
    bi.biSize= sizeof(BITMAPINFOHEADER);           
    bi.biWidth = Bitmap.bmWidth;           
    bi.biHeight =  Bitmap.bmHeight;           
    bi.biPlanes =  1;           
    bi.biBitCount = wBitCount;           
    bi.biCompression= BI_RGB;           
    bi.biSizeImage=0;           
    bi.biXPelsPerMeter = 0;           
    bi.biYPelsPerMeter = 0;           
    bi.biClrImportant = 0;           
    bi.biClrUsed =  0;           

    dwBmBitsSize  = ((Bitmap.bmWidth *wBitCount+31) / 32)*4* Bitmap.bmHeight;           

    //为位图内容分配内存;
    hDib  = GlobalAlloc(GHND,dwBmBitsSize+dwPaletteSize+sizeof(BITMAPINFOHEADER));               
    lpbi  = (LPBITMAPINFOHEADER)GlobalLock(hDib);               
    *lpbi  = bi;               

    //处理调色板;
    hPal  = GetStockObject(DEFAULT_PALETTE);               
    if (hPal)               
    {               
        hDC  = ::GetDC(NULL);               
        hOldPal = ::SelectPalette(hDC,(HPALETTE)hPal, FALSE);               
        RealizePalette(hDC);               
    }           

    //获取该调色板下新的像素值;
    GetDIBits(hDC,hBitmap, 0,(UINT)Bitmap.bmHeight,    
        (LPSTR)lpbi+ sizeof(BITMAPINFOHEADER)+dwPaletteSize,     
        (BITMAPINFO *)lpbi, DIB_RGB_COLORS);               

    //恢复调色板;
    if (hOldPal)               
    {               
        ::SelectPalette(hDC,   (HPALETTE)hOldPal,   TRUE);               
        RealizePalette(hDC);               
        ::ReleaseDC(NULL,   hDC);               
    }               

    //创建位图文件;
    fh = CreateFile(imageFileName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS,
        FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN,   NULL);               

    if (fh     ==  INVALID_HANDLE_VALUE)         return     FALSE;               

    //设置位图文件头;
    bmfHdr.bfType  = 0x4D42;     //     "BM"                
    dwDIBSize  = sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+dwPaletteSize+dwBmBitsSize;                   
    bmfHdr.bfSize  = dwDIBSize;               
    bmfHdr.bfReserved1  = 0;               
    bmfHdr.bfReserved2  = 0;               
    bmfHdr.bfOffBits  = (DWORD)sizeof(BITMAPFILEHEADER)+(DWORD)sizeof(BITMAPINFOHEADER)+dwPaletteSize;               
    //写入位图文件头;
    WriteFile(fh,   (LPSTR)&bmfHdr,   sizeof(BITMAPFILEHEADER),   &dwWritten,   NULL);               
    //写入位图文件其余内容;
    WriteFile(fh,   (LPSTR)lpbi,   dwDIBSize,   &dwWritten,   NULL);               
    //清除;
    GlobalUnlock(hDib);               
    GlobalFree(hDib);               
    CloseHandle(fh);               

    return     TRUE;           

}  

从浏览器中复制图片

从浏览器中右键复制图片,切换到我们的程序按下Ctrl + v 保存图片至本地并显示到界面上。

这里写图片描述


这里写图片描述


这里写图片描述

从本地目录复制图片

这里写图片描述

使用PrtScn键获取屏幕截图

按下PrtScn键(Print Screen键),然后回到程序,按下Ctrl+V即可将图片复制到程序中显示。

这里写图片描述


代码下载

环境为Qt 5.5 + VS2013,其他工程可以直接copy上面代码稍作修改即可。

Windows 剪切板的应用


更新于2017年6月15日。

QT读取剪切板内容-实现复制粘贴文本和图片 很多软件都支持从剪切板里粘贴图片、文字数据到指定位置,比如:QQ、微信可以直接从剪切板粘贴图片、文字进行发送消息。这个功能QT里实现也很方便,接口QT都提供了。 阅读详情

相关推荐

UI自动化控制微信发送文件【解决了一个无人回答的难题,Pywin32设置文件到剪切板】

大家好,我是小小明。前面我在《UI自动化控制PC版微信》该系列文中更新了控制微信发送图片的方法。 链接:https://blog.youkuaiyun.com/as604049322/category_11396772.html 根据部分群友实际工作的需要,本文将分享如何控制微信发送文件。 按照前面的思路,我们发送文本和图片,都是采用复制粘贴操作剪切板的方式,而uiautomation 框架本身也提供了复制文本或图片的方法。 但是如果需要复制文件到剪切板,uiautomation 并没有提供相应的api。翻遍了全网的资

小小明-代码实体的专栏 7万+

网页上关于图片的几个操作, 复制图片功能最有用

在我们平时上网的时候,总会有一些图片希望能够保存下来,或者分享给好朋友,下面老炉就给大家详细说一下网页上图片操作的几个小技巧。目前主流的几个浏览器如IE,360,火狐,谷歌等对图片的操作都有三种方式,分别是另存为,复制图片,复制图片地址,这三个方法分别在什么时候用呢? “图片另存为”这个绝大多数人都知道原理,在网页上的图片上点右键,“图片另存为”可以将图片保存到电脑上。“复制图片地址...

老炉传说的专栏 998

Windows 剪切板的应用,复制浏览器or本地目录图片

Windows 剪切板的应用,获取到浏览器中通过右键复制的图片,获取从本地目录复制图片到界面上。详情见博客:http://blog.youkuaiyun.com/GoForwardToStep/article/details/58705003。

windows的剪切板如何使用?底层原理是什么?

基本操作:复制、剪切和粘贴是剪切板的基本操作,通过快捷键或右键菜单完成。高级功能:剪切板历史和第三方管理器提供了更多的功能,如多剪切板历史、搜索、分类等。底层原理:剪切板数据存储在内存中,由操作系统管理,通过 Windows API 进行操作和管理。通过这些方法,Windows 剪切板可以显著提高工作效率,帮助用户在不同应用程序之间快速传输数据。

长风破浪会有时的博客 8208

Win10下YOLOv8环境搭建避坑指南:从CUDA 11.6到cuDNN配置全流程

本文详细介绍了在Windows 10系统下搭建YOLOv8环境的完整流程,包括CUDA 11.6和cuDNN的配置步骤,以及常见问题的解决方案。通过硬件准备、软件安装、环境验证和性能优化等环节,帮助开发者高效完成YOLOv8环境配置,提升目标检测项目的开发效率。

defi6farmer的博客 224

两个独立的正态分布的和仍然为正态分布的证明

正态分布的和

weixin_40064300的博客 1万+

vue-quill-editor 粘贴文字图片及图片上传

问题:vue-quill-editor富文本编辑器上传图片默认为,存入数据库过于过于庞大,使用 paste 实现图片地址上传。

zhangxinrongr的博客 2682

从 SAP GUI 到 API 自动化,为什么 SAP 团队必须把 API 拉到路线图中央

摘要: SAP项目正从传统手工操作转向API驱动,以应对业务敏捷性需求。API不仅是技术接口,更是核心业务能力的标准化封装,助力自动化、低代码、AI集成和系统升级。通过SAP Business Accelerator Hub等工具,企业可复用标准API替代定制开发,减少技术债。API还赋能自动化平台、实时集成和AI Agent执行,确保安全治理与审计追踪。未来,API将成为企业系统与AI交互的核心桥梁,缺乏API将迫使业务依赖脆弱的UI自动化方案。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 302

Clipboard 通过按钮一键复制图片和文本

Clipboard 通过按钮一键复制图片和文本

猫老爹的博客 2628

YOLO26 实战全流程:从数据集标注到端到端无NMS推理(完整版,附ProgLoss核心调参技巧+避坑指南)

本章节是实战经验的精华❌ 数据集标注不规范,导致模型精度低 → ✅ 严格遵守工业级标注规范,标注框紧贴目标边缘,不要漏标/多标;❌ 训练时未使用预训练权重,导致收敛极慢 → ✅ 必须开启,预训练权重能让模型快速收敛;❌ ProgLoss参数调整幅度过大,导致训练崩溃 → ✅ 每次只调整一个参数,幅度±0.02即可,循序渐进;❌ 推理时强行添加NMS参数,画蛇添足 → ✅ YOLO26无需NMS,推理命令中不要加conf/iou参数,否则会降低推理速度;

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1141

13.0 针对跳转不存在Activity崩溃处理,改成弹Toast提示,去掉崩溃弹窗,避免app崩溃退出

在开发过程中,在app跳转到某个没注册的Acitivity时,往往会出现崩溃的场景,这样也不好,接下来就从framework中来拦截这个崩溃,改成toast提示,

安卓兼职framework和app工程师的博客 48

[Windows-macOS]_[C/C++-Object-c]_[复制文本和图片到剪切板]

场景 Windows,macOS开发界面时,往往需要复制界面上的文本内容到剪切板,或者需要把一个图片复制到剪切板,便于粘贴到QQ,微信里,怎么做到呢? 说明 无论时Windows还是macOS,都有相对应的复制文本到剪切板或者复杂图片到剪切板, 文本方面不用说,不会很复杂,复杂的地方就在于复制图片到剪切板上. Windows有需要存储BITMAP到图像格式,所以在保存前需要得到BITM...

小白 1837

基于Qt的工业组态软件开发:图形绘制与TCP通讯实现

在数据接收时,通过 readyRead 信号触发解析函数,校验数据包完整性后提取有效数据,并更新对应图形元素的状态,例如根据温度值改变矩形的填充色,实现设备状态可视化。测试阶段,我们将软件部署到Windows工控机,连接PLC设备进行通讯测试,结果表明图形元素响应及时,TCP数据传输稳定,满足工业现场的基本需求。综上所述,基于Qt的组态软件开发,核心在于利用 QGraphicsView 框架实现图形元素的灵活绘制与管理,结合 QTcpSocket 完成工业数据的可靠交互。

谢谢大家的关注和点赞!这里只有纯纯的知识干货,没有一句废话。希望能实实在在帮到大家~要是觉得有用,别忘了给我点支持哟,你 272

浏览器 Web 访问剪切板图片

前言 有时候,我们希望能访问用户的剪切板,来实现一些方便用户的功能;但是另一方面,剪切板里的数据对用户来说又是非常隐私的,所以浏览器在获取信息方面有安全限制,同时也提供访问接口。 前段时间由于业务功能...

setsunadoudou的博客 813

OCR文字识别基础

ocr文字识别

m0_47405013的博客 1755

电机驱动器MP6540H应用设计

/ ... 其他初始化函数(SystemClock_Config, MX_GPIO_Init, MX_TIM1_Init, MX_TIM2_Init)需要你根据STM32CubeMX生成或手动编写。// 假设霍尔传感器引脚是 GPIO_PIN_8, GPIO_PIN_9, GPIO_PIN_10。// 低侧U相GPIO引脚。

zhusl6688的博客 657

QT复制文本、图片到剪切板-QClipboard

QT 复制文本、图片到剪切板 QClipboard

weixin_41111116的博客 2391

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

windows 剪切板的写入、读取,包括图片,文本内容

在windows开发过程中,我们可能会需要对系统剪切板进行操作,其中包括读取剪切板数据和将数据写入到剪切板中设置剪切板内容/*** @brief 设置剪切板内容* @param[in] pszData 指向缓冲区的指针* @param[in] nDataLen 缓冲区长度* @return 成功返回TRUE,失败返回FALSE*/if (hMem)读取剪切板内容/*** @brief 读取剪切板内容* @return 剪切板内容,失败为空*/if (hMem)

dm569263708的专栏 600

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

windows跨设备实现复制粘贴

在实验室和办公的时候,经常有这样的需求:需要在工位的台式机电脑和自己的笔记本之间复制粘贴,也就是跨windows设备之间的复制粘贴,包括小段文字和小图片。windows自带的剪切板实际是具备这个功能的,稍作设置和修改即可。 前提: 1.电脑都是win10系统 2.电脑都使用了同一个微软账户登录。 目录 1.剪切板设置 2.组策略编辑 3.修改注册表 1.剪切板设置 打开设置,系统,找到剪切板,把剪切板历史和跨设备同步都打开。 2.组策略编辑 在开始中搜索“编辑组策略”或者.

tuoyakan9097的博客 1万+

【UWP应用开发实战】第一弹 使用剪切板

不知道是否还有童鞋记得我上半年写的一系列Windows App开发的博客,那时候Windows 10还处于预览版,UWP(Universal Windows Platform)当时也还处于雏形阶段。在当时的专栏的首篇中,我们就展望过UWP,而如今的UWP简直是更上百层楼了,定当让你刮目相看。不过,这一篇还是先来介绍一下剪切板的功能,因为之前的文章仅仅是介绍了从应用外剪切/复制到应用内,并没有介绍如何

nomasp 3770

剪切板是计算机系统,剪切板

剪切板是指windows 操作系统提供的一个暂存数据,并且提供共享的一个模块。也称为数据中转站,剪切板在后台起作用,保存在内存里,是操作系统设置的一段存储区域,你是在硬盘里找不到的.你只要有文本输入的地方按CTRL+V或右键粘贴就出现了,.新的内容送到剪切板后,将覆盖旧内容。中文名剪切板也称为数据中转站概念windows操作系统提供暂存数据属于是操作系统设置的一段存储区域剪切板基本...

weixin_30045055的博客 2255

html5 剪切板,【Web前端问题】当你复制一个网页的时候,你的剪切板里是什么呢?...

不好意思,我也不知道这个问题去哪个栏目问,该在那个编程语言板块,我就都问问吧,总有懂的人!就是比如我复制一个网页的内容,其中有文本,也有图片,要是把他粘贴到一个*.txt里,他就粘贴出来是一个纯字符串;要是把他粘贴到一个word文档里,他就是包含html 标签和 css 样式的一段排好版的文字;要是把他粘贴到 QQ聊天窗口,就是 图片 + 字符串,我就不明白我剪切板里到底是个什么东西?这个东西是用...

weixin_35433920的博客 565

剪切板是计算机系统,电脑剪切板在哪里找 电脑剪切板位置【图文】

在我们使用电脑的过程中,总会出现这样或那样的问题。比如当我们使用截屏保存了张图片时,电脑显示在剪贴板,但是我们却很难找到剪贴板在电脑的哪个位置,因此也找不到需要的图片了。可见,作为内存中的一个区域,剪切板也是电脑系统内置的一个非常有用的小工具。通过剪切板,我们可以在各种不同的程序之间对信息进行传递和分享。那么,电脑剪切板在哪呢?电脑剪切板在哪1.首先,打开百度搜索,下载一个名字为clipbrd.e...

weixin_33526828的博客 3438

clipboard-rs 项目在 Windows 系统下的 HTML 写入剪切板问题分析

clipboard-rs 项目在 Windows 系统下的 HTML 写入剪切板问题分析 在 clipboard-rs 这个 Rust 语言实现的跨平台剪切板操作库中,开发者发现了一个 Windows 平台特有的剪切板操作问题。这个问题表现为:当用户先执行文件复制操作,再执行 HTML 内容复制时,粘贴操作仍然会得到之前复制的文件内容,而不是预期的 HTML 内容。 问题现象 在 Windows ...

gitblog_07857的博客 349
上一篇: ActiveX插件的使用
下一篇: Qt 之 样式表的使用——设置样式的方法
前行中的小猪
前行中的小猪 领域专家: C/C++技术领域 领域专家: C/C++技术领域
博客等级 码龄10年 4万+粉丝 134原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值