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

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

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

Имеется вот такая программка. Не могу сделать чтобы полученные данные отправлялись в файл.txt. Получается что в файл должны попадать все значения из буфера, а у меня попадает только последнее. Как реализовать?
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using System.Runtime.InteropServices;
  10. using System.IO;
  11. namespace ClipboardMonitor
  12. {
  13. public partial class MainForm : Form
  14. {
  15. //Register a window handle as a clipboard viewer
  16. [DllImport("User32.dll", CharSet = CharSet.Auto)]
  17. public static extern IntPtr SetClipboardViewer(IntPtr hWnd);
  18. //Remove a window handle from the clipboard viewers chain
  19. [DllImport("User32.dll", CharSet = CharSet.Auto)]
  20. public static extern bool ChangeClipboardChain(
  21. IntPtr hWndRemove, // handle to window to remove
  22. IntPtr hWndNewNext // handle to next window
  23. );
  24. [DllImport("user32.dll", CharSet = CharSet.Auto)]
  25. public static extern int SendMessage(IntPtr hwnd, int wMsg, IntPtr wParam, IntPtr lParam);
  26. public MainForm()
  27. {
  28. InitializeComponent();
  29. }
  30. private void Output(string message)
  31. {
  32. tbOutput.Text += message + Environment.NewLine;
  33. tbOutput.SelectionStart = tbOutput.Text.Length;
  34. tbOutput.ScrollToCaret();
  35. }
  36. //The messages we shall need to monitor
  37. private const int WM_DRAWCLIPBOARD = 0x0308;
  38. private const int WM_CHANGECBCHAIN = 0x030D;
  39. //A handle of the next clipboard viewer we should send the message to
  40. private IntPtr nextClipboardViewer;
  41. protected override void WndProc(ref Message m)
  42. {
  43. switch (m.Msg)
  44. {
  45. case WM_DRAWCLIPBOARD:
  46. //the contents of the clipboard have changed
  47. {
  48. //Process clipboard change
  49. ClipboardChanged();
  50. //Send the message to the next window
  51. SendMessage(nextClipboardViewer, WM_DRAWCLIPBOARD, IntPtr.Zero, IntPtr.Zero);
  52. break;
  53. }
  54. case WM_CHANGECBCHAIN:
  55. //the clipboard chain has changed and we have to pass the news along
  56. {
  57. if (m.WParam == nextClipboardViewer)
  58. {
  59. //the window we've been passing WM_DRAWCLIPBOARD to has been removed
  60. //from the chain, so we have to update our message target
  61. nextClipboardViewer = m.LParam;
  62. }
  63. else
  64. {
  65. //just pass along the message
  66. SendMessage(nextClipboardViewer, WM_CHANGECBCHAIN, m.WParam, m.LParam);
  67. }
  68. m.Result = IntPtr.Zero;
  69. break;
  70. }
  71. default:
  72. {
  73. base.WndProc(ref m);
  74. break;
  75. }
  76. }
  77. }
  78. private void btnStart_Click(object sender, EventArgs e)
  79. {
  80. nextClipboardViewer = SetClipboardViewer(this.Handle);
  81. //Output("Программа начала работу");
  82. }
  83. private void btnStop_Click(object sender, EventArgs e)
  84. {
  85. ChangeClipboardChain(this.Handle, nextClipboardViewer);
  86. Output("Программа закончила работу");
  87. }
  88. private void ClipboardChanged()
  89. {
  90. Output(" " );
  91. Output("Буфер был изменен: "+ DateTime.Now);
  92. string s = "Полученные данные: ";
  93. if (Clipboard.ContainsText())
  94. {
  95. s += Clipboard.GetText();
  96. }
  97. else
  98. {
  99. s += "Нет текста";
  100. }
  101. Output(s);
  102. }
  103. private void MainForm_Load(object sender, EventArgs e)
  104. {
  105. }
  106. private void tbOutput_TextChanged(object sender, EventArgs e)
  107. {
  108. }
  109. }
  110. }

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

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

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут