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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не выполняется условие 
:(
    Опции темы
Ragnarek
Дата 10.12.2010, 08:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

library hook_1;
uses
  Windows,
  Messages,
  Sysutils,
  Forms;
var
  SysHook : HHook = 0;
  Wnd : Hwnd = 0;
  app: HWND;

  d5:HWND;
  t:string;


function childwindows(handl:HWND):bool; stdcall;
var
chilhandle:HWND;
begin
chilhandle:=FindWindowEx(handl,0,nil,'1248');  //ищем поле с именем 1248
if chilhandle<>0 then
begin
  d5:=chilhandle;      //присваиваем глобальной переменной хэндл поля
  result:=false;
  end;
  if chilhandle=0 then exit;
 end;


function SysMsgProc(code : integer; wParam : word; lParam : longint) : longint; stdcall;
var
     f:TextFile;
     cursor:tpoint;
     hand:hwnd;
     reload:HWND;
    addd:HWND;
    start:bool;
    exitt:hwnd;
     begin
  if code = HC_ACTION then
    begin
      if TMsg(Pointer(lParam)^).message = WM_LBUTTONDOWN then    //нажимается левая кнопка
        begin
          app:=GetForegroundWindow();       //хэндл активного окна
          reload:=FindWindowEx(app,0,nil,'Обновить') ;  //хэндл кнопки Обновить
          addd:=FindWindowEx(app,0,nil,'Добавить');   //хэндл кнопки
          exitt:=FindWindowEx(app,0,nil,'Выход');   //хэндл кнопки
          getcursorpos(cursor);                    //получаем положение курсора
          hand:=WindowFromPoint(cursor);          //хэндл объекта под курсором
          if (reload<>0) and (reload=hand)and(start=false)  then //если нажата кнопка
          begin
          EnumChildWindows(app, @childwindows,0); //функция
          start:=true;
          end;
          if (addd=hand) then   //если нажата кнопка добавить
          begin
          SetLength(t, SendMessage(d5, wm_gettextlength, 0, 0)); // получаем текст
          SendMessage(d5, wm_gettext, Length(t)+1, Integer(t));  // из требуемого поля
          AssignFile(f, 'C:\1.txt');           //записываем в файл
          if FileExists('C:\1.txt') then
          Append(f) else Rewrite(f);
          WriteLn(f,t);
          CloseFile(f);
          end;
          if (exitt=hand) then       //если выход
          start:=false;
          end;

     Result:= CallNextHookEx(SysHook, Code, wParam, lParam);
end;
end;


procedure hook(switch : Boolean) export; stdcall;
begin
  if switch=true then
  SysHook := SetWindowsHookEx(WH_GETMESSAGE, @SysMsgProc, HInstance, 0);
  SysHook := 0;
  end;
exports hook;

end.

Не выполняется второе условие...не могу понять почему( поскажите?
По отдельности выполняются...а если сначала нажать обновить...а потом нажать добавить то ничего не происходит =(



Это сообщение отредактировал(а) Ragnarek - 10.12.2010, 09:27
PM MAIL   Вверх
superVad
Дата 10.12.2010, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 4
Всего: 15



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

Про обновить, что добавить - даже не знаю, что сказать...
PM MAIL   Вверх
Ragnarek
Дата 10.12.2010, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Не выполняется условие нажатия на кнопку добавить. То есть мы нажимаем на кнопку обновить

Код

 if (reload<>0) and (reload=hand)and(start=false)  then //если нажата кнопка
          begin
          EnumChildWindows(app, @childwindows,0); //функция
          start:=true;
          end;

и получаем дексриптор поля.
а когда нажимаем кнопку добавить 
Код

if (addd=hand) then   //если нажата кнопка добавить
          begin
          SetLength(t, SendMessage(d5, wm_gettextlength, 0, 0)); // получаем текст
          SendMessage(d5, wm_gettext, Length(t)+1, Integer(t));  // из требуемого поля
          AssignFile(f, 'C:\1.txt');           //записываем в файл
          if FileExists('C:\1.txt') then
          Append(f) else Rewrite(f);
          WriteLn(f,t);
          CloseFile(f);
          end;

то не происходит вообще ничего. Получается что программа просто не доходит до этого условия
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

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

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

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


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

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


 




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


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

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