можно поподробнее, куда вставить название процесса?
пишет "Элемент "SendMessage" не существует в текущем контексте."
"Элемент "WM_CHAR" не существует в текущем контексте."
+ еще как сделать кликер по координатам, нужно всего 1 нажатие ЛКМ на координаты 1;1?
[DllImport("user32.dll")]
public static extern int FindWindow(string lpClassName,string lpWindowName );
[DllImport("user32.dll")]
public static extern int SendMessage(
int hWnd, // Хендл
uint Msg, // Сообщение
int wParam, // Первый параметр
int lParam // Второй параметр
);
Код:
int HendlW = FindWindow(null, "notepad++");
int result = SendMessage(HendlW, 0x31, 0x32, 0);
Незнаю будет ли работать или нет... Пробуй..
________________
-Отложи на послезавтра то что можешь сделать сегодня, и тогда у тебя появятся два свободных дня!
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace APBBot
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.KeyPreview = true;
}
[DllImport("user32.dll")]
public static extern int FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll")]
public static extern int SendMessage(
int hWnd, // Хендл
uint Msg, // Сообщение
int wParam, // Первый параметр
int lParam // Второй параметр
);
private void timer1_Tick(object sender, EventArgs e)
{
int HendlW = FindWindow(null, "Notepad++");
int result = SendMessage(HendlW, 0x31, 0x32, 0);
//SendKeys.Send("{Esc}");
//SendKeys.Send("{C}");
//SendKeys.Send("{F}");
//SendKeys.Send("{B}");
//SendKeys.Send("{K}");
}
}
}
Ошибок не выдает, но не работает...
"Notepad++" - это имя окна? пробовал заменить на "new 1 - Notepad++" - не работает...
и еще не понял, где прописать нажатие клавиш "Esc, C, F, B, K"?
Чтобы работало в чужом окне надо передавать wm_SysChar, wm_SysKeyDown, wm_SysKeyUp ну и по аналогии.
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.
Где тут вписать имя процесса и нажатие клавиш "Esc", "K", "W", "B"?
Хах, тебе нужно их виртуальный код вписать
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.
Для начала не плохо, но некоторые игры таким "методом" не проведёшь.
Это обходится банальным разбиение на массив строки и отправки нажатие клавиши в процесс:
Объявляем
Код:
[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)
{
}
}
}
[Ссылки могут видеть только зарегистрированные пользователи. ]
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.
Ошибок нет, но не работает...
Прописал в 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)
{
}
}
}