Форум программистов, компьютерный форум, киберфорум
C#: API, боты
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C# Бот для онлайн игры (Wow, lineage, RF Online и т.д.) https://www.cyberforum.ru/ csharp-api/ thread781027.html
Всем привет! Подскажите можно ли написать бота для онлайн игры в VB Net? Если да то можно ссылку на материал или напишите примерно как это должно выглядеть!
C# Нужна идея как сделать бот-программу
Доброго времени суток!) В голову пришла идея сделать бот-программу, основную часть сделать легко, но вот есть то с чем я еще не сталкивался. Собственно вот, у меня в программе будут id пользователей, которые должны добавляться куда то еще не решил (html сраничка или бд), и соответственно считываться оттуда.. Вот. С бд я никогда не работал, а с HTML я щас придумал метод как доставать оттуда и...
C# Бот для браузерной игры(примеры) https://www.cyberforum.ru/ csharp-api/ thread771757.html
Всем привет, пытался кто-нибудь создать бота для браузерной игры? Я что-то делаю не так, нужны примеры, желательно с комментами)
C# Google Maps API for .net документация https://www.cyberforum.ru/ csharp-api/ thread756439.html
Здравствуйте.Есть ли у кого-то документация по этой бибилиотеке:http://gmaps.codeplex.com/ для работы с GMaps на .Net?На официальном сайте раздел "Documentation" пуст.
C# Создать программу-бот для имитации диалога с пользователем
Всм привет!помогите пожалуйста Создать программу-бот для имитации диалога. Использовать анализ слов заданного вопроса.
C# Нужны исходники бота, решающего "Сапера" Доброго времени суток. Интересует вопрос программного решения игры сапер. Мб кто нибудь знает, или встречал где исходные кода "бота для сапера", пожалуйста поделитесь=) https://www.cyberforum.ru/ csharp-api/ thread719722.html
C# Google API: как загрузить карту и отобразить на форме Мир вам добрые люди. К вам такой вопрос, как подключить карту на форму с месностью выбранной из текст бокса, каждый говорит разные вещи не могу толком в етом разобраться. Подскажите кто что может, спасибо за ранее. https://www.cyberforum.ru/ csharp-api/ thread717932.html Как научить бота, работающего на сайте автоматически сохранять файлы C#
Я написал бота который регится и кликает на кнопку "сохранить" на сайте. Проблема в том что кнопка вызывает "сохранить как" для текстового файла, а мне надо чтобы сохранение тоже происходило автоматически(не важно куда). Вопрос:возможно-ли управлять окошком "сохранить как" (название окошка "загрузка файла") чтобы получить автоматическое сохранение файла!(бот написан на C# доступа к коду сайта...
C# VK API: можно ли при получении сообщения сразу получать об этом уведомление https://www.cyberforum.ru/ csharp-api/ thread699083.html
Возможно ли при получении сообщения сразу получать об этом уведомление или необходимо постоянно отправлять запрос на проверку наличия новых сообщений? Добавлено через 20 часов 22 минуты подключение к LongPoll серверу позволяет. Тут можно найти
C# Технологии по разработке бота для игры. Нужны примеры Хочеться узнать на эту тему по подробней. Например WoW, эту игру знают все, и на нее существует много ботов например "Nemo!Bot" - это бот для рыбалки. Мне хотелось бы узнать какими технологиями в C# можно создать такое чудо. Я думаю тут может помочь WinApi - чтения памяти процесса и тд. Возможно это какой то поиск по цвету пикселей экрана, или же разработка отдельного клинского приложения... https://www.cyberforum.ru/ csharp-api/ thread681796.html
C# Как писать бота, который решает игру "сапер"
Такая ситуация: допустим хочу писать бота, который решает игру сапер. Как задавать нажатие левой кнопкой мыши по определенному месту екрана(или может точнее формы приложения)? И в какую тут сторону копать(это случайно не WinApi?)
C# Как отобразить обычный круглый шнурок для ботинок в 3D Программа должна отображать кусочек шнурка в 3Д , причем он состоит из 16 нитей, которые меняют цвет по инициативе пользователя, а в центре резинка, пришел к выводу что для меня это очень сложно, был вариант сделать массив точек и по ним рисовать - придется обрабатывать слишком большой объем информации ,использовать фреймворк XNA - нет времени учить, создать 3Д модель и просто налаживать текстуру... https://www.cyberforum.ru/ csharp-api/ thread676944.html
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
0

Быстрая эмуляция нажатия клавиш в боте для браузерки - C# - Ответ 4134082

14.02.2013, 19:20. Показов 9187. Ответов 42
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Пишу бота для браузерных танчиков.Прицеливание работает по принципу:через BitBlt копируется нужное окно в память, там ищутся группы пикселей определенного цвета(цвет имени врага), и если таковые найдены, нужно жать определенную кнопку(z или x) до тех пор, пока разница по абсциссе между центром имени противника и центром своих жизней(по ним определяется направление пушки), не станет меньше определенного числа(25 пикселей в данном случае). Эмуляцию нажатия клавиш реализую через PostMessage, ибо работать должно в неактивном окне. Все вроде пашет, но загвоздка в том, что пушка нередко "проезжает" цель, и начинается вертеться перед ней туда-сюда, то бишь PostMessage об отпускании клавиши не доходит вовремя. Сам алгоритм определения, когда надо остановиться, в ряд ли может быть неверным, ибо 100 раз проверен и в целом работает(то есть останавливается вовремя в тех случаях, когда пушка вертится медленнее обычного, либо просто удачно повернулась). Сообщения, которые я посылаю, полностью соответствуют аналогичным при реальном нажатии клавиш(через Spy++ проверялось). Кроме того при попытке эмулировать через keybd_event получилось ровно то же самое. Чего только не пробовал-и задержки разные, и сообщения, все то же самое. Скачал виртуальную клавиатуру-при попытке управлять с нее все работает нормально, то есть теоретически такая эмуляция возможна. Сразу скажу, что производительность при обработке изображения тут не причем, FPS достаточный, чтобы несколько кадров попало в положение, когда надо остановиться. На данный момент прога работает с гугл хромом, там проще однозначно достать хэндл нужного окна. Часть кода прилагается, желающим могу скинуть заготовку проги в личку. Жду ваших предположений, как это устранить, я пока что в тупике( но выход ищу. Заранее благодарен. Рабочие способы реализовать такое на других языках и по другим принципам тоже буду рассматривать, ибо делаю чисто ради развлечения и саморазвития, никуда не спешу. Эти куски кода миллион раз переписывались, на мелкие несуразности можете не обращать внимание, главное-указанный выше вопрос.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
        [DllImport("USER32.DLL", EntryPoint = "PostMessageW", SetLastError = true,
                     CharSet = CharSet.Unicode, ExactSpelling = true,
                     CallingConvention = CallingConvention.StdCall)]
        public static extern bool PostMessage(int hwnd, int Msg, int wParam, int lParam);
 
        public static bool e5 = false;
        public static bool e6 = false;
        public static bool e4 = false;
        public static bool in5 = true;
        public static bool in6 = true;
        public static bool in4 = true;
        public static System.Timers.Timer t4 = new System.Timers.Timer(60);
        public static System.Timers.Timer t5 = new System.Timers.Timer(60);
        public static System.Timers.Timer t6 = new System.Timers.Timer(60);
 public static  void t4_Tick(object source, ElapsedEventArgs e)
{
   try
        {
    if (e4)
    {
            if (!in4)
            {
                int virtual_code = MapVirtualKey(0x11, 1);
                int lp = 0x11 << 16 | 1;
                PostMessage((int)win3, WM_KEYDOWN, virtual_code, lp);
                in4 = true;
            }
            else
            {
                int virtual_code = MapVirtualKey(0x11, 1);
                int lp = 0x11 << 16 | 1 << 30 | 1;
                PostMessage((int)win3, WM_KEYDOWN, virtual_code, lp);
            }
 
 
    }
    else
    {
        if (in4)
        {
            int virtual_code = MapVirtualKey(0x11, 1);
            int lp = 1 << 31 | 1 << 30 | 0x11 << 16 | 1;
            PostMessage((int)win3, WM_KEYUP, virtual_code, lp);
            in4 = false;
        }
    }
        }
             catch { }
}
 
public static void t5_Tick(object source, ElapsedEventArgs e)
{        try
        {
    if (e5)
    {
 
            if (!in5)
            {
                int virtual_code = MapVirtualKey(0x2D, 1);
                int lp = 0x2D << 16 | 1;
                PostMessage((int)win3, WM_KEYDOWN, virtual_code, lp);
                in5 = true;
            }
            else
            {
                int virtual_code = MapVirtualKey(0x2D, 1);
                int lp = 0x2D << 16 | 1 << 30 | 1;
                PostMessage((int)win3, WM_KEYDOWN, virtual_code, lp);
            }
        }
    else
    {
        if (in5)
        {
            int virtual_code = MapVirtualKey(0x2D, 1);
            int lp = 1 << 31 | 1 << 30 | 0x2D << 16 | 1;
            PostMessage((int)win3, WM_KEYUP, virtual_code, lp);
            in5 = false;
        }
    }
        }
catch { }
}
 
public static void t6_Tick(object source, ElapsedEventArgs e)
{        try
        {
    if (e6)
    {
 
            if (!in6)
            {
                int virtual_code = MapVirtualKey(0x2C, 1);
                int lp = 0x2C << 16 | 1;
                PostMessage((int)win3, WM_KEYDOWN, virtual_code, lp);
                in6 = true;
            }
            else
            {
                int virtual_code = MapVirtualKey(0x2C, 1);
                int lp = 0x2C << 16 | 1 << 30 | 1;
                PostMessage((int)win3, WM_KEYDOWN, virtual_code, lp);
            }
        }
    else
    {
        if (in6)
        {
            int virtual_code = MapVirtualKey(0x2C, 1);
            int lp = 1 << 31 | 1 << 30 | 0x2C << 16 | 1;
            PostMessage((int)win3, WM_KEYUP, virtual_code, lp);
            in6 = false;
        }
    }
        }
catch { }
}
 
 
   private void threader() {
            t4.Elapsed += new ElapsedEventHandler(t4_Tick);
            t5.Elapsed += new ElapsedEventHandler(t5_Tick);
            t6.Elapsed += new ElapsedEventHandler(t6_Tick);
            t4.Interval = 100;
            t5.Interval = 100;
            t6.Interval = 100;
            t4.Enabled = true;
            t5.Enabled = true;
            t6.Enabled = true;
        while (true)
        {
            try
            {
                mozgi();
            }
            catch { }
        }
        }
 
        private void mozgi()
        {
//тут делается снимок окна и находится minraznica.X = модуль разницы абсциссы между 
//центром имени врага и центром своей пушки. Корректно, проверено. А так же
//переменная pravo, определяющая сторону, с которой находится враг.
//enemynamesectorREAL это массив точек цвета имени врага.
                        if (enemynamesectorREAL.Count > 0 && e4)
                        {
                            e4 = false;
                        }
 
                        if (enemynamesectorREAL.Count > 0 && minraznica.X > 25 && (!(e5 || e6)))
                        {
                            if (pravo)
                            {
                                e5 = true;
                            }
 
                            else
                            {
                                e6 = true;
                            }
                        }
 
                        if ((pravo && e5) || (!pravo && e6) || enemynamesectorREAL.Count == 0 || minraznica.X <= 25)
                        {
                            bull = false;
                        }
                        else { bull = true; }
 
                        if ((minraznica.X <= 25 || bull) && (e5 || e6) && enemynamesectorREAL.Count != 0)
                        {
                            if (e5)
                            {
                                e5 = false;
                                int virtual_code = MapVirtualKey(0x2D, 1);
                                int lp = 1 << 31 | 0 << 30 | 0x2D << 16 | 1;
                                PostMessage((int)win3, WM_KEYUP, virtual_code, lp);
                                {
                                    notbuisy = false;
                                }
                            }
                            if (e6)
                            {
                                e6 = false;
                                int virtual_code = MapVirtualKey(0x2C, 1);
                                int lp = 1 << 31 | 1 << 30 | 0x2C << 16 | 1;
                                PostMessage((int)win3, WM_KEYUP, virtual_code, lp);
                                {
                                    notbuisy = false;
                                }
                            }
                        }
                    }
                    else { }
 
                        if ((enemynamesectorREAL.Count == 0 && !notbuisy) || (mls == 0 && !notbuisy))
                        {
                            if (e5 || e6)
                            {
                                notbuisy = true;
                            }
                            else
                            {
                                Random rand = new Random();
                                switch (rand.Next(1))
                                {
                                    case 0: 
                                        e5 = true;
                                        notbuisy = true;
                                        break;
                                    case 1: 
                                        e6 = true;
                                        notbuisy = true;
                                        break;
                                }
                            }
                        }
                        if ((enemynamesectorREAL.Count == 0 && !e4) || (mls == 0 && !e4))
                        {
                            e4 = true;
                        }
 
//тут можно вывести обрабатываемый битмап на экран с пометками, что удобно при отладке.
 
                    mem.Dispose();
                    
        }


Вернуться к обсуждению:
Быстрая эмуляция нажатия клавиш в боте для браузерки C#
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.02.2013, 19:20
Готовые ответы и решения:

Эмуляция нажатия клавиш для SDL
Столкнулся с такой проблемой что на эмуляцию нажатия клавиш, SDL не реагирует. Точнее DOSBox....

Эмуляция нажатия клавиш для неактивного/свёрнутого приложения.
Есть большое желание написать что-то наподобии программы-макроса, которая будет отправлять или...

Эмуляция нажатия клавиш для другого приложения (Win10 Под D3D) не работает
Добрый день! У меня такая трабла возникла. Нужно В игре под директ3Д зажать правую кнопку мышки на...

Перехватчик клавиш + эмуляция нажатия клавиш
Здравствуйте! Срочно нужна помощь! Моя программа работает в фоновом режиме. Мне нужно: 1) чтобы...

42
14.02.2013, 19:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.02.2013, 19:20
Помогаю со студенческими работами здесь

Эмуляция нажатия клавиш.
Программа заключается в том, чтоб был постоянно повторяющийся цикл(по моему так) раз в пол...

Эмуляция нажатия клавиш
здрасте.мне нужно проэмулировать нажатие кнопок мыши и нажатий клавиш в неактивном окне(конкретно в...

Эмуляция нажатия клавиш
Всем привет! Помогите написать простенькую программу. Что должна делать? Вводим число в Edit (в...

Эмуляция нажатия клавиш
помогите с кодом разобраться, не работает( Var PWD, Login : String; procedure...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru