Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сделать так что бы программа сделанная на делфи, работала вес [D7, XP]


Страницы:   1 2

mr1Andersen ©   (2006-10-03 23:47:00) 

Как сделать так что бы программа сделанная на делфи, работала весь час, даже если окно самой программы не активное?


zamtmn   (2006-10-10 22:10:00) [21]

2 mr1Andersen
чувак, ну  ты жеский програмист:)
вон ту кучу if`ов замени чемнить типа этого:
  begin s1; T:=P(inttostr(key)); s2; end;
от этого конечно ничего не изменится, но хоть метлы предлагать небудут:)


Leonid Troyanovsky   (2006-10-10 22:09:00) [22]


> Leonid Troyanovsky ©   (10.10.06 22:07) [18]

> А как насчет [12]?


[14]

Епст. Sorry.

--
Regards, LVT.


Leonid Troyanovsky   (2006-10-10 22:07:00) [23]


> mr1Andersen   (10.10.06 22:03) [17]

> Вы не хотите мне помочь прямо, помогите косвенно дайте текст
> где описывается эта процедура или функция или код, я не
> знаю что это.


А как насчет [12]? Ответ был в [7].
Иначе, мне придется согласиться с [8].

--
Regards, LVT.


mr1Andersen   (2006-10-10 22:03:00) [24]

я понимаю что Вы профи, а я нет, но Конференция "Начинающим"
Для новичков программирования, так что если Вы можете помочь помогите плис. К стати, с <RTFM>SetWindowsHookEx</RTFM> я никогда не встречался, а на английском перечитывать все справочники я не собираюсь, я в английском не селен, если Вы не хотите мне помочь прямо, помогите косвенно дайте текст где описывается эта процедура или функция или код, я не знаю что это.


sniknik   (2006-10-10 21:51:00) [25]

а это случаем не "супер-пупер" клавиатурный шпион? ... видимо замена банальному хуку... отсюда и попытки работы при неактивности своего окна, видимо предполагается, что тогда будет перехват ввода с чужих.

> В обработчике OnIdle нужно писать Done:=False; я написал, а толку 0
и слава Гейтсу что толку нет, если бы сработало то был бы "вылет" проги. т.е. так просто то, что ты хочеш (по сообщениям от телепатора) не делается... сначала надо немного учится... хотя бы минимуму - задавать вопросы. правильно.


Ketmar   (2006-10-10 21:45:00) [26]

>[13] Leonid Troyanovsky(c) 10-Oct-2006, 21:32
>Во всяком случае, вопрошающий, похоже, трудолюбив.
это и пугает... %-)


Leonid Troyanovsky   (2006-10-10 21:34:00) [27]


> mr1Andersen   (10.10.06 21:31) [12]


Только, плиз, без избыточного цитирования.

Заучить: обучаемый, прежде всего, читатель,
а не писатель.

--
Regards, LVT.


Leonid Troyanovsky   (2006-10-10 21:32:00) [28]


> Ketmar ©   (10.10.06 21:28) [10]

> ты [6] видел? бесполезно дальше...


Так на всех метел не хватит.
Во всяком случае, вопрошающий, похоже, трудолюбив.

Как там с обучаемостью - понаблюдаем :)

--
Regards, LVT.


mr1Andersen   (2006-10-10 21:31:00) [29]

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 ExtCtrls, StdCtrls, ShellApi, jpeg, Buttons, AppEvnts;

type
 TForm1 = class(TForm)
   Label1: TLabel;
   Label2: TLabel;
   ApplicationEvents1: TApplicationEvents;
   procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
     Shift: TShiftState; X, Y: Integer);
   procedure FormKeyDown(Sender: TObject; var Key: Word;
     Shift: TShiftState);
   procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 T: String;
 sY,sX: String;

implementation

{$R *.DFM}

function P(r:string): string;
begin
 P:='keybd_event('+r+',0,0,0);'+
    'keybd_event('+r+',0,KEYEVENTF_KEYUP,0);';
end;

procedure s1;
var
fp:TextFile;
begin
AssignFile(fp,'Tera.txt');
Reset(fp);
Append(fp);
end;

procedure s2;
var
fp:TextFile;
begin
 write(fp,T);
 writeln(fp);
CloseFile(fp);
end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
  if key=27 then begin s1; T:=P('27'); s2; end;
if key=112 then begin s1; T:=P('112'); s2; end;
if key=113 then begin s1; T:=P('113'); s2; end;
if key=114 then begin s1; T:=P('114'); s2; end;
if key=115 then begin s1; T:=P('115'); s2; end;
if key=116 then begin s1; T:=P('116'); s2; end;
if key=117 then begin s1; T:=P('117'); s2; end;
if key=118 then begin s1; T:=P('118'); s2; end;
if key=119 then begin s1; T:=P('119'); s2; end;
if key=120 then begin s1; T:=P('120'); s2; end;
if key=121 then begin s1; T:=P('121'); s2; end;
if key=122 then begin s1; T:=P('122'); s2; end;
if key=123 then begin s1; T:=P('123'); s2; end;
if key=44 then begin s1; T:=P('44'); s2; end;
if key=145 then begin s1; T:=P('145'); s2; end;
if key=19 then begin s1; T:=P('19'); s2; end;
  if key=192 then begin s1; T:=P('192'); s2; end;
if key=49 then begin s1; T:=P('49'); s2; end;
if key=50 then begin s1; T:=P('50'); s2; end;
if key=51 then begin s1; T:=P('51'); s2; end;
if key=52 then begin s1; T:=P('52'); s2; end;
if key=53 then begin s1; T:=P('53'); s2; end;
if key=54 then begin s1; T:=P('54'); s2; end;
if key=55 then begin s1; T:=P('55'); s2; end;
if key=56 then begin s1; T:=P('56'); s2; end;
if key=57 then begin s1; T:=P('57'); s2; end;
if key=48 then begin s1; T:=P('48'); s2; end;
if key=189 then begin s1; T:=P('189'); s2; end;
if key=187 then begin s1; T:=P('187'); s2; end;
if key=220 then begin s1; T:=P('220'); s2; end;
if key=8 then begin s1; T:=P('8'); s2; end;
if key=45 then begin s1; T:=P('45'); s2; end;
if key=36 then begin s1; T:=P('36'); s2; end;
if key=33 then begin s1; T:=P('33'); s2; end;
if key=144 then begin s1; T:=P('144'); s2; end;
if key=111 then begin s1; T:=P('111'); s2; end;
if key=106 then begin s1; T:=P('106'); s2; end;
if key=109 then begin s1; T:=P('109'); s2; end;
  if key=9 then begin s1; T:=P('9'); s2; end;
if key=81 then begin s1; T:=P('81'); s2; end;
if key=87 then begin s1; T:=P('87'); s2; end;
if key=69 then begin s1; T:=P('69'); s2; end;
if key=82 then begin s1; T:=P('82'); s2; end;
if key=84 then begin s1; T:=P('84'); s2; end;
if key=89 then begin s1; T:=P('89'); s2; end;
if key=85 then begin s1; T:=P('85'); s2; end;
if key=73 then begin s1; T:=P('73'); s2; end;
if key=79 then begin s1; T:=P('79'); s2; end;
if key=80 then begin s1; T:=P('80'); s2; end;
if key=219 then begin s1; T:=P('219'); s2; end;
if key=221 then begin s1; T:=P('221'); s2; end;
if key=13 then begin s1; T:=P('13'); s2; end;
if key=46 then begin s1; T:=P('46'); s2; end;
if key=35 then begin s1; T:=P('35'); s2; end;
if key=34 then begin s1; T:=P('34'); s2; end;
if key=103 then begin s1; T:=P('103'); s2; end;
if key=104 then begin s1; T:=P('104'); s2; end;
if key=105 then begin s1; T:=P('105'); s2; end;
if key=107 then begin s1; T:=P('107'); s2; end;
  if key=20 then begin s1; T:=P('20'); s2; end;
if key=65 then begin s1; T:=P('65'); s2; end;
if key=83 then begin s1; T:=P('83'); s2; end;
if key=68 then begin s1; T:=P('68'); s2; end;
if key=70 then begin s1; T:=P('70'); s2; end;
if key=71 then begin s1; T:=P('71'); s2; end;
if key=72 then begin s1; T:=P('72'); s2; end;
if key=74 then begin s1; T:=P('74'); s2; end;
if key=75 then begin s1; T:=P('75'); s2; end;
if key=76 then begin s1; T:=P('76'); s2; end;
if key=186 then begin s1; T:=P('186'); s2; end;
if key=222 then begin s1; T:=P('222'); s2; end;
if key=100 then begin s1; T:=P('100'); s2; end;
if key=101 then begin s1; T:=P('101'); s2; end;
if key=102 then begin s1; T:=P('102'); s2; end;
  if key=16 then begin s1; T:=P('16'); s2; end;
 if key=160 then begin s1; T:=P('160'); s2; end;
if key=90 then begin s1; T:=P('90'); s2; end;
if key=88 then begin s1; T:=P('88'); s2; end;
if key=67 then begin s1; T:=P('67'); s2; end;
if key=86 then begin s1; T:=P('86'); s2; end;
if key=66 then begin s1; T:=P('66'); s2; end;
if key=78 then begin s1; T:=P('78'); s2; end;
if key=77 then begin s1; T:=P('77'); s2; end;
if key=188 then begin s1; T:=P('188'); s2; end;
if key=190 then begin s1; T:=P('190'); s2; end;
if key=191 then begin s1; T:=P('191'); s2; end;
 if key=161 then begin s1; T:=P('161'); s2; end;
if key=38 then begin s1; T:=P('38'); s2; end;
if key=97 then begin s1; T:=P('97'); s2; end;
if key=98 then begin s1; T:=P('98'); s2; end;
if key=99 then begin s1; T:=P('99'); s2; end;
  if key=17 then begin s1; T:=P('17'); s2; end;
 if key=162 then begin s1; T:=P('162'); s2; end;
if key=91 then begin s1; T:=P('91'); s2; end;
 if key=18 then begin s1; T:=P('18'); s2; end;
 if key=164 then begin s1; T:=P('164'); s2; end;
if key=32 then begin s1; T:=P('32'); s2; end;
 if key=165 then begin s1; T:=P('165'); s2; end;
if key=92 then begin s1; T:=P('92'); s2; end;
if key=93 then begin s1; T:=P('93'); s2; end;
 if key=163 then begin s1; T:=P('163'); s2; end;
if key=37 then begin s1; T:=P('37'); s2; end;
if key=40 then begin s1; T:=P('40'); s2; end;
if key=39 then begin s1; T:=P('39'); s2; end;
if key=96 then begin s1; T:=P('96'); s2; end;
if key=110 then begin s1; T:=P('110'); s2; end;
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
{Form1.Tag:=1;}
 Str(Y,sY);
 Str(X,sX);
Label1.Caption:=sY;
Label2.Caption:=sX;
if button=mbLeft then begin s1; T:=P('1'); s2; end;
if button=mbRight then begin s1; T:=P('2'); s2; end;
if button=mbMiddle then begin s1; T:=P('4'); s2; end;
end;

procedure TForm1.ApplicationEvents1Idle(Sender: TObject;
 var Done: Boolean);
begin
Done:=false;
end;

end.

В обработчике OnIdle нужно писать Done:=False; я написал, а толку 0


Ketmar   (2006-10-10 21:28:00) [30]

это не уровень начинающих, это уровень дворника.


Ketmar   (2006-10-10 21:28:00) [31]

>[9] Leonid Troyanovsky(c) 10-Oct-2006, 21:25
ты [6] видел? бесполезно дальше...


Leonid Troyanovsky   (2006-10-10 21:25:00) [32]


> ProgRAMmer Dimonych   (04.10.06 00:28) [4]

> Важно!!! В обработчике OnIdle нужно пис_а_ть Done:=False;
> , иначе обработчик будет вызываться только когда в приложение
> приходят сообщения.


RTFM: Delphi help. Application.OnIdle

--
Regards, LVT.


Ketmar   (2006-10-10 21:22:00) [33]

Удалено модератором


Leonid Troyanovsky   (2006-10-10 21:19:00) [34]


> mr1Andersen   (10.10.06 21:15) [6]

> Zeqfreed я не совсем понял твой код <RTFM>SetWindowsHookEx</RTFM>


Читать msdn.microsoft.com до просветления.
В скобках указан ключ для поиска.

--
Regards, LVT.


mr1Andersen   (2006-10-10 21:15:00) [35]

Zeqfreed я не совсем понял твой код <RTFM>SetWindowsHookEx</RTFM>
Что мне нужно сделать чтобы оно заработало находясь не активным?

Программный код рабочий. Нужно создать Tera.txt; на форму поместить Label1, Label2; затем на форме в Events задать процедуру OnKeyDown и OnMouseDown, и запустить

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 ExtCtrls, StdCtrls, ShellApi, jpeg, Buttons;

type
 TForm1 = class(TForm)
   Label1: TLabel;
   Label2: TLabel;
   procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
     Shift: TShiftState; X, Y: Integer);
   procedure FormKeyDown(Sender: TObject; var Key: Word;
     Shift: TShiftState);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 T: String;
 sY,sX: String;

implementation

{$R *.DFM}

function P(r:string): string;
begin
 P:='keybd_event('+r+',0,0,0);'+
    'keybd_event('+r+',0,KEYEVENTF_KEYUP,0);';
end;

procedure s1;
var
fp:TextFile;
begin
AssignFile(fp,'Tera.txt');
Reset(fp);
Append(fp);
end;

procedure s2;
var
fp:TextFile;
begin
 write(fp,T);
 writeln(fp);
CloseFile(fp);
end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
  if key=27 then begin s1; T:=P('27'); s2; end;
if key=112 then begin s1; T:=P('112'); s2; end;
if key=113 then begin s1; T:=P('113'); s2; end;
if key=114 then begin s1; T:=P('114'); s2; end;
if key=115 then begin s1; T:=P('115'); s2; end;
if key=116 then begin s1; T:=P('116'); s2; end;
if key=117 then begin s1; T:=P('117'); s2; end;
if key=118 then begin s1; T:=P('118'); s2; end;
if key=119 then begin s1; T:=P('119'); s2; end;
if key=120 then begin s1; T:=P('120'); s2; end;
if key=121 then begin s1; T:=P('121'); s2; end;
if key=122 then begin s1; T:=P('122'); s2; end;
if key=123 then begin s1; T:=P('123'); s2; end;
if key=44 then begin s1; T:=P('44'); s2; end;
if key=145 then begin s1; T:=P('145'); s2; end;
if key=19 then begin s1; T:=P('19'); s2; end;
  if key=192 then begin s1; T:=P('192'); s2; end;
if key=49 then begin s1; T:=P('49'); s2; end;
if key=50 then begin s1; T:=P('50'); s2; end;
if key=51 then begin s1; T:=P('51'); s2; end;
if key=52 then begin s1; T:=P('52'); s2; end;
if key=53 then begin s1; T:=P('53'); s2; end;
if key=54 then begin s1; T:=P('54'); s2; end;
if key=55 then begin s1; T:=P('55'); s2; end;
if key=56 then begin s1; T:=P('56'); s2; end;
if key=57 then begin s1; T:=P('57'); s2; end;
if key=48 then begin s1; T:=P('48'); s2; end;
if key=189 then begin s1; T:=P('189'); s2; end;
if key=187 then begin s1; T:=P('187'); s2; end;
if key=220 then begin s1; T:=P('220'); s2; end;
if key=8 then begin s1; T:=P('8'); s2; end;
if key=45 then begin s1; T:=P('45'); s2; end;
if key=36 then begin s1; T:=P('36'); s2; end;
if key=33 then begin s1; T:=P('33'); s2; end;
if key=144 then begin s1; T:=P('144'); s2; end;
if key=111 then begin s1; T:=P('111'); s2; end;
if key=106 then begin s1; T:=P('106'); s2; end;
if key=109 then begin s1; T:=P('109'); s2; end;
  if key=9 then begin s1; T:=P('9'); s2; end;
if key=81 then begin s1; T:=P('81'); s2; end;
if key=87 then begin s1; T:=P('87'); s2; end;
if key=69 then begin s1; T:=P('69'); s2; end;
if key=82 then begin s1; T:=P('82'); s2; end;
if key=84 then begin s1; T:=P('84'); s2; end;
if key=89 then begin s1; T:=P('89'); s2; end;
if key=85 then begin s1; T:=P('85'); s2; end;
if key=73 then begin s1; T:=P('73'); s2; end;
if key=79 then begin s1; T:=P('79'); s2; end;
if key=80 then begin s1; T:=P('80'); s2; end;
if key=219 then begin s1; T:=P('219'); s2; end;
if key=221 then begin s1; T:=P('221'); s2; end;
if key=13 then begin s1; T:=P('13'); s2; end;
if key=46 then begin s1; T:=P('46'); s2; end;
if key=35 then begin s1; T:=P('35'); s2; end;
if key=34 then begin s1; T:=P('34'); s2; end;
if key=103 then begin s1; T:=P('103'); s2; end;
if key=104 then begin s1; T:=P('104'); s2; end;
if key=105 then begin s1; T:=P('105'); s2; end;
if key=107 then begin s1; T:=P('107'); s2; end;
  if key=20 then begin s1; T:=P('20'); s2; end;
if key=65 then begin s1; T:=P('65'); s2; end;
if key=83 then begin s1; T:=P('83'); s2; end;
if key=68 then begin s1; T:=P('68'); s2; end;
if key=70 then begin s1; T:=P('70'); s2; end;
if key=71 then begin s1; T:=P('71'); s2; end;
if key=72 then begin s1; T:=P('72'); s2; end;
if key=74 then begin s1; T:=P('74'); s2; end;
if key=75 then begin s1; T:=P('75'); s2; end;
if key=76 then begin s1; T:=P('76'); s2; end;
if key=186 then begin s1; T:=P('186'); s2; end;
if key=222 then begin s1; T:=P('222'); s2; end;
if key=100 then begin s1; T:=P('100'); s2; end;
if key=101 then begin s1; T:=P('101'); s2; end;
if key=102 then begin s1; T:=P('102'); s2; end;
  if key=16 then begin s1; T:=P('16'); s2; end;
 if key=160 then begin s1; T:=P('160'); s2; end;
if key=90 then begin s1; T:=P('90'); s2; end;
if key=88 then begin s1; T:=P('88'); s2; end;
if key=67 then begin s1; T:=P('67'); s2; end;
if key=86 then begin s1; T:=P('86'); s2; end;
if key=66 then begin s1; T:=P('66'); s2; end;
if key=78 then begin s1; T:=P('78'); s2; end;
if key=77 then begin s1; T:=P('77'); s2; end;
if key=188 then begin s1; T:=P('188'); s2; end;
if key=190 then begin s1; T:=P('190'); s2; end;
if key=191 then begin s1; T:=P('191'); s2; end;
 if key=161 then begin s1; T:=P('161'); s2; end;
if key=38 then begin s1; T:=P('38'); s2; end;
if key=97 then begin s1; T:=P('97'); s2; end;
if key=98 then begin s1; T:=P('98'); s2; end;
if key=99 then begin s1; T:=P('99'); s2; end;
  if key=17 then begin s1; T:=P('17'); s2; end;
 if key=162 then begin s1; T:=P('162'); s2; end;
if key=91 then begin s1; T:=P('91'); s2; end;
 if key=18 then begin s1; T:=P('18'); s2; end;
 if key=164 then begin s1; T:=P('164'); s2; end;
if key=32 then begin s1; T:=P('32'); s2; end;
 if key=165 then begin s1; T:=P('165'); s2; end;
if key=92 then begin s1; T:=P('92'); s2; end;
if key=93 then begin s1; T:=P('93'); s2; end;
 if key=163 then begin s1; T:=P('163'); s2; end;
if key=37 then begin s1; T:=P('37'); s2; end;
if key=40 then begin s1; T:=P('40'); s2; end;
if key=39 then begin s1; T:=P('39'); s2; end;
if key=96 then begin s1; T:=P('96'); s2; end;
if key=110 then begin s1; T:=P('110'); s2; end;
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
{Form1.Tag:=1;}
 Str(Y,sY);
 Str(X,sX);
Label1.Caption:=sY;
Label2.Caption:=sX;
if button=mbLeft then begin s1; T:=P('1'); s2; end;
if button=mbRight then begin s1; T:=P('2'); s2; end;
if button=mbMiddle then begin s1; T:=P('4'); s2; end;
end;

end.


Zeqfreed   (2006-10-04 00:31:00) [36]

> [3] mr1Andersen   (04.10.06 00:23)

<RTFM>SetWindowsHookEx</RTFM>


ProgRAMmer Dimonych   (2006-10-04 00:28:00) [37]

В Delphi 7 на закладке Additional есть TApplicationEvents. У него событие OnIdle.

Важно!!! В обработчике OnIdle нужно пис_а_ть Done:=False;, иначе обработчик будет вызываться только когда в приложение приходят сообщения.


mr1Andersen   (2006-10-04 00:23:00) [38]

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


Германн   (2006-10-04 00:00:00) [39]

Плюс к [1]
и до окончания выбранного часа не выходить из программы и не выключать компьютер.


Zeqfreed   (2006-10-03 23:52:00) [40]

Запустить её.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо