Проблема с запуском

tiptopvkr

Client
Регистрация
26.09.2019
Сообщения
189
Благодарностей
14
Баллы
18
Привет всем. Дело было в Проджект Мейкере 7.1.5.0

Вчера на ПМ работал и накидал кучку кубиков с C# кодом. В основном это работа с эмуляцией мыши. Вчера работал с одним профилем сегодня с другим. Сегодняшний профиль пустой по сути.
В кубиках С# для эмуляции вместо точных значений я применял переменные из проекта. Вручную созданные переменные. Сейчас эти переменные пустые так как сменился профиль.

И теперь собственно проблема: При запуске проекта в ПМ при попытке запустить проект целиком либо любой из кубиков выдает ошибку "Компиляция кода Ошибка в действии "CS0839" "Аргумент пропущен". [Строка: 2; Cтолбец: 63]"

Вчера этой ошибки не было и все работало исправно до самого закрытия проекта.

Но вчера я столкнулся уже с такой проблемой и при помощи метода научного тыка выявил проблему и помогло удаление кубика с C# в котором была ошибка. Сейчас этого делать нельзя.
Попытка заполнить переменные вручную ни к чему не привела.

Подскажите как мне запустить проект и обойти ошибку.
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
тыкс.... меня разбанили походу :-)

ну ты код то приведи из кубика который выдает ошибку. а то знаешь ли ванговать не все умеют :-)
 

tiptopvkr

Client
Регистрация
26.09.2019
Сообщения
189
Благодарностей
14
Баллы
18
тыкс.... меня разбанили походу
Мои поздравления)

Я без понятия какой кубик выдает ошибку) Выше написал текст ошибки.

Прошу отметить что все это вчера отлично работало. И также ошибка появляется при попытке запустить что либо в проекте. От общего запуска до любого кубика отдельно.

Вот текст одного кубика:

HtmlElement he = instance.ActiveTab.GetDocumentByAddress("0").FindElementByAttribute("p", "innertext", project.Variables["move_mouse_to"].Value, "regexp", 0);
if (he.IsVoid) return -1;
instance.ActiveTab.FullEmulationMouseMoveToHtmlElement(he);

Вот второй

HtmlElement he = instance.ActiveTab.GetDocumentByAddress("0").FindElementByAttribute("span", "innertext", project.Variables["move_mouse_to"].Value, "regexp", 0);
if (he.IsVoid) return -1;
instance.ActiveTab.FullEmulationMouseMoveAboveHtmlElement(he, 30);


Вот 3

HtmlElement he = instance.ActiveTab.GetDocumentByAddress("0").FindElementByAttribute("p", "innertext", project.Variables["move_mouse_to"].Value, "regexp", 0);
if (he.IsVoid) return -1;
instance.ActiveTab.FullEmulationMouseMoveAboveHtmlElement(he, {-Variable.duration_of_mouse-});

Вот 4

int count = Convert.ToInt32(project.Variables["num_of_down_press"].Value);

for (int i = 0; i < count; i++)
{
instance.ActiveTab.KeyEvent("Down", "press", "");
System.Threading.Thread.Sleep(500); // пауза
}

Во всех 3-х есть переменные для рандомизаци процесса
 
Последнее редактирование:

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
из всего кода что приведено, только int count = Convert.ToInt32(project.Variables["num_of_down_press"].Value);
может вызвать проблему , но не пропущенный аргумент, а Выполнение действия CSharp OwnCode. Входная строка имела неверный формат.

надо искать проблемный кубик.

а не есть проблема в 3-м коде...
 

tiptopvkr

Client
Регистрация
26.09.2019
Сообщения
189
Благодарностей
14
Баллы
18
2 раза кликаешь по строке в логе с ошибкой и фокус перелетит на проблемный кубик.
Тогда в этом проблема:

HtmlElement he = instance.ActiveTab.GetDocumentByAddress("0").FindElementByAttribute("p", "innertext", project.Variables["move_mouse_to"].Value, "regexp", 0);
if (he.IsVoid) return -1;
instance.ActiveTab.FullEmulationMouseMoveAboveHtmlElement(he, {-Variable.duration_of_mouse-});

Где project.Variables["move_mouse_to"].Value пусто потому что парсер еще не собрал ничего и {-Variable.duration_of_mouse-} тоже так как рандомайзер не назначил необходимое число.

Профиль пустой. Не получается даже запустить проект.
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
{-Variable.duration_of_mouse-} это не правильная запись, так нельзя писать. надо project.Variables["duration_of_mouse"].Value и дополнительно сконвертировать в int
int duration_of_mouse= Convert.ToInt32(project.Variables["duration_of_mouse"].Value); , но при этом duration_of_mouse не должна быть пустой, там должно быть число.
либо вообще убрать эту переменную и в коде FullEmulationMouseMoveAboveHtmlElement указать сразу нужное число
 

tiptopvkr

Client
Регистрация
26.09.2019
Сообщения
189
Благодарностей
14
Баллы
18
Так все дело в том что мне нужно указать рандомное число от и до. Есть возможность указать число по умолчанию для всего проекта если пусто? Не зависимо от того какой профиль работает и что у него в переменной?

Чтобы было сначала по умолчанию а потом бралась инфа с переменной когда заполнится.

Но самое странное то что вчера {-Variable.duration_of_mouse-} работало а project.Variables["duration_of_mouse"] не работало. от чего и поменял на первый вариант.

Попробовал конвертировать выдало ошибку "Компиляция кода Ошибка в действии "CS1503" "Аргумент "2": преобразование типа из "string" в "int" невозможно". [Строка: 3; Cтолбец: 63]"
 

TwistDanceR

Client
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
Попробовал конвертировать выдало ошибку "Компиляция кода Ошибка в действии "CS1503" "Аргумент "2": преобразование типа из "string" в "int" невозможно". [Строка: 3; Cтолбец: 63]"
очевидно же что возвращает строку. пропиши int.Parse(string);
 

tiptopvkr

Client
Регистрация
26.09.2019
Сообщения
189
Благодарностей
14
Баллы
18
Спасибо за совет.
Уточню - для каждого свое очевидно. Я например совсем нулячий в С#. И то что вы порекомендовали сейчас буду вставлять куда попало пока не получится.

А если бы вы показали где интегрировать команду я бы сделал с первого раза и не надоедал вопросами)


Вот попробовал вот так. Ничего не дало. Ошибку выкидывает.

HtmlElement he = instance.ActiveTab.GetDocumentByAddress("0").FindElementByAttribute("p", "innertext", project.Variables["move_mouse_to"].Value, "regexp", 0);
if (he.IsVoid) return -1;
int.Parse(string);
int duration_of_mouse= Convert.ToInt32(project.Variables["duration_of_mouse"].Value);
instance.ActiveTab.FullEmulationMouseMoveAboveHtmlElement(he, project.Variables["duration_of_mouse"].Value);

Текст ошибки:
"Компиляция кода действия id: 6af6e3f3-b983-4184-bc6c-3e40980969bc группы действий id: 15eb226a-d492-4710-a9de-72b3af6490d3 Ошибка в действии "CS1525" "Недопустимый терм "string" в выражении". [Строка: 2; Cтолбец: 17]"
 
Последнее редактирование:

tiptopvkr

Client
Регистрация
26.09.2019
Сообщения
189
Благодарностей
14
Баллы
18
Вопрос остается открытым. Как мне вставить туда переменную?
 

TwistDanceR

Client
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43

tiptopvkr

Client
Регистрация
26.09.2019
Сообщения
189
Благодарностей
14
Баллы
18
Я весь текст кубика приложил... Следовательно 3 сверху "if (he.IsVoid) return -1;" что совсем не понятно потому что тут ошибки нет. Я ее с вики зенно взял.

HtmlElement he = instance.ActiveTab.GetDocumentByAddress("0").FindElementByAttribute("p", "innertext", project.Variables["move_mouse_to"].Value, "regexp", 0);
if (he.IsVoid) return -1;
int.Parse(string);
int duration_of_mouse= Convert.ToInt32(project.Variables["duration_of_mouse"].Value);
instance.ActiveTab.FullEmulationMouseMoveAboveHtmlElement(he, project.Variables["duration_of_mouse"].Value);


project.Variables["duration_of_mouse"].Value если переменную заменить на постоянное число то все работает. Но мне нужен рандом. Вся суть в этом.
 

TwistDanceR

Client
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
если переменную заменить на постоянное число то все работает.
Чиним:

HtmlElement he = instance.ActiveTab.GetDocumentByAddress("0").FindElementByAttribute("p", "innertext", project.Variables["move_mouse_to"].Value, "regexp", 0);
if (he.IsVoid) return -1;
int duration_of_mouse = int.Parse(project.Variables["duration_of_mouse"].Value);
instance.ActiveTab.FullEmulationMouseMoveAboveHtmlElement(he, duration_of_mouse);

Рандом какой нужен?

P.S. Во-первых нумерация идёт с нуля, а во вторых, 1е две строки - это одна строка кода.
 
Последнее редактирование:
  • Спасибо
Реакции: tiptopvkr

tiptopvkr

Client
Регистрация
26.09.2019
Сообщения
189
Благодарностей
14
Баллы
18
Ну в переменной duration_of_mouse уже есть рандомное число. Формируется в стандартном рандомизаторе. Вопрос в том что при запуске проекта эта переменная пустая.

Попробовал вашу конструкцию сначала выдало ошибку. Потом я вручную изменил число в переменной и все заработало. Мистика какая то... И после этого число после рандомизатора тоже работало.

Добавлю что после перезапуска проекта тоже все заработало) Большой спасибо)
 
Последнее редактирование:

TwistDanceR

Client
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
Ну в переменной duration_of_mouse уже есть рандомное число. Формируется в стандартном рандомизаторе. Вопрос в том что при запуске проекта эта переменная пустая.

Попробовал вашу конструкцию сначала выдало ошибку. Потом я вручную изменил число в переменной и все заработало. Мистика какая то... И после этого число после рандомизатора тоже работало.
Отлично. Если нужна рандомизация внутри кубика - напиши :-)
 
  • Спасибо
Реакции: tiptopvkr

tiptopvkr

Client
Регистрация
26.09.2019
Сообщения
189
Благодарностей
14
Баллы
18
Пожалуй воспользуюсь вашим предложением)

Добрался к хаотичному дерганию мышью) Вот код найденный на форуме. Он работает исправно.

//получаем координаты положения мыши (особенно актуально после использования instance.ActiveTab.FullEmulationMouseWheel(0, 120);-)
Point Point1 = instance.ActiveTab.FullEmulationMouseCurrentPosition;
//полученные координаты хранятся в Point1.X и Point1.Y

instance.ActiveTab.FullEmulationMouseMove(Point1.X+150, Point1.Y+150);
//Двигаемся от текущего положения +150 +150


Мне нужно рандомизировать значения +150. Как это сделать в этом случае я не знаю и буду благодарен за помощь.
 

TwistDanceR

Client
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
Пожалуй воспользуюсь вашим предложением)
Мне нужно рандомизировать значения +150. Как это сделать в этом случае я не знаю и буду благодарен за помощь.
C#:
Random rnd = new Random();
Point Point1 = instance.ActiveTab.FullEmulationMouseCurrentPosition;
instance.ActiveTab.FullEmulationMouseMove(Point1.X+rnd.Next(-150,150), Point1.Y+rnd.Next(-150,150));
Если нужно именно +150: поменяй -150 на 0 в обоих скобках после некст.
А так в этом снипете будет гулять и вперед и назад.
 
  • Спасибо
Реакции: tiptopvkr

tiptopvkr

Client
Регистрация
26.09.2019
Сообщения
189
Благодарностей
14
Баллы
18
Нет. Мне нужно например от 100 до 800. Но в целом понял) Я уже начал химичить на основании вашего прошлого примера используя переменные но видимо фигню делал) Сейчас ваш метод попробую)

UPD: Все получилось) Большое спасибо за помощь)
 

TwistDanceR

Client
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
Нет. Мне нужно например от 100 до 800. Но в целом понял) Я уже начал химичить на основании вашего прошлого примера используя переменные но видимо фигню делал) Сейчас ваш метод попробую)
UPD: Все получилось) Большое спасибо за помощь)
Пора собирать лайки)) https://zennolab.com/discussion/threads/posilnaja-pomosch-novichkam.81689/#post-546707
Пожалуйста )
 

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