Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 14.07.2011, 21:15
unity unity вне форума
Прохожий
 
Регистрация: 14.07.2011
Сообщения: 43
Репутация: -2279
По умолчанию создание программы

помогите пожалуста
хочу написать прогу в delphi 7
а как незнаю в школе учили тока в паскале абс=)

вот это полу паскаляСловестный код программы:
Код:
program unity
var
c,n:real;
r:integer;
begin
тут код праграмки которая узнаёт цвет пикселя который
находиться под курсором мышки в момент нажатия и записыват код цвета
в переменную: с;
r:=1;
while r=1 do  //если верно то цикл делаеться, сделал так чтоб программа работала всегда
 while n=c do // будет ждать пока неизмениться цвет пикселя
  begin
  тут код програмы который узнаёт какой щас цвет у того пикселя (на который раньше
  кликнули мышкой) и записывает в переменную: n;
  end;
  while n<>c do //когда цвет пикселя изменился будет жать до тех пор пока он нестанет такимже
  begin
  тут код програмы который узнаёт какой щас цвет у того пикселя (на который раньше
  кликнули мышкой) и записывает в переменную: n;
  тут код програмки которая жмёт на кнопку (например на F1)
  end;
 end;
end.

вот описание программы которая мне нужна:
программы жмёт на какуюто кнопку(например F1) (желательно чтоб эту кнопку можно было выбрать в окне программы , но можно и даже лучше чтоб жала то что праписано в её коде (так я быстрей мб пойму что там и кчему)) жмёт до тех пор пока у задоного пикселя цвет изменён (т.е
цвет пикселя отличаеться от того цвета который бал раньше)
как тока цвет стал такойже програма перестаёт жать до тех пор пока цвет неизмениться сново

желательно поподробней объяснить как такое сделать в delphi
зарание спасибо
Ответить с цитированием
  #2  
Старый 15.07.2011, 00:08
unity unity вне форума
Прохожий
 
Регистрация: 14.07.2011
Сообщения: 43
Репутация: -2279
По умолчанию

выложите кто хотябы какой нить исходник кликера,
самого простого например который жмёт тока клавишу
"м" с интервалом в 1 секу я там посмотрю мб разбирусь
(желательно чтоб с каментариями было)

вот понял что для эмуляции нажатия иотпускания надо юзать SimulateKeystroke()
тока как это всё оформлять

Последний раз редактировалось unity, 15.07.2011 в 00:10.
Ответить с цитированием
  #3  
Старый 15.07.2011, 00:32
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Эх, если бы всё выше изложенное да на более понятном русском языке, то и помочь было бы легче.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #4  
Старый 15.07.2011, 00:43
unity unity вне форума
Прохожий
 
Регистрация: 14.07.2011
Сообщения: 43
Репутация: -2279
По умолчанию

дайте код кликера на delphi
самого простого который просто жмёт одну кнопку (например кнопку F3) с интервалом в 1 секунду

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

мне тут писали:
Код:
procedure SimulateKeyDown(Key : byte); 
begin 
 keybd_event(Key, 0, 0, 0); 
end; 

procedure SimulateKeyUp(Key : byte); 
begin 
 keybd_event(Key, 0, KEYEVENTF_KEYUP, 0); 
end; 


я вставил в delphi 7 и нечё у мя незаработало
мне надо посатреть хоть как там что оформлять
Ответить с цитированием
  #5  
Старый 15.07.2011, 00:48
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Дали процедуры, а кто их будет вызывать? Вызывай их хотя бы по таймеру.
P.S. Даже в таком случае визуального результата видно не будет.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #6  
Старый 15.07.2011, 00:52
unity unity вне форума
Прохожий
 
Регистрация: 14.07.2011
Сообщения: 43
Репутация: -2279
По умолчанию

во у мя когда открываеш delphi такой код по умолчанию:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

end.

вопрос куда мне эти процедуры пихать?

какя вобще структура кода должна быть?
Ответить с цитированием
  #7  
Старый 15.07.2011, 00:58
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Цитата:
Сообщение от unity
во у мя когда открываеш delphi такой код по умолчанию:
Так, но это ничего не даст, эти процедуры никто не вызывает.
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
   procedure SimulateKeyDown(Key : byte); 
   procedure SimulateKeyUp(Key : byte); 
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.SimulateKeyDown(Key : byte); 
begin 
 keybd_event(Key, 0, 0, 0); 
end; 

procedure TForm1.SimulateKeyUp(Key : byte); 
begin 
 keybd_event(Key, 0, KEYEVENTF_KEYUP, 0); 
end; 

end.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #8  
Старый 15.07.2011, 01:08
unity unity вне форума
Прохожий
 
Регистрация: 14.07.2011
Сообщения: 43
Репутация: -2279
По умолчанию

а как их вазвать например чтоб при нажатии кнопки оно
стало исполняться что надо прописать?

ат чё тут тупо капировать и вставлять перед end. чтоб чтото добавить
в код?
Ответить с цитированием
  #9  
Старый 15.07.2011, 01:14
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Unity, Админ закрой глаза, не выпендривайся и пиши нормально, тем более по стилю видно, что с русским языком знаком.
Цитата:
а как их вазвать например
эти процедуры вообще пустышки - ничего не делают кроме нажатия заказной клавиши. Там где выдернул этот код, забери всё остальное или чётко, по-пунктам укажи, что хочешь получить.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #10  
Старый 15.07.2011, 02:42
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Да надо ему какую-то кнопку нажимать в какой-нить игре.
Признак - покуда цвет пиксела под курсором (скорее, в какой-то точке экрана) не изметиться.
Ответить с цитированием
  #11  
Старый 15.07.2011, 10:39
Аватар для AND_REY
AND_REY AND_REY вне форума
Активный
 
Регистрация: 31.03.2009
Адрес: Украина, г.Днепропетровск
Сообщения: 324
Версия Delphi: Delphi7
Репутация: 3877
По умолчанию

Открываем delphi, кидаем на форму Button из вкладки стандарт, кликаем двойной щелчёк мыши по кнопке. Появится процедура в неё вставляем код:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
 Sleep(3000);                                               // ждём 3 сек.
 keybd_event(VK_F1, 0, 0, 0);                         //нажимаем F1
 keybd_event(VK_F1, 0, KEYEVENTF_KEYUP, 0); // отпускаем F1
end;
Запускаем прогу, нажимаем на кнопку и через 3 сек прога нажмёт F1.
Как проверить нажатие F1 думаю догадаетесь.
Для второго вопроса: получение цвета пикселя, надо изучить основы Delphi (Canvas, пару API ф-нц). Код конечно можно скинуть но вряд ли вы чтото там поймёте.
И цвет с: TColor; а не Real;
__________________
If end Then begin;

Последний раз редактировалось AND_REY, 15.07.2011 в 10:41.
Ответить с цитированием
  #12  
Старый 15.07.2011, 11:15
Аватар для Viajero
Viajero Viajero вне форума
Активный
 
Регистрация: 14.06.2011
Адрес: РБ
Сообщения: 214
Версия Delphi: Delphi 7 FB 2.5
Репутация: 5849
По умолчанию

Цитата:
а как их вазвать например чтоб при нажатии кнопки оно
стало исполняться что надо прописать?

В паскале ABC нет VCL, а в Delphi всё не нём основано, и без знаний хотя бы основ оного, трудно написать даже простейшую программу.
Цитата:
Сообщение от AND_REY
Открываем delphi, кидаем на форму Button
Человек ,видимо, не знает как кнопку кинуть.

Последний раз редактировалось Viajero, 15.07.2011 в 11:18.
Ответить с цитированием
  #13  
Старый 15.07.2011, 12:52
unity unity вне форума
Прохожий
 
Регистрация: 14.07.2011
Сообщения: 43
Репутация: -2279
По умолчанию

Цитата:
Сообщение от AND_REY
Открываем delphi, кидаем на форму Button из вкладки стандарт, кликаем двойной щелчёк мыши по кнопке. Появится процедура в неё вставляем код:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
 Sleep(3000);                                               // ждём 3 сек.
 keybd_event(VK_F1, 0, 0, 0);                         //нажимаем F1
 keybd_event(VK_F1, 0, KEYEVENTF_KEYUP, 0); // отпускаем F1
end;
Запускаем прогу, нажимаем на кнопку и через 3 сек прога нажмёт F1.
Как проверить нажатие F1 думаю догадаетесь.
Для второго вопроса: получение цвета пикселя, надо изучить основы Delphi (Canvas, пару API ф-нц). Код конечно можно скинуть но вряд ли вы чтото там поймёте.
И цвет с: TColor; а не Real;

спс получилось

ну я стал улучшать программу сделал так:
Код:
procedure TForm1.btn1Click(Sender: TObject);
begin
  while 1=1 do
  begin
Sleep(3000);                                               // ждём 3 сек.
 keybd_event(VK_F1, 0, 0, 0);                         //нажимаем F1
 keybd_event(VK_F1, 0, KEYEVENTF_KEYUP, 0); // отпускаем F1
 end;
end;

end.
терь она жмёт всегда после нажатия на кнопку с задержкой в 3 секи
вапрос как сделать кнопку стоп?

(я вот думал вписать в кнопку чтото чтоб пресваивало k значение не 1 , а тут сделать не while 1=1 do а while k=1 do тока я незнаю как тут это сделать (как тут переменую добовлять))

так чёто пытался делать вот :
Код:
unit ststop;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons;

type
  TForm1 = class(TForm)
    start: TBitBtn;
    stop: TBitBtn;
    procedure startClick(Sender: TObject);
    procedure stopClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.startClick(Sender: TObject);
var
  k:Integer;
  begin
    k:=1;
  while k=1 do
  begin
Sleep(3000);                                               // ждём 3 сек.
 keybd_event(VK_F1, 0, 0, 0);                         //нажимаем F1
 keybd_event(VK_F1, 0, KEYEVENTF_KEYUP, 0); // отпускаем F1
 end;
end;

procedure TForm1.stopClick(Sender: TObject);
var
  k:integer;
begin
k:=k+1;
end;

end.

тока после того как нажму старт прога зависает (она кликает но стоп нажать нельзя и в деспетчере задач пишет что программа неотвечает)

Последний раз редактировалось unity, 15.07.2011 в 14:10.
Ответить с цитированием
  #14  
Старый 15.07.2011, 14:26
Аватар для AND_REY
AND_REY AND_REY вне форума
Активный
 
Регистрация: 31.03.2009
Адрес: Украина, г.Днепропетровск
Сообщения: 324
Версия Delphi: Delphi7
Репутация: 3877
По умолчанию

Вкладка System компонент Timer добавь
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
 keybd_event(VK_F1, 0, 0, 0); // нажатие
 keybd_event(VK_F1, 0, KEYEVENTF_KEYUP, 0); // отпускание
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 Timer1.Interval:= 3000; // интервал
 Timer1.Enabled:= Not(Timer1.Enabled); // вкл / выкл
end;
__________________
If end Then begin;
Ответить с цитированием
  #15  
Старый 15.07.2011, 14:56
unity unity вне форума
Прохожий
 
Регистрация: 14.07.2011
Сообщения: 43
Репутация: -2279
По умолчанию

Цитата:
Сообщение от AND_REY
Вкладка System компонент Timer добавь
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
 keybd_event(VK_F1, 0, 0, 0); // нажатие
 keybd_event(VK_F1, 0, KEYEVENTF_KEYUP, 0); // отпускание
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 Timer1.Interval:= 3000; // интервал
 Timer1.Enabled:= Not(Timer1.Enabled); // вкл / выкл
end;

получилось, а что значат эти нули?

как интервал задавать вручную с окна программы?

как вставлять переменные?

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
    tmr1: TTimer;
    btn1: TBitBtn;
    procedure tmr1Timer(Sender: TObject);
    procedure btn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  d:Integer;

implementation

{$R *.dfm}

procedure TForm1.tmr1Timer(Sender: TObject);
begin
keybd_event(VK_F1, 0, 0, 0); // нажатие
 keybd_event(VK_F1, 0, KEYEVENTF_KEYUP, 0); // отпускание
end;


procedure TForm1.btn1Click(Sender: TObject);
begin
  Tmr1.Interval:= d; // интервал
 Tmr1.Enabled:= Not(Tmr1.Enabled); // вкл / выкл
end;

end.

как сделать чтоб в програми можно было изменять значение D (интервала)

Последний раз редактировалось unity, 15.07.2011 в 16:07.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:32.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter