Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ввод данных в чужое окно. 
:(
    Опции темы
HAS
Дата 26.7.2006, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ing
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 1.3.2005
Где: Internet

Репутация: нет
Всего: 2



Следующим кодом, если запущен блокнот, то он вызывает окно редактора шрифта
Код

procedure SendKey(Key: Word);
begin
  keybd_event(Key,0,0,0);
  keybd_event(Key,0,KEYEVENTF_KEYUP,0);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
    font:HWND;
    cols:array[1..3] of HWND;
    H:hWnd;
    i:integer;
begin
 H := FindWindow( nil, 'Безымянный - Блокнот');
 SetForegroundWindow(H);

 sleep(10);
 SetForegroundWindow(H);
 sleep(10);
 SendKey(VK_MENU);

   for i:=1 to 2 do
   SendKey(VK_RIGHT);
   sendkey(VK_RETURN);
   sendkey(vk_down);
   sendkey(VK_RETURN);
end;

А как можно при помощи апи послать сообщение об измене шрифта или размера шрифта ?!
спасибо. 
PM MAIL   Вверх
Yanis
Дата 26.7.2006, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 13
Всего: 111



HAS
Посмотри пример Rennigth'а.
http://forum.vingrad.ru/index.php?showtopic=58277 


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
HAS
Дата 26.7.2006, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ing
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 1.3.2005
Где: Internet

Репутация: нет
Всего: 2



мне необходимо при помощи API в одно из окошек что-нибудь вписать smile  

Это сообщение отредактировал(а) HAS - 26.7.2006, 11:42
PM MAIL   Вверх
Romikgy
Дата 26.7.2006, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



Цитата(HAS @  26.7.2006,  10:41 Найти цитируемый пост)
 одно из окошек

в каком окошке? в разных окошках по разному пишется 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
HAS
Дата 26.7.2006, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ing
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 1.3.2005
Где: Internet

Репутация: нет
Всего: 2



Romikgy, вот я для примера и использую notepad.
Код сверху вызывает окно редактора шрифта.
ВОт я хочу узнать, как можно послать сообщение с изменением названия шрифта или размера шрифта ?! 
PM MAIL   Вверх
Yanis
Дата 26.7.2006, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 13
Всего: 111





--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Romikgy
Дата 26.7.2006, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



причем здесь 
Цитата(HAS @  26.7.2006,  10:41 Найти цитируемый пост)
мне необходимо при помощи API в одно из окошек что-нибудь вписать

к
Цитата(HAS @  26.7.2006,  11:29 Найти цитируемый пост)
как можно послать сообщение с изменением названия шрифта или размера шрифта ?!

???????????????777 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
HAS
Дата 26.7.2006, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ing
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 1.3.2005
Где: Internet

Репутация: нет
Всего: 2



Вы меня непоняли.
Я говорю, что это я использую для того, что бы разобраться в winapi.
Это я использую просто для практики. Т.е. я хочу научиться работать с winapi.
Мне необходимо вызвать окно редактора шрифта - вызвал.
теперь, где поле шрифт, мне необходимо, при помощи winapi вписать произвольный текст, например test.

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

Добавлено @ 14:06 
надеюсь Вы меня поняли ! 

Это сообщение отредактировал(а) HAS - 26.7.2006, 14:05
PM MAIL   Вверх
Romikgy
Дата 26.7.2006, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



в диалоге редактора шрифта используется , как бы , копонент Tedit , 
ему можно послать соосбщение на изменение текста
WM_SETTEXT

Добавлено @ 14:45 
в диалоге редактора шрифта используется , как бы , копонент Tedit , 
ему можно послать соосбщение на изменение текста
WM_SETTEXT 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
HAS
Дата 26.7.2006, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ing
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 1.3.2005
Где: Internet

Репутация: нет
Всего: 2



Romikgy, вот какраз меня это и интересует, как послать сообщение на изменение текста и куда ее посылать. smile  
PM MAIL   Вверх
Romikgy
Дата 26.7.2006, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



HAS, ищешь окно кому слать , его хендл
FindWindow
далее юзаешь функцию апи
SendMessage 
с параметром 
Цитата(Romikgy @  26.7.2006,  13:44 Найти цитируемый пост)
WM_SETTEXT 

и оно отсылается smile
PS читаем хелп по вин апи 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
HAS
Дата 26.7.2006, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ing
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 1.3.2005
Где: Internet

Репутация: нет
Всего: 2



Romikgy, ты же сам знаешь, что все не так просто smile smile 
А если там несколько edit'ов ?! и вообще, как узнать "адрес" каждого эдита ?! smile  
PM MAIL   Вверх
Romikgy
Дата 26.7.2006, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



по очереди перебирай если несколько 
и не адрес , а хендл , он ищется файндвиндомом 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
HAS
Дата 26.7.2006, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ing
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 1.3.2005
Где: Internet

Репутация: нет
Всего: 2



Romikgy, как ?! smile  
PM MAIL   Вверх
Yanis
Дата 26.7.2006, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 13
Всего: 111



HAS
А сразу написать так как в HAS Дата 26.7.2006, 15:04 нельзя было??? Неужели нельзя сразу вопрос сформулировать прежде чем на форум лезть....
Код
const
  SLEEP_TIME = 100;

var
  x: Byte;
  s: string;
  hNotepad, hFontDlg, hFontDlgCb: DWORD;
begin
  // ищем первый запущеный блокнот
  hNotepad := FindWindow('Notepad', nil);
  if hNotepad <> 0 then
    begin
      // пункт "Шрифт..." в главном меню Блокнота имеет ID = 33
      // "нажимаем" пункт меню:
      PostMessage(hNotepad, WM_COMMAND, MakeWParam(33, 1), 0);

      // требуется небольшая задержка, что бы
      // диалог выбора шрифта успел отобразиться
      Sleep(SLEEP_TIME);

      // находим диалог смены шрифта
      // для большей универсальности
      // заголовок я не указываю
      hFontDlg := FindWindow('#32770', nil);
      if hFontDlg <> 0 then
        begin
          // на форме hFondDlg 3 ComboBox'а
          // по идее при первом выове должен находиться самый первый
          // он то нам и нужен
          hFontDlgCb := FindWindowEx(hFontDlg, 0, 'ComboBox', nil);

          // название шрифта - текст который будет присвоен найденому ComboBox
          s := 'Courier New';
          SendMessage(hFontDlgCb, WM_SETTEXT, 0, Integer(@s[1]));
        end;
    end;
end;


PS. Код нажатия кнопки OK думаю писать не нужно? 


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.1163 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.