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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2008, 22:33   #21
st01en
Пользователь
 
Регистрация: 06.02.2008
Сообщений: 33
По умолчанию

Цитата:
Сообщение от B_N Посмотреть сообщение
Код:
wnd := GetDlgItem(GetDlgItem(FindWindow(nil, 'Безымянный - Paint'), $0E900), 0);
ого, а что это такое и как этому научиться?
st01en вне форума Ответить с цитированием
Старый 27.02.2008, 22:42   #22
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от Somebody Посмотреть сообщение
SendNotifyMessage непосредственно вызывает оконную процедуру, а PostMessage помещает сообщение в очередь.
Не путайте людей.
http://msdn2.microsoft.com/en-us/lib...53(VS.85).aspx
Цитата:
The SendNotifyMessage function sends the specified message to a window or windows. If the window was created by the calling thread, SendNotifyMessage calls the window procedure for the window and does not return until the window procedure has processed the message. If the window was created by a different thread, SendNotifyMessage passes the message to the window procedure and returns immediately; it does not wait for the window procedure to finish processing the message.
-----------------------------
Цитата:
Сообщение от st01en Посмотреть сообщение
ого, а что это такое и как этому научиться?
А этому даже учиться особо не нужно. Берите, как он у Дельфи, WinSpy, кажется, и смотрите, кому принадлежит нужное окно.
B_N вне форума Ответить с цитированием
Старый 28.02.2008, 02:42   #23
st01en
Пользователь
 
Регистрация: 06.02.2008
Сообщений: 33
По умолчанию

WinSight32 называется
Я так понял $0E900 - ИД диалогового окна(?) вот откуда оно взялось, или я не туда смотрю?
чет не пойму что к чему, вот он Paint:
Изображения
Тип файла: jpg paint.jpg (36.2 Кб, 149 просмотров)

Последний раз редактировалось st01en; 28.02.2008 в 03:25.
st01en вне форума Ответить с цитированием
Старый 28.02.2008, 10:48   #24
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от st01en Посмотреть сообщение
WinSight32 называется
Я так понял $0E900 - ИД диалогового окна(?) вот откуда оно взялось, или я не туда смотрю?
чет не пойму что к чему, вот он Paint:
Ну так смотрите где-нибудь в свойствах каждого окна (я не помню, как там в винсайте, спасибо, что напомнили, как его звать ) какой у кого ID, проходите всю цепочку и всё. Просто на картинке ID не показан, там только HWND, класс, процесс, размеры и имя.
B_N вне форума Ответить с цитированием
Старый 28.02.2008, 18:45   #25
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Цитата:
If the window was created by a different thread, SendNotifyMessage passes the message to the window procedure and returns immediately
OK, вот что я имел в виду: она "passes the message to the window procedure", а PostMessage - в очередь сообщений (и может какая-то [странная] прога не будет даже передавать его оконной процедуре). SendNotifyMessage сразу же вызовет оконную процедуру, а через PostMessage сообщение дойдёт после всех остальных (не считая paint, timer и т. п.)

Последний раз редактировалось Somebody; 28.02.2008 в 18:47.
Somebody вне форума Ответить с цитированием
Старый 28.02.2008, 19:21   #26
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от Somebody Посмотреть сообщение
OK, вот что я имел в виду: она "passes the message to the window procedure", а PostMessage - в очередь сообщений (и может какая-то [странная] прога не будет даже передавать его оконной процедуре). SendNotifyMessage сразу же вызовет оконную процедуру, а через PostMessage сообщение дойдёт после всех остальных (не считая paint, timer и т. п.)
Ах вот Вы о чём. Тогда принимается. В принципе, все Send****ы работают через APC (если в другой поток), просто я не стал на этом так уж заострять внимание.
B_N вне форума Ответить с цитированием
Старый 01.03.2008, 08:28   #27
Иллидан
Форумчанин
 
Регистрация: 16.01.2008
Сообщений: 288
По умолчанию

Я знаю еще, способ как найти листок Painta
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  wnd: HWND;
  Ppoint:tpoint;
  begin
  ppoint.x:=100;
  ppoint.y:=100;

  setcursorpos(100,100);
  wnd:=windowfrompoint(ppoint);

  if wnd <> 0 then begin


    sendMessage(wnd, WM_LBUTTONDOWN, 0,MakeLparam(10,10));
    sendMessage(wnd, WM_MOUSEMOVE , 0,MakeLparam(100,200));
    sendMessage(wnd, WM_LBUTTONUP , 0,MakeLparam(100,200));

    end;
    end;
Иллидан вне форума Ответить с цитированием
Старый 02.03.2008, 10:33   #28
st01en
Пользователь
 
Регистрация: 06.02.2008
Сообщений: 33
По умолчанию

Цитата:
Сообщение от B_N Посмотреть сообщение
Ну так смотрите где-нибудь в свойствах каждого окна (я не помню, как там в винсайте, спасибо, что напомнили, как его звать ) какой у кого ID, проходите всю цепочку и всё. Просто на картинке ID не показан, там только HWND, класс, процесс, размеры и имя.
чувствую себя идиотом.
на картинке первое, третье и пятое сообщения - это те которые я из программы отправляю. И открыты свойства того окна которое их ловит, но я не вижу там этого $0E900 ни в каком виде, ИД вообще нули показывает


Иллидан, спасибо за WindowFromPoint, но вообще это смахивает на костыль
st01en вне форума Ответить с цитированием
Старый 02.03.2008, 14:33   #29
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от st01en Посмотреть сообщение
И открыты свойства того окна которое их ловит, но я не вижу там этого $0E900 ни в каком виде, ИД вообще нули показывает
А теперь посмотрите на то окно, которое прямо над ним (которое было 007102FC)
B_N вне форума Ответить с цитированием
Старый 02.03.2008, 15:30   #30
st01en
Пользователь
 
Регистрация: 06.02.2008
Сообщений: 33
По умолчанию

Цитата:
Сообщение от B_N Посмотреть сообщение
А теперь посмотрите на то окно, которое прямо над ним (которое было 007102FC)
результат для меня все так же плачевный
ткните меня носом
st01en вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с другими программами через Delphi slon Общие вопросы Delphi 8 10.10.2008 11:58
Работа с другими программами kurazh77 Общие вопросы Delphi 6 09.10.2007 22:07
Глюки с программами для БД ГОСЕАН БД в Delphi 2 06.07.2007 17:27
перехват отправления чужими программами отправки на печать документов Nat Win Api 7 20.04.2007 16:07
работа с "чужими" окнами zetrix Безопасность, Шифрование 1 29.10.2006 11:28