Скорее всего ты не создал TextBox1 ...
А вообще ты не тот скрин кидаешь...
да это было из-за этого
теперь другая тарабала
как его в .exe файл запихнуть?
пробовал когда сохранял .exe написать сохраняю и вылазиет такая тарабала
[Ссылки могут видеть только зарегистрированные пользователи. ]
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). | Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
да это было из-за этого
теперь другая тарабала
как его в .exe файл запихнуть?
пробовал когда сохранял .exe написать сохраняю и вылазиет такая тарабала
[Ссылки могут видеть только зарегистрированные пользователи. ]
Ты вообще не понимаешь что делать надо... Тебе надо скомпилировать программу, а не просто переименовать файлик...
Для начала не плохо, но некоторые игры таким "методом" не проведёшь.
Это обходится банальным разбиение на массив строки и отправки нажатие клавиши в процесс:
Объявляем
Код:
[DllImport("user32.dll")]
static extern bool PostMessage(IntPtr hWnd, UInt32 Msg, int wParam, int lParam);
const UInt32 CHAR = 0x0102;
Код для того же таймера:
Код:
Process[] processes = Process.GetProcessesByName("l2"); //Имя процесса должно быть без ".exe", процесс должен быть не скрытым.
char[] massiv = textBox1.Text.ToCharArray(); //Разбиваем текст textBox1 на массив
for (int i = 0; i < massiv.Length; i++) //Проходимся циклом
{
PostMessage(processes[0].MainWindowHandle, WM_CHAR, massiv[i],1); //Сама отправка символа.
}
Так же этот метод удобно использовать если вам надо отправлять нажатие клавиш в определённый процесс.
Попробовал сделать так, но пишет:
"Элемент "WM_CHAR" не существует в текущем контексте."
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace APBBot
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.KeyPreview = true;
}
[DllImport("user32.dll")]
static extern bool PostMessage(IntPtr hWnd, UInt32 Msg, int wParam, int lParam);
const UInt32 CHAR = 0x0102;
protected override void OnKeyDown(KeyEventArgs e)
{
base.OnKeyDown(e);
if (e.KeyCode == Keys.Z)
{
timer1.Enabled = true;
label1.Text = "Статус: On";
}
if (e.KeyCode == Keys.X)
{
timer1.Enabled = false;
label1.Text = "Статус: Off";
}
}
private void timer1_Tick(object sender, EventArgs e)
{
Process[] processes = Process.GetProcessesByName("notepad++"); //Имя процесса должно быть без ".exe", процесс должен быть не скрытым.
char[] massiv = textBox1.Text.ToCharArray(); //Разбиваем текст textBox1 на массив
for (int i = 0; i < massiv.Length; i++) //Проходимся циклом
{
PostMessage(processes[0].MainWindowHandle, WM_CHAR, massiv[i], 1); //Сама отправка символа.
}
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
Попробовал сделать так, но пишет:
"Элемент "WM_CHAR" не существует в текущем контексте."
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace APBBot
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.KeyPreview = true;
}
[DllImport("user32.dll")]
static extern bool PostMessage(IntPtr hWnd, UInt32 Msg, int wParam, int lParam);
const UInt32 CHAR = 0x0102;
protected override void OnKeyDown(KeyEventArgs e)
{
base.OnKeyDown(e);
if (e.KeyCode == Keys.Z)
{
timer1.Enabled = true;
label1.Text = "Статус: On";
}
if (e.KeyCode == Keys.X)
{
timer1.Enabled = false;
label1.Text = "Статус: Off";
}
}
private void timer1_Tick(object sender, EventArgs e)
{
Process[] processes = Process.GetProcessesByName("notepad++"); //Имя процесса должно быть без ".exe", процесс должен быть не скрытым.
char[] massiv = textBox1.Text.ToCharArray(); //Разбиваем текст textBox1 на массив
for (int i = 0; i < massiv.Length; i++) //Проходимся циклом
{
PostMessage(processes[0].MainWindowHandle, WM_CHAR, massiv[i], 1); //Сама отправка символа.
}
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
Ошибок нет, но не работает...
Прописал в textBox1 букву K и все равно не отправляет в процесс...
не набирается она в notepad++
Вот код:
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace TestBotAPB
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
[DllImport("user32.dll")]
static extern bool PostMessage(IntPtr hWnd, UInt32 Msg, int wParam, int lParam);
const UInt32 WM_CHAR = 0x0102;
private void button1_Click(object sender, EventArgs e)
{
timer1.Start();
label1.Text = "Status: On";
}
private void button2_Click(object sender, EventArgs e)
{
timer1.Stop();
label1.Text = "Status: Off";
}
private void timer1_Tick(object sender, EventArgs e)
{
Process[] processes = Process.GetProcessesByName("notepad++"); //Имя процесса должно быть без ".exe", процесс должен быть не скрытым.
char[] massiv = textBox1.Text.ToCharArray(); //Разбиваем текст textBox1 на массив
for (int i = 0; i < massiv.Length; i++) //Проходимся циклом
{
PostMessage(processes[0].MainWindowHandle, WM_CHAR, massiv[i], 1); //Сама отправка символа.
}
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
Если я не ошибаюсь, то нужно получить положение элемента в окне(у notepad++ текстовое поле вроде ТабКонтрол) с помощью Spy++... И уже на этот элемент "слать клавиши"....
________________
-Отложи на послезавтра то что можешь сделать сегодня, и тогда у тебя появятся два свободных дня!
Если я не ошибаюсь, то нужно получить положение элемента в окне(у notepad++ текстовое поле вроде ТабКонтрол) с помощью Spy++... И уже на этот элемент "слать клавиши"....
Код:
[DllImport("User32.DLL")]
public static extern int PostMessage(IntPtr hWnd, UInt32 Msg, Int32 wParam, Int32 lParam);
public const Int32 WM_KEYDOWN = 0x0100;
Код:
Process[] processes = Process.GetProcessesByName("APB"); //Имя процесса должно быть без ".exe", процесс должен быть не скрытым.
char[] massiv = textBox1.Text.ToCharArray(); //Разбиваем текст textBox1 на массив
for (int i = 0; i < massiv.Length; i++) //Проходимся циклом
{
PostMessage(processes[0].MainWindowHandle, WM_KEYDOWN, (int)Keys.Esc, 0);
PostMessage(processes[0].MainWindowHandle, WM_KEYDOWN, (int)Keys.K, 0);
PostMessage(processes[0].MainWindowHandle, WM_KEYDOWN, (int)Keys.W, 0);
PostMessage(processes[0].MainWindowHandle, WM_KEYDOWN, (int)Keys.B, 0);
}
Все работает! Enter, K, W, B - все настроил, но нужно сделать еще нажатие Esc, а он не распознается...
+ Как сделать в этот же процесс клик ЛКМ по координатам 1;1?
+ Как сделать в этот же процесс клик ЛКМ по координатам 1;1?
Код:
[DllImport("user32.dll",CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]
public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo);
private const int MOUSEEVENTF_LEFTDOWN = 0x02;
private const int MOUSEEVENTF_LEFTUP = 0x04;
private const int MOUSEEVENTF_RIGHTDOWN = 0x08;
private const int MOUSEEVENTF_RIGHTUP = 0x10;
public void DoMouseClick()
{
int X = Cursor.Position.X;
int Y = Cursor.Position.Y;
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, X, Y, 0, 0);
}
Угадай куда вставить единицы )
PS: с большой вероятностью (1;1) это левый верхний угол екрана. Тебе точно туда?
[DllImport("user32.dll",CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]
public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo);
private const int MOUSEEVENTF_LEFTDOWN = 0x02;
private const int MOUSEEVENTF_LEFTUP = 0x04;
private const int MOUSEEVENTF_RIGHTDOWN = 0x08;
private const int MOUSEEVENTF_RIGHTUP = 0x10;
public void DoMouseClick()
{
int X = Cursor.Position.X;
int Y = Cursor.Position.Y;
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, X, Y, 0, 0);
}
Угадай куда вставить единицы )
PS: с большой вероятностью (1;1) это левый верхний угол екрана. Тебе точно туда?
эмм... убил около 1 часа, так и не нашел... куда вписать координаты?
Последний раз редактировалось XRASER; 28.06.2012 в 13:47.
убил около 1 часа, так и не нашел... куда вписать координаты?
[Ссылки могут видеть только зарегистрированные пользователи. ]
Цитата:
Сообщение от XRASER
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, X, Y, 0, 0);
Угадай, куда вставить...
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).