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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2008, 21:27   #11
user_jasser
я не ~
Пользователь
 
Аватар для user_jasser
 
Регистрация: 19.09.2008
Сообщений: 58
По умолчанию

Stilet
Да былоб нормально еслиб он был стандартный эдит. Просто в нем уже столько всего намучено одним удальцом(подсветка текста...итп) а я просто хочу добавит выплывающий список(переменных, методов...).
Спасибо буду пробывать через TranslateMessage. Вот только булевской функции на (фокус к Едиту) пока не могу найти .
user_jasser вне форума Ответить с цитированием
Старый 16.11.2008, 20:49   #12
user_jasser
я не ~
Пользователь
 
Аватар для user_jasser
 
Регистрация: 19.09.2008
Сообщений: 58
По умолчанию

вот немного разобрался(событие нажатие "точки" работает) только вот с GetCaretPos() проблемы , что то выводиться не правдоподобное значение...
подскажите ошибку?(можеть надо под какимто месджем писать)?

вот виновник :

Код:
unit EditirApi;

{$mode objfpc}{$H+}

interface

uses Windows, Classes, SysUtils;

  procedure RunEdit;
  procedure StartEdit;

  var  tid: Cardinal; find: boolean;  Hnd, HEdit: HWnd;
       Text: array[0..Pred(MAX_PATH)] of char;
       OldWndProc: WNDPROC; HPoint: TPoint;

implementation

{ tnew }

function NewWindowProc(hWnd:HWND; uMsg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT; stdcall;
 begin
   case uMsg of
     WM_CHAR :
     begin
       if wParam = ord('.') then begin
          MessageBox(0, 'OK', '.dll',MB_ICONINFORMATION);
          GetCaretPos(HPoint);
          MessageBox(0, PChar(IntToStr(HPoint.x)), '.dll',MB_ICONINFORMATION);
          uMsg:= 0;
       end;
     end;
   end;
   Result:= CallWindowProc(OldWndProc, hWnd, uMsg, wParam, lParam)
 end;

procedure RunEdit;
 begin
  while find do begin
    Hnd:= FindWindow(nil, 'Trigger Editor');
    if Hnd <> 0 then begin
       HEdit:= FindWindowEx(Hnd, 0,'Edit', nil);
       HEdit:= FindWindowEx(Hnd, HEdit,'Edit', nil);
       OldWndProc:= WNDPROC(SetWindowLong(HEdit, GWL_WndProc, Longint(@NewWindowProc)));
       find:= false;
       exit;
    end;
    sleep(300);
  end;
end;


procedure StartEdit;
begin
 find:= true;
 CreateThread(nil, 0, @RunEdit, nil, CREATE_NEW, tid);
end;

end.
user_jasser вне форума Ответить с цитированием
Старый 16.11.2008, 23:08   #13
Д'якон
Форумчанин
 
Регистрация: 05.12.2007
Сообщений: 236
По умолчанию

Только через хук. С Пунто Свичер знаком? Тот же принцип

Находишь нужное окно,хучишь нужное сообщение проверяешь то ли окно и тот ли символ и вперед.
Д'якон вне форума Ответить с цитированием
Старый 16.11.2008, 23:33   #14
user_jasser
я не ~
Пользователь
 
Аватар для user_jasser
 
Регистрация: 19.09.2008
Сообщений: 58
По умолчанию

хук(как я понял) видет процедуру хука только в dll? Просто моя программа уже написанна как DLL, а не как EXE. Это мне тогда нужно писать еще одну dll c хукам?
user_jasser вне форума Ответить с цитированием
Старый 17.11.2008, 09:38   #15
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Цитата:
Сообщение от user_jasser Посмотреть сообщение
Это мне тогда нужно писать еще одну dll c хукам?
не надо. пиши функцию хука в этой же DLL.
rpy3uH вне форума Ответить с цитированием
Старый 17.11.2008, 20:43   #16
user_jasser
я не ~
Пользователь
 
Аватар для user_jasser
 
Регистрация: 19.09.2008
Сообщений: 58
По умолчанию

вот и с этим разобрался все работает...
теперь нужно вставить в окно ListBox на WinApi...

Код:
function ListCreate(PAR: HWND; x, y : integer): HWND;
begin
  result:= CreateWindowEx(
           0,
           'ListBox',
           nil,
           WS_CHILD or WS_VISIBLE or WS_BORDER,
           x,
           y,
           300,
           100,
           PAR,
           0,
           hInstance,
           nil);

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

Последний раз редактировалось user_jasser; 17.11.2008 в 20:45.
user_jasser вне форума Ответить с цитированием
Старый 17.11.2008, 21:47   #17
Д'якон
Форумчанин
 
Регистрация: 05.12.2007
Сообщений: 236
По умолчанию

посылай сообщение LB_ADDSTRING своему лист боксу и заполняй его
Д'якон вне форума Ответить с цитированием
Старый 17.11.2008, 22:11   #18
vvviperrr
Тупой студент
Форумчанин
 
Аватар для vvviperrr
 
Регистрация: 12.05.2007
Сообщений: 614
По умолчанию

флуд по теме. винапи на делфи какое то извращенство) имхо, на делфи нада кнопки на форму кидать и все) а че поприкольнее - с/асм
vvviperrr вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение свойств кнопки через WinAPI Никки Win Api 12 20.09.2009 15:01
WinApi работа с памятью, помогите! casper123 Помощь студентам 5 15.09.2008 08:13
Работа с Socket-ом c помощю WinAPI 69 region Помощь студентам 13 11.04.2008 17:22
Как программно назначить привилегию или писать в реестр через WinApi ? UnD)eaD)Snake Win Api 16 27.09.2007 20:20