Есть программа, которая записывает действия мыши (макрос) и там есть возможность вставлять С#. У меня между командами вставляется 3 C# кода, то есть примерно это выглядит так:
C#
КЛИК ПО КООРДИНАТАМ (CLICK X X)
ВСТАВИТЬ В ПОЛЕ ИЗ БУФЕРА ОБМЕНА (PASTE)
ЖДЁМ 3 СЕК (DELAY 3000)
C#
КЛИК ПО КООРДИНАТАМ (CLICK X X)
ВСТАВИТЬ В ПОЛЕ ИЗ БУФЕРА ОБМЕНА (PASTE)
ЖДЁМ 3 СЕК (DELAY 3000)
C#
КЛИК ПО КООРДИНАТАМ (CLICK X X)
ВСТАВИТЬ В ПОЛЕ ИЗ БУФЕРА ОБМЕНА (PASTE)
Иногда всё работает стабильно без ошибок, иногда выдаёт ошибку:
Текущий поток должен быть задан как поток однопоточного контейнера (STA), чтобы вызовы OLE стали возможны. Проверьте, что ваша функция Main помечена атрибутом STAThreadAttribute.
А иногда Windows пишет, что недостаточно памяти. Скорее всего я что-то недопонимаю и что-то работает нелогично. Я около недели пытался найти решение проблемы, но ничего не помогло. Последнее, что я сделал, это добавил [STAThread]
, но и это тоже не помогло. Поэтому пришёл спрашивать советы у Вас. Сильно не ругайте меня, с C# у меня первый опыт.
Прикрепляю 3 вставки кода:
using System;
using System.IO;
using System.Net;
using System.Text;
public class Program {
[STAThread]
public static void Main() {
try {
using(var file_track_title = new StreamReader(@"C:\Users\Administrator\Desktop\AMData\track_title.txt")) {
System.Windows.Forms.Clipboard.SetText(file_track_title.ReadLine());
}
} catch (Exception ex) {
System.Windows.Forms.MessageBox.Show(ex.Message);
}
}
}
using System;
using System.IO;
using System.Net;
using System.Text;
public class Program {
[STAThread]
public static void Main() {
try {
using(var file_login = new StreamReader(@"C:\Users\Administrator\Desktop\AMData\login.txt")) {
System.Windows.Forms.Clipboard.SetText(file_login.ReadLine());
}
} catch (Exception ex) {
System.Windows.Forms.MessageBox.Show(ex.Message);
}
}
}
using System;
using System.IO;
using System.Net;
using System.Text;
public class Program {
[STAThread]
public static void Main() {
try {
using(var file_password = new StreamReader(@"C:\Users\Administrator\Desktop\AMData\password.txt")) {
System.Windows.Forms.Clipboard.SetText(file_password.ReadLine());
}
} catch (Exception ex) {
System.Windows.Forms.MessageBox.Show(ex.Message);
}
}
}
Можно так
static void Main(string[] args)
{
string file = @"D:\test.txt";
System.Threading.Thread thread = new Thread(() => SetToClipboard(file));
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
thread.Join();
}
private static void SetToClipboard(string pathToFile)
{
try
{
string line = String.Empty;
//все же поток лучше закрыть перед тем как дергать др.сущность типа Clipboard
using (var sr = new StreamReader(pathToFile))
{
line = sr.ReadLine();
}
if (!String.IsNullOrEmpty(line))
{
System.Windows.Forms.Clipboard.SetText(line);
}
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message);
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Изучаю C# и WPFПодскажите пожалуйста какие темы необходимо прочитать для реализации удаленного обновления приложения у конечного пользователя
Подскажите пожалуйста, как исправить код ниже (c# winforms vs2010)Сейчас выдает ошибку "Не удалось загрузить файл Newtonsoft
Нашёл пример как можно по частям собирать linq запросС помощью класса predicateBuilder
Появляется ошибка при запуске ConsoleApp2exe на Debian x86