Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.09.03;
Скачать: CL | DM;

Вниз

Запись в текстовый файл   Найти похожие ветки 

 
Tanya   (2006-08-01 17:13) [80]

Попробую разобраться с этой функцией, а еще я хотела спросить.. Джо, в твоем примере мы передаем сообщение форме, которая имеет класс "TCharLogReceiver", а если это будет не форма и не программа а сервис? Если сервис будет иметь такое название класса, будут до него доходить сообщения?


 
Tanya   (2006-08-01 20:44) [81]

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


 
Джо ©   (2006-08-01 21:48) [82]

> Если сервис будет иметь такое название класса, будут до
> него доходить сообщения?

Нет, нужно окно.


 
Tanya   (2006-08-01 22:33) [83]

Джо, счто скажете о Tanya   (01.08.06 20:44) [81]?


 
Джо ©   (2006-08-02 02:11) [84]

> [83] Tanya   (01.08.06 22:33)
> Джо, счто скажете о Tanya   (01.08.06 20:44) [81]?

Я плохо разбираюсь в WinAPI, поэтому ничего изящного предложить не могу. Вот, например, придумал такой велосипед для определения окна (и дочернего, в том числе), имеющего фокус ввода в чужом процессе. Ничуть не удивлюсь, если есть более простые способы :)

var
 ThreadId: THandle;
 GuiThreadInfo: tagGUITHREADINFO;
 Txt: array [0..1024] of Char;
begin
 ThreadId := GetWindowThreadProcessId ( Handle_Окна );
 if ThreadId = 0 then
   RaiseLastOSError;

 GuiThreadInfo.cbSize := SizeOf(tagGUITHREADINFO);
 if not GetGUIThreadInfo  (ThreadId,GuiThreadInfo) then
   RaiseLastOSError;

 // ну, а теперь получим его текст
 GetWindowText(GuiThreadInfo.hwndFocus,Txt,SizeOf(Txt));
end;


 
Джо ©   (2006-08-02 02:23) [85]

> [84] Джо ©   (02.08.06 02:11)
> GetWindowText(GuiThreadInfo.hwndFocus,Txt,SizeOf(Txt));

За сие не пинайте — вынужденный недосып :) Конечно, текст нужно выдирать посылкой сообщения WM_GETTEXT, но для вопроса это неважно.


 
Eraser ©   (2006-08-02 02:58) [86]

> [80] Tanya   (01.08.06 17:13)


> Если сервис будет иметь такое название класса, будут до
> него доходить сообщения?

более того, данный метод коммуникации (используя сообщения) не будет поддерживать Fast User Switching (поэтому парень легко будет прятаться от тебя), поэтому прийдется писать ещё один исполняемый модуль, который будет запускаться для каждой терминальной сессии и взаимоействовать с одной стороны с dll, получая от неё сообщения, а с другой - с сервисом, посредством одного из способов IPC.

:o)


 
Virgo_Style ©   (2006-08-02 07:45) [87]

Правильно ли я понимаю, что тут всем миром пишут keylogger? =)


 
Zeqfreed ©   (2006-08-02 07:56) [88]

> [84] Джо ©   (02.08.06 02:11)

Не знаю что проще, но я использовал нечто такое:

var
wnd : HWND;
toPID, PID : Cardinal;
begin
PID := GetCurrentThreadId();
Wnd := {           }
toPID := GetWindowThreadProcessId(Wnd, nil);
if not AttachThreadInput(toPID, PID, True) then Exit;
Wnd := GetFocus();
//           Wnd
AttachThreadInput(toPID, PID, False);
end;


 
Zeqfreed ©   (2006-08-02 07:58) [89]

Zeqfreed ©   (02.08.06 07:56) [88]

Ой. Опять забыл, что форум съедает пробелы, да ещё и клиент русские комментарии куда-то дел :( Пробую ещё раз.


var
 wnd : HWND;
 toPID, PID : Cardinal;
begin
 PID := GetCurrentThreadId();
 Wnd := Нужное_окно
 toPID := GetWindowThreadProcessId(Wnd, nil);
 if not AttachThreadInput(toPID, PID, True) then Exit;
 Wnd := GetFocus();
 //Работаем с окном
 AttachThreadInput(toPID, PID, False);
end;


 
Tanya   (2006-08-13 00:59) [90]

Подскажите пожалуйста, как всетаки передать сообщение в сервис, это же тоже программа, не имеющая окна...


 
Ketmar ©   (2006-08-13 01:09) [91]

> [87] Virgo_Style ©   (02.08.06 07:45)
да. %-)

> [90] Tanya   (13.08.06 00:59)
поиск делать религия запрещает? ну, сокетами, например. только не надо спрашивать "а как это?"


 
Джо ©   (2006-08-13 03:57) [92]

> [90] Tanya   (13.08.06 00:59)
> Подскажите пожалуйста, как всетаки передать сообщение в
> сервис, это же тоже программа, не имеющая окна...

Ну, в принципе, невидимое окно завести никто не запрещает.



Страницы: 1 2 3 вся ветка

Текущий архив: 2006.09.03;
Скачать: CL | DM;

Наверх




Память: 0.63 MB
Время: 0.036 c
15-1154599583
atruhin
2006-08-03 14:06
2006.09.03
Вопрос по настройке маршрутизации в сетях


4-1147440994
Natan
2006-05-12 17:36
2006.09.03
Если кто может, помогите определить системные требования компа...


3-1151324150
Andrey00
2006-06-26 16:15
2006.09.03
Запретить трассировать с помощью SQL Monitor


15-1154928251
Ega23
2006-08-07 09:24
2006.09.03
С Днём рождения! 6 августа


2-1155215797
MASTAFA
2006-08-10 17:16
2006.09.03
Проблема с компонентом TChart