Помогите с кодом С#, AutoIt

Kolokol1

Client
Регистрация
08.06.2018
Сообщения
38
Благодарностей
7
Баллы
8
Для клика мышью все просто:
Код:
AutoItX.MouseClick("LEFT", 847, 527, 1);
А как использовать функцию создания скриншотов?
http://autoit-script.ru/autoit3_docs/libfunctions/_screencapture_saveimage.htm

Код:
#include <ScreenCapture.au3>
_ScreenCapture_SaveImage($sFileName, $hBitmap [, $fFreeBmp = True])
Предполагаю, что нужно импортировать какие то dll файлы для libfunctions ?
Если кто делал, напишите пожалуйста образец.
 

SteveJobs

Client
Регистрация
03.11.2016
Сообщения
283
Благодарностей
30
Баллы
28
Для клика мышью все просто:
Код:
AutoItX.MouseClick("LEFT", 847, 527, 1);
А как использовать функцию создания скриншотов?
http://autoit-script.ru/autoit3_docs/libfunctions/_screencapture_saveimage.htm

Код:
#include <ScreenCapture.au3>
_ScreenCapture_SaveImage($sFileName, $hBitmap [, $fFreeBmp = True])
Предполагаю, что нужно импортировать какие то dll файлы для libfunctions ?
Если кто делал, напишите пожалуйста образец.
Попробуй так

Код:
Bitmap bitmap = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);

  Graphics graphics = Graphics.FromImage(bitmap as Image);

  graphics.CopyFromScreen(0, 0, 0, 0, bitmap.Size);

  bitmap.Save(project.Variables["path"].Value, ImageFormat.Jpeg); //путь куда сохранить скриншот
 

Kolokol1

Client
Регистрация
08.06.2018
Сообщения
38
Благодарностей
7
Баллы
8
Попробуй так

Код:
Bitmap bitmap = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);

  Graphics graphics = Graphics.FromImage(bitmap as Image);

  graphics.CopyFromScreen(0, 0, 0, 0, bitmap.Size);

  bitmap.Save(project.Variables["path"].Value, ImageFormat.Jpeg); //путь куда сохранить скриншот
Спасибо за ответ. Этот код, и все что в топ 10 гугла по запросу take screen c# выдает ошибку "имя ImageFormat отсутствует в текущем контексте".

Гугление по данному форуму https://zennolab.com/discussion/search/10920752/?q=save+screenshot&o=date тоже не помогло.

Я так понимаю в AutoIt это уже все написано вплоть до готовых переменных. Остается только понять, как инклудить:
Код:
#include <ScreenCapture.au3>
_ScreenCapture_SaveImage($sFileName, $hBitmap [, $fFreeBmp = True])
В зенку.


Пошустрил гугл. Пишут что в коде c# юзать функции screencapture от Autoit и тд похоже не получится
 
Последнее редактирование:

SteveJobs

Client
Регистрация
03.11.2016
Сообщения
283
Благодарностей
30
Баллы
28
Спасибо за ответ. Этот код, и все что в топ 10 гугла по запросу take screen c# выдает ошибку "имя ImageFormat отсутствует в текущем контексте".

Гугление по данному форуму https://zennolab.com/discussion/search/10920752/?q=save+screenshot&o=date тоже не помогло.

Я так понимаю в AutoIt это уже все написано вплоть до готовых переменных. Остается только понять, как инклудить:
Код:
#include <ScreenCapture.au3>
_ScreenCapture_SaveImage($sFileName, $hBitmap [, $fFreeBmp = True])
В зенку.


Пошустрил гугл. Пишут что в коде c# юзать функции screencapture от Autoit и тд похоже не получится
Добавь в using для того кода, что я тебе скинул

Код:
using System.Drawing;
using System.Drawing.Imaging;
using System.Windows.Forms;
 
  • Спасибо
Реакции: Kolokol1

Kolokol1

Client
Регистрация
08.06.2018
Сообщения
38
Благодарностей
7
Баллы
8
Добавь в using для того кода, что я тебе скинул

Код:
using System.Drawing;
using System.Drawing.Imaging;
using System.Windows.Forms;
Спасибо! Работает.
Единственное не соображу, почему с переменной project.Variables["path"].Value не работает. Прописал в настройках {-Project.Directory-}\test.jpg.
Если прописать C:\\test.jpg, все сохраняет. Если прописать {-Project.Directory-}\test.jpg или {-Project.Directory-}\\test.jpg то уже не работает
 

SteveJobs

Client
Регистрация
03.11.2016
Сообщения
283
Благодарностей
30
Баллы
28
Спасибо! Работает.
Единственное не соображу, почему с переменной project.Variables["path"].Value не работает. Прописал в настройках {-Project.Directory-}\test.jpg.
Если прописать C:\\test.jpg, все сохраняет. Если прописать {-Project.Directory-}\test.jpg или {-Project.Directory-}\\test.jpg то уже не работает
Вместо "\" пиши всегда "\\" и в c# вроде не работает такая конструкция {-Project.Directory-}, просто сделай кубик "Обработка переменных", который сохраняет путь в переменную и потом добавь туда её
 
Последнее редактирование:
  • Спасибо
Реакции: Kolokol1

Kolokol1

Client
Регистрация
08.06.2018
Сообщения
38
Благодарностей
7
Баллы
8
Вместо "\" пиши всегда "\\" и в c# вроде не работает такая конструкция {-Project.Directory-}, просто сделай кубик "Обработка переменных", который сохраняет путь в переменную и потом добавь туда её
Спасибо!
Сейчас пытаюсь найти решение. Нужно вычислить координаты кликаемой кнопки программы. Часа два читал про opencv, там есть поиск по шаблону. Грубо говоря, задаем паттерн изображение кнопки и opencv ищет на скриншоте. Решения чтоб прям вставить в зенку и все заработало не нашел.
Параллельно посмотрел https://zennolab.com/discussion/threads/s-zennoposter-tesseract-net-sdk.26559/ Распознавание совсем не то что нужно. Кнопка каждый раз в разном месте выходит, мне нужно всего лишь определить координаты и дальше передать кликеру данные. Не встречали случайно решения? Наверное я не первый кто на зенке пытается сделать кликер с распознаванием/поиском по шаблону. Буду рад любой помощи.
 

VladimirM

Client
Регистрация
20.09.2018
Сообщения
7
Благодарностей
3
Баллы
3
Здравствуйте!

У меня проблема, только с функцией _ScreenCapture_Capture
Мне нужно сделать скриншот определенной области экрана и сохранить в файл.

Пробовал добавлять в using:
  1. using System.Drawing;
  2. using System.Drawing.Imaging;
  3. using System.Windows.Forms;

Добавляю c# код AutoItX._ScreenCapture_Capture("C:\\1.jpg", 0, 0, 796, 596), но отказывает работать и сохранять скриншот области.
При попытке запуска - Компиляция кода Ошибка в действии "CS0117" ""AutoIt.AutoItX" не содержит определение для "_ScreenCapture_Capture"". [Строка: 0; Cтолбец: 9]

Подскажите, может нужно еще что то добавить в using или что то я не правильно прописываю в коде. Буду очень признателен.
 

Kolokol1

Client
Регистрация
08.06.2018
Сообщения
38
Благодарностей
7
Баллы
8
Здравствуйте!

У меня проблема, только с функцией _ScreenCapture_Capture
Мне нужно сделать скриншот определенной области экрана и сохранить в файл.

Пробовал добавлять в using:
  1. using System.Drawing;
  2. using System.Drawing.Imaging;
  3. using System.Windows.Forms;

Добавляю c# код AutoItX._ScreenCapture_Capture("C:\\1.jpg", 0, 0, 796, 596), но отказывает работать и сохранять скриншот области.
При попытке запуска - Компиляция кода Ошибка в действии "CS0117" ""AutoIt.AutoItX" не содержит определение для "_ScreenCapture_Capture"". [Строка: 0; Cтолбец: 9]

Подскажите, может нужно еще что то добавить в using или что то я не правильно прописываю в коде. Буду очень признателен.
Функция _ScreenCapture_Capture это чисто фишки AutoIT. А то что вы добавили в using, я думаю что это библиотеки чисто c#.

Проверить какие функции есть, можно написав AutoItX. затем нажать ctrl+ space. Выпадет меню, список доступных функций Autioit. Но функций у него намного больше чем там в списке. Прочитав форум Autoit, я пришел к выводу что AutoIT самостоятельно приложение, они написали пару DLL файлов в виде библиотеки для импорта в другие программы и в другой код , как бонус. И чтобы появились все фишки в зенке от Autoit, я думаю нужно дописывать библиотеку, те самые DLL файлики которые мы закидываем в папку dll.

Ссылка на офф форум https://www.autoitscript.com/forum/topic/159997-screen-capture/

Есть другой вариант https://www.autoitscript.com/autoit3/docs/intro/running.htm реализовать все функции которых нет в dll
 
Последнее редактирование:
  • Спасибо
Реакции: VladimirM

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)