Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2009, 15:43   #1
orkus
Пользователь
 
Регистрация: 06.12.2008
Сообщений: 34
Стрелка окно "редактору кода" и ToolsAPI

Добрый день )
Проблема есть delphi7 у нее есть окно "редактору кода" (это там где Мы пишем код кто не знал )) )

Нужно написать программу которая в окне "редактору кода" начила писать код который находиться в мемо1 или еще где нибуть )

Мне нужно создать видимость что "Якобы кто то работает в делфи" в нашем случаи просто пишет код в определенной процедуре и всё как он напишет эту процедуру будет отдыхать ))

надо копать в направлении ToolsAPI а что имено ??

можно код (
orkus вне форума Ответить с цитированием
Старый 02.10.2009, 16:00   #2
Вавел из ГМТУ
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 896
По умолчанию

Тебе нужен код, который бы писал код?
Вавел из ГМТУ вне форума Ответить с цитированием
Старый 02.10.2009, 16:12   #3
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
Смех

sendmessage дочернему окну delphi...

а ваще такие утилиты готовые уже есть в нете, гугль вам в помощь, по макросу могут даж не токо писать но окна юзать
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 02.10.2009, 16:16   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
просто пишет код в определенной процедуре
Только тут малость проблема.
Тупописание будет видно даже невооруженным глазом.
Не может быть такого чтоб программист (я не говорю про наборщиков) только и делал что писал буква за буквой. Он напишет код, перепроверится, поскачет в другие части проги, запустит. в отладчик полезет...
Короче такое робокодерство сразу будет видно (сорри за оффтоп)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.10.2009, 20:50   #5
orkus
Пользователь
 
Регистрация: 06.12.2008
Сообщений: 34
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Только тут малость проблема....
Вот именно нужно чтобы программа писала ИСКЛЮЧИТЕЛЬНО БЕЗ ОПЕЧАТОК!

Цитата:
Сообщение от Вавел из ГМТУ Посмотреть сообщение
Тебе нужен код, который бы писал код?
Да) ограничением пока 1 процедурой

Последний раз редактировалось Stilet; 05.10.2009 в 09:30.
orkus вне форума Ответить с цитированием
Старый 02.10.2009, 21:22   #6
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

эх-х, держи. дарю
Цитата:
const s= 'твой текст';

var h: HWND;
i: Integer;
si: TStartupInfo;
p: TProcessInformation;
Layout: array[0.. KL_NAMELENGTH] of char;
begin
LoadKeyboardLayout(StrCopy(Layout,' 00000419'),KLF_ACTIVATE);
FillChar(Si,SizeOf(Si),0);
with Si do begin
cb:= SizeOf( Si);
dwFlags:= startf_UseShowWindow;
wShowWindow:= 5
end;
Createprocess(nil,'notepad',nil,nil ,false,Create_default_error_mode,ni l,nil,si,p);
Waitforsingleobject(p.hProcess,2000 );
//i:= gettickcount; while gettickcount-i<2000 do;

h:= FindWindowEx(FindWindow('notepad', nil), 0, 'Edit', nil);
- ЗАМЕНИ НА handle дочернего ОКНА delphi (думаю с этим вы справитесь)

for i:= 1 to length(s) do SendMessage(h, $0102, ord(s[i]), 0)
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 02.10.2009, 21:46   #7
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
Хорошо

Цитата:
Сообщение от Stilet Посмотреть сообщение
Только тут малость проблема.
Тупописание будет видно даже невооруженным глазом.
Не может быть такого чтоб программист (я не говорю про наборщиков) только и делал что писал буква за буквой. Он напишет код, перепроверится, поскачет в другие части проги, запустит. в отладчик полезет...
Короче такое робокодерство сразу будет видно (сорри за оффтоп)
Можно сделать псевдозадержки рандомом)
Вообще попросить "юзера" вбить текст аля "Сьеш ещё этих мягких или каких там булочек да выпей чаю" - и замерить скорость набора - далее его и имитировать с небольшим рандомом.

Сделать несдожный алгоритм перебега по строкам ... написал строку - пару энтеров сделал написал конец потом "вернулся" в начало так - же с парными "" / '' () <> итд... используя стандартные средства ввода без дополнительных фичей ( например вбивать просто в "memo" или в тот - же блокнот вроде не будет сложным.

Интересный вопрос
Как нибудь займусь этим )))

Последний раз редактировалось Lime; 02.10.2009 в 21:50.
Lime вне форума Ответить с цитированием
Старый 02.10.2009, 22:34   #8
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Цитата:
Сообщение от orkus Посмотреть сообщение
...надо копать в направлении ToolsAPI а что имено ??
можно код (
Создайте Package, добавьте этот модуль и установите. Сразу после установки увидите, как в редакторе добавляется строка

Код:
unit Unit26;
interface

uses Classes, StdCtrls;

type
  TMyButton= class(TButton)
  public
  end;

procedure Register;

implementation

uses ToolsAPI, SysUtils;

procedure Register;
begin
   RegisterComponents('Samples', [TMyButton]);
end;

function GetSourceEditor(M: IOTAModule): IOTASourceEditor;
var i: integer;
begin
   Result := nil;
   if M= nil then exit;
   for i := 0 to M.ModuleFileCount - 1 do
      if Supports(M.GetModuleFileEditor(i), IOTASourceEditor, Result)
      then break;
end;

procedure testSourceEditor;
var S : IOTAModuleServices;
    M : IOTAModule;
    ES : IOTASourceEditor;
    EV : IOTAEditView;
    P : IOTAEditPosition;
begin
   //ShowMessage('testSourceEditor');
   S := BorlandIDEServices as IOTAModuleServices;

   M := S.CurrentModule;
   ES := GetSourceEditor(M);
   EV := ES.GetEditView(0);
   EV.PageDown;
   EV.PageDown;
   P := EV.Position;
   P.InsertText('//procedure test;');
end;

initialization
   testSourceEditor;
end.
alexBlack вне форума Ответить с цитированием
Старый 04.10.2009, 11:12   #9
orkus
Пользователь
 
Регистрация: 06.12.2008
Сообщений: 34
По умолчанию

Цитата:
Сообщение от raxp Посмотреть сообщение
эх-х, держи. дарю
Код:
const s= 'твой текст';
var h: HWND;
i: Integer;
begin
H:=FindWindow(nil,PCHAR('Unit1.pas'));
SetForegroundWindow(H);
h:=GetWindow(h, GW_CHILD);
h:=GetWindow(h, GW_CHILD);

h:=GetWindow(h, gw_HWndNext );

h:=GetWindow(h, GW_CHILD);
h:=GetWindow(h, GW_CHILD);
h:=GetWindow(h, GW_CHILD);

for i:= 1 to length(s) do SendMessage(h, $0102, ord(s[i]), 0)
Вот что у меня получилоссь но он не работает (( ХЕНДЛ верно опр 100%
orkus вне форума Ответить с цитированием
Старый 04.10.2009, 11:16   #10
orkus
Пользователь
 
Регистрация: 06.12.2008
Сообщений: 34
По умолчанию

Цитата:
Сообщение от alexBlack Посмотреть сообщение
Создайте Package, добавьте этот модуль и установите. Сразу после установки увидите, как в редакторе добавляется строка

Код:
unit Unit26;
interface

uses Classes, StdCtrls;

type
  TMyButton= class(TButton)
  public
  end;

procedure Register;

implementation

uses ToolsAPI, SysUtils;

procedure Register;
begin
   RegisterComponents('Samples', [TMyButton]);
end;

function GetSourceEditor(M: IOTAModule): IOTASourceEditor;
var i: integer;
begin
   Result := nil;
   if M= nil then exit;
   for i := 0 to M.ModuleFileCount - 1 do
      if Supports(M.GetModuleFileEditor(i), IOTASourceEditor, Result)
      then break;
end;

procedure testSourceEditor;
var S : IOTAModuleServices;
    M : IOTAModule;
    ES : IOTASourceEditor;
    EV : IOTAEditView;
    P : IOTAEditPosition;
begin
   //ShowMessage('testSourceEditor');
   S := BorlandIDEServices as IOTAModuleServices;

   M := S.CurrentModule;
   ES := GetSourceEditor(M);
   EV := ES.GetEditView(0);
   EV.PageDown;
   EV.PageDown;
   P := EV.Position;
   P.InsertText('//procedure test;');
end;

initialization
   testSourceEditor;
end.
Что то я не понял (

Мне нужна НАПИСТАЬ ПРОГРАММУ котрая Создавала видемоть работы программиста а это вродебы не то или не так ?
orkus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
Сделать "рерайт" кода и прокомментировать. Век не забуду. Vilgelm Помощь студентам 1 05.06.2009 20:58
Помогите с составлением кода для игры "О, счастливчик"! kotzzz Общие вопросы Delphi 33 04.02.2009 05:21
сделать окно "открыть","сохранить как" blackstersl Общие вопросы Delphi 1 24.08.2008 10:31
Проблемма: Программное отключение "защиты формы" влияет на скорость выполнения программного кода... StrikeR33 Microsoft Office Word 0 28.05.2008 20:11