Запись в файл - C# (182275)

Узнай цену своей работы

Формулировка задачи:

Имеется вот такая программка. Не могу сделать чтобы полученные данные отправлялись в файл.txt. Получается что в файл должны попадать все значения из буфера, а у меня попадает только последнее. Как реализовать?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.IO;
 
namespace ClipboardMonitor
{
    public partial class MainForm : Form
    {
        //Register a window handle as a clipboard viewer
        [DllImport("User32.dll", CharSet = CharSet.Auto)]
        public static extern IntPtr SetClipboardViewer(IntPtr hWnd);
 
        //Remove a window handle from the clipboard viewers chain
        [DllImport("User32.dll", CharSet = CharSet.Auto)]
        public static extern bool ChangeClipboardChain(
            IntPtr hWndRemove,  // handle to window to remove
            IntPtr hWndNewNext  // handle to next window
            );
 
        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        public static extern int SendMessage(IntPtr hwnd, int wMsg, IntPtr wParam, IntPtr lParam);
        public MainForm()
        {
            InitializeComponent();
        }
 
        private void Output(string message)
        {
            tbOutput.Text += message + Environment.NewLine;
            tbOutput.SelectionStart = tbOutput.Text.Length;
            tbOutput.ScrollToCaret();
        }
 
        //The messages we shall need to monitor
        private const int WM_DRAWCLIPBOARD = 0x0308;
        private const int WM_CHANGECBCHAIN = 0x030D;
 
        //A handle of the next clipboard viewer we should send the message to
        private IntPtr nextClipboardViewer;
 
        protected override void WndProc(ref Message m)
        {
            switch (m.Msg)
            {
                case WM_DRAWCLIPBOARD:
                    //the contents of the clipboard have changed
                    {
                        //Process clipboard change
                        
                            ClipboardChanged();
                        //Send the message to the next window
                        SendMessage(nextClipboardViewer, WM_DRAWCLIPBOARD, IntPtr.Zero, IntPtr.Zero);
                        break;
                    }
                case WM_CHANGECBCHAIN:
                    //the clipboard chain has changed and we have to pass the news along
                    {
                        if (m.WParam == nextClipboardViewer)
                        {
                            //the window we've been passing WM_DRAWCLIPBOARD to has been removed
                            //from the chain, so we have to update our message target
                            nextClipboardViewer = m.LParam;
                        }
                        else
                        {
                            //just pass along the message
                            SendMessage(nextClipboardViewer, WM_CHANGECBCHAIN, m.WParam, m.LParam);
                        }
                        m.Result = IntPtr.Zero;
                        break;
                    }
                default:
                    {
                        base.WndProc(ref m);
                        break;
                    }
            }
        }
 
        private void btnStart_Click(object sender, EventArgs e)
        {
            nextClipboardViewer = SetClipboardViewer(this.Handle);
            //Output("Программа начала работу");
        }
 
        private void btnStop_Click(object sender, EventArgs e)
        {
            ChangeClipboardChain(this.Handle, nextClipboardViewer);
            Output("Программа закончила работу");
        }
 
        private void ClipboardChanged()
        {
            Output(" " );
            Output("Буфер был изменен:  "+ DateTime.Now);
            string s = "Полученные данные: ";
 
                if (Clipboard.ContainsText())
                {
                    s += Clipboard.GetText();
                
                }
 
                else
                {
                    s += "Нет текста";
                }
            
            Output(s);
           
        }
 
        private void MainForm_Load(object sender, EventArgs e)
        {
  
        }
 
        private void tbOutput_TextChanged(object sender, EventArgs e)
        {
 
        }
    }
}

Решение задачи: «Запись в файл»

textual
Листинг программы
            using (var sw = File.AppendText("output.txt"))
            {
                sw.WriteLine(message + Environment.NewLine);
            }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.25 из 5