日韩欧美人妻无码精品白浆,www.大香蕉久久网,狠狠的日狠狠的操,日本好好热在线观看

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

C# WinForm下剪貼板操作 API 應(yīng)用

admin
2025年5月30日 23:37 本文熱度 365

在 Windows 桌面應(yīng)用開發(fā)中,剪貼板是一個非常有用的功能,它允許用戶在不同應(yīng)用程序之間復(fù)制和粘貼數(shù)據(jù)。在 WinForms 應(yīng)用程序中,我們可以通過調(diào)用 Win32 API 來實現(xiàn)剪貼板操作。本文將詳細(xì)介紹如何在 WinForms 中進(jìn)行剪貼板操作,并提供一個完整的示例。

引入命名空間

在開始之前,我們需要引用一些必要的命名空間:

using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;

Win32 API 聲明

我們將使用一些 Win32 API 函數(shù)來訪問剪貼板,這些函數(shù)包括:

  • OpenClipboard
  • CloseClipboard
  • EmptyClipboard
  • SetClipboardData
  • GetClipboardData
  • GlobalAlloc
  • GlobalLock
  • GlobalUnlock

在代碼中聲明這些 API 函數(shù):

public class ClipboardAPI
{

    // 聲明 Win32 API 函數(shù)
    [DllImport("user32.dll")]
    public static extern bool OpenClipboard(IntPtr hWnd);

    [DllImport("user32.dll")]
    public static extern bool CloseClipboard();

    [DllImport("user32.dll")]
    public static extern bool EmptyClipboard();

    [DllImport("user32.dll")]
    public static extern IntPtr SetClipboardData(uint uFormat, IntPtr hMem);

    [DllImport("user32.dll")]
    public static extern IntPtr GetClipboardData(uint uFormat);

    [DllImport("kernel32.dll")]
    public static extern IntPtr GlobalAlloc(uint uFlags, UIntPtr dwBytes);

    [DllImport("kernel32.dll")]
    public static extern IntPtr GlobalLock(IntPtr hMem);

    [DllImport("kernel32.dll")]
    public static extern bool GlobalUnlock(IntPtr hMem);

    // 定義數(shù)據(jù)格式
    publicconst uint CF_TEXT = 1;
}

復(fù)制文本到剪貼板

下面是一個將文本復(fù)制到剪貼板的方法:

public void CopyToClipboard(string text)
{
    // 打開剪貼板
    if (ClipboardAPI.OpenClipboard(IntPtr.Zero))
    {
        // 清空剪貼板
        ClipboardAPI.EmptyClipboard();

        IntPtr hGlobal = ClipboardAPI.GlobalAlloc(0, (UIntPtr)((text.Length + 1) * 2)); 
        if (hGlobal != IntPtr.Zero)
        {
            IntPtr pGlobal = ClipboardAPI.GlobalLock(hGlobal);
            Marshal.Copy(text.ToCharArray(), 0, pGlobal, text.Length);
            Marshal.WriteInt16(pGlobal, text.Length * 20); 
            ClipboardAPI.GlobalUnlock(hGlobal);
            ClipboardAPI.SetClipboardData(13, hGlobal);
            ClipboardAPI.CloseClipboard();
        }
    }
}

從剪貼板讀取文本

下面是一個從剪貼板讀取文本的方法:

public static string PasteFromClipboard()
{
    string result = string.Empty;

    // 打開剪貼板
    if (OpenClipboard(IntPtr.Zero))
    {
        // 獲取剪貼板數(shù)據(jù)
        IntPtr hGlobal = GetClipboardData(ClipboardAPI.CF_TEXT);

        if (hGlobal != IntPtr.Zero)
        {
            // 鎖定全局內(nèi)存
            IntPtr pGlobal = ClipboardAPI.GlobalLock(hGlobal);

            // 讀取文本
            result = Marshal.PtrToStringAnsi(pGlobal);

            // 解鎖全局內(nèi)存
            ClipboardAPI.GlobalUnlock(hGlobal);
        }

        // 關(guān)閉剪貼板
        CloseClipboard();
    }

    return result;
}

完整示例

接下來,我們將創(chuàng)建一個簡單的 WinForms 應(yīng)用程序,包含一個文本框和兩個按鈕,分別用于復(fù)制和粘貼。

using System.Runtime.InteropServices;

namespace AppCopyToClipboardApi
{
    public partial class Form1 : Form
    {
        public Form1()
        
{
            InitializeComponent();
        }

        private void btnCopy_Click(object sender, EventArgs e)
        
{
            CopyToClipboard(txt.Text);
        }

        private void btnPaste_Click(object sender, EventArgs e)
        
{
            txt.Text = PasteFromClipboard();
        }

        public string PasteFromClipboard()
        
{
            string result = string.Empty;

            // 打開剪貼板
            if (ClipboardAPI.OpenClipboard(IntPtr.Zero))
            {
                // 獲取剪貼板數(shù)據(jù)
                IntPtr hGlobal = ClipboardAPI.GetClipboardData(ClipboardAPI.CF_TEXT);

                if (hGlobal != IntPtr.Zero)
                {
                    // 鎖定全局內(nèi)存
                    IntPtr pGlobal = ClipboardAPI.GlobalLock(hGlobal);

                    // 讀取文本
                    result = Marshal.PtrToStringAnsi(pGlobal);

                    // 解鎖全局內(nèi)存
                    ClipboardAPI.GlobalUnlock(hGlobal);
                }

                // 關(guān)閉剪貼板
                ClipboardAPI.CloseClipboard();
            }

            return result;
        }

        public void CopyToClipboard(string text)
        
{
            // 打開剪貼板
            if (ClipboardAPI.OpenClipboard(IntPtr.Zero))
            {
                // 清空剪貼板
                ClipboardAPI.EmptyClipboard();

                IntPtr hGlobal = ClipboardAPI.GlobalAlloc(0, (UIntPtr)((text.Length + 1) * 2)); 
                if (hGlobal != IntPtr.Zero)
                {
                    IntPtr pGlobal = ClipboardAPI.GlobalLock(hGlobal);
                    Marshal.Copy(text.ToCharArray(), 0, pGlobal, text.Length);
                    Marshal.WriteInt16(pGlobal, text.Length * 20); 
                    ClipboardAPI.GlobalUnlock(hGlobal);
                    ClipboardAPI.SetClipboardData(13, hGlobal);
                    ClipboardAPI.CloseClipboard();
                }
            }
        }
    }
}

?

總結(jié)

通過調(diào)用 Win32 API,我們能夠在 WinForms 應(yīng)用程序中實現(xiàn)剪貼板的操作。本文提供了將文本復(fù)制和粘貼到剪貼板的完整示例,展示了如何使用 Windows API 來進(jìn)行這些基本操作。這種方法可以為開發(fā)更復(fù)雜的剪貼板功能提供基礎(chǔ)。


閱讀原文:原文鏈接


該文章在 2025/6/2 13:02:11 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊、財務(wù)費(fèi)用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

欧美三级又粗长| 无码欧美人妻区二区| 大屌插美女| 熟妇无码八在线播放| 中文字幕日韩精品久久| 天天干天天做天天日天天爽| 少妇AV一| 亚洲中文资源| 网站一区二| 青青草在线视频观看中文字幕| 亚洲人妻精品hd| 精品一区中文字幕久久| 国产在线视频不卡一区二区| 图片 欧美 日韩 国产 在线| 成人拍拍小视频| 午夜成人无码精品福利| 推油按摩调情网综合| 丝袜护士一区| 国产日韩。欧美一区二区| 九九国产一区二区三区在线看| 久久精品少妇呻吟| 日本久久中文字幕在线| 日本久久黄A| 广州久久无码| 亚州欧美小说| 精品乱份一区二区二区| 日本加勒比久久精品| 久久爰| 久久精品国产无码中文字幕| 欧美日韩精品卡不卡一区二区| 黄片婷婷肏逼久久九九| 日韩人妻流出第2页| 国外激情视频网站| 黄色电影四区| 超级碰碰碰碰云中影视| 黑人人妻少妇www色婷婷| 99只精品2019_第1集| 黄色免费一区二区三区| 午夜精品一区人妻潮喷欧美| 精品久久国产按摩| 无码导航综合区|