| Автор
| Сообщение |
|
|
|
Цитата |
|
Если хоть кто-то знает об управление другим приложением просьба оставить здесь коментарий и кусок кода! Очень нада! Управление может быть абсолятно любого рода от изменения названия окно до подключения к приложению собственной ДЛЛ-ины которая в последствии будет вызыватьвашу же процедуру!
|
|
| В начало |
|
 |
|
|
 |
 Essentuki
Энтузиаст

Возраст: 27
Знак зодиака: 
Зарегистрирован: 14.09.2005
Сообщения: 369
Откуда: г Иркутск
|
|
|
Цитата |
|
----------из своей программы закрыть чужую-------------
PostThreadMessage(AnotherProg_MainThreadID,WM_CLOSE,0,0);
PostMessage(AnotherProg_MainWindow,WM_CLOSE,0,0);
_________________ Что не убьет нас сделает сильнее... |
|
| В начало |
|
 |
 Essentuki
Энтузиаст

Возраст: 27
Знак зодиака: 
Зарегистрирован: 14.09.2005
Сообщения: 369
Откуда: г Иркутск
|
|
|
Цитата |
|
--------------Handle окна,над которым находится мышка---------
WindowFromPoint
ChildWindowFromPoint
_________________ Что не убьет нас сделает сильнее... |
|
| В начало |
|
 |
 Essentuki
Энтузиаст

Возраст: 27
Знак зодиака: 
Зарегистрирован: 14.09.2005
Сообщения: 369
Откуда: г Иркутск
|
|
|
Цитата |
|
-----------------Убиваем активное приложение ---------------
Данная функция позволяет завершить выполнение любой активной программы по её classname или заголовку окна.
procedure KillProgram(Classname : string; WindowTitle : string);
const
PROCESS_TERMINATE = $0001;
var
ProcessHandle : THandle;
ProcessID: Integer;
TheWindow : HWND;
begin
TheWindow := FindWindow(Classname, WindowTitle);
GetWindowThreadProcessID(TheWindow, @ProcessID);
ProcessHandle := OpenProcess(PROCESS_TERMINATE, FALSE, ProcessId);
TerminateProcess(ProcessHandle,4);
end;
_________________ Что не убьет нас сделает сильнее... |
|
| В начало |
|
 |
 Essentuki
Энтузиаст

Возраст: 27
Знак зодиака: 
Зарегистрирован: 14.09.2005
Сообщения: 369
Откуда: г Иркутск
|
|
|
Цитата |
|
--------перехватыват событий, посланных другим приложениям-----------
Для отслеживания каких-то событий во всей Windows нужно установить ловушку (hook).
Например, такая ловушка может отслеживать все события,
связанные с мышью, где бы ни находился курсор. Можно отслеживать и события клавиатуры.
Для ловушки нужна функция, которая, после установки ловушки
при помощи SetWindowsHookEx, будет вызываться при каждом нужном событии.
Эта функция получает всю информацию о событии. UnhookWindowsHookEx уничтожает ловушку.
Эта программа отслеживает все сообщения, связанные с мышью и клавиатурой.
CheckBox1 показывает состояние левой клавиши мыши,
CheckBox2 показывает состояние правой клавиши мыши,
а CheckBox3 показывает, нажата ли какая-либо клавиша на клавиатуре.
var
HookHandle: hHook;
function HookProc(Code: integer; WParam: word; LParam: Longint): Longint; stdcall;
var
msg: PEVENTMSG;
begin
if Code >= 0 then begin
result := 0;
msg := Pointer(LParam);
with Form1 do
case msg.message of
WM_MOUSEMOVE: Caption := IntToStr(msg.ParamL) + #32 + IntToStr(msg.ParamH);
WM_LBUTTONDOWN: CheckBox1.Checked := true;
WM_LBUTTONUP: CheckBox1.Checked := false;
WM_RBUTTONDOWN: CheckBox2.Checked := true;
WM_RBUTTONUP: CheckBox2.Checked := false;
WM_KEYUP: CheckBox3.Checked := false;
WM_KEYDOWN: CheckBox3.Checked := true;
end;
end else
result := CallNextHookEx(HookHandle, code, WParam, LParam);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.FormStyle := fsStayOnTop;
CheckBox1.Enabled := false;
CheckBox1.Caption := 'left button';
CheckBox2.Enabled := false;
CheckBox2.Caption := 'right button';
CheckBox3.Enabled := false;
CheckBox3.Caption := 'keyboard';
HookHandle := SetWindowsHookEx(WH_JOURNALRECORD, @HookProc, HInstance, 0);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
if HookHandle <> 0 then
UnhookWindowsHookEx(HookHandle);
end;
_________________ Что не убьет нас сделает сильнее... |
|
| В начало |
|
 |
 Essentuki
Энтузиаст

Возраст: 27
Знак зодиака: 
Зарегистрирован: 14.09.2005
Сообщения: 369
Откуда: г Иркутск
|
|
|
Цитата |
|
-----------Как изменить заголовок чужого окна? --------------
SetWindowText(FindWindow(nil,'Текущий заголовок'), 'Желаемый');
_________________ Что не убьет нас сделает сильнее... |
|
| В начало |
|
 |
 Essentuki
Энтузиаст

Возраст: 27
Знак зодиака: 
Зарегистрирован: 14.09.2005
Сообщения: 369
Откуда: г Иркутск
|
|
|
Цитата |
|
---------- зная Handle окна программы, определить имя EXE--------------
// Для начала определяешь какому процессу принадлежит окно:
var pProcID: ^DWORD;
begin
GetMem(pProcID, SizeOf(DWORD));
GetWindowThreadProcessId(WinHandle, pProcID);
end;
// а после этого используешь TProcessEntry32 примерно так:
function GetExeNameByProcID(ProcID: DWord): string;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
Result := '';
while (Integer(ContinueLoop) <> 0) and (Result = '') do
begin
if FProcessEntry32.th32ProcessID = ProcID then
Result := FProcessEntry32.szExeFile;
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
end;
// Не забудь в uses добавить Tlhelp32
_________________ Что не убьет нас сделает сильнее... |
|
| В начало |
|
 |
 Essentuki
Энтузиаст

Возраст: 27
Знак зодиака: 
Зарегистрирован: 14.09.2005
Сообщения: 369
Откуда: г Иркутск
|
|
|
Цитата |
|
тут еще все расписано (статья)
| Описание: |
|
 Скачать |
| Имя файла: |
read.zip |
| Размер: |
3.53 KB |
| Загружен: |
419 раз(а) |
_________________ Что не убьет нас сделает сильнее... |
|
| В начало |
|
 |
|
|
|
Цитата |
|
Прячет проги
| Код: |
procedure TForm1.Timer1Timer(Sender: TObject);
var
q:hwnd;
begin
q:=getforegroundwindow;
ShowWindow(q,SW_HIDE);
end;
|
Нажимает на кнопку. Нижи описон ламирский способ
разблокирования в брандмауэре своего
троянскова друга (есле в настройках разрешены
исключения, это настройка по умолчанию)
| Код: |
procedure TForm1.Timer1Timer(Sender: TObject);
var
q, qq: hWnd;
begin
q:=FindWindow( nil,'Оповещение системы безопасности Windows');
qq:=FindWindowEx(q, 0, nil,'&Разблокировать');
SendMessage(qq,WM_LBUTTONDOWN,0,0);
SendMessage(qq,WM_LBUTTONUP,0,0);
end;
|
смена рисунка.Поменяем на кнопке пуск (под 98 венду)
| Код: |
procedure TForm1.Button1Click(Sender: TObject);
var
q:hwnd;
begin
q:=FindWindow('Shell_TrayWnd', nil);
q:=FindWindowEx(q, 0, 'Button', nil) ;
SendMessage(q, BM_SetImage, 0, Image1.Picture.Bitmap.Handle);
end;
|
смена текста.Поменяем на кнопке пуск
| Код: |
var
q, qq: hWnd;
begin
q:=FindWindow('Shell_TrayWnd', nil);
q:=FindWindowEx(q, 0, 'Button', nil) ;
SendMessage(qq,WM_SETTEXT,0,lparam(LPCTSTR('ДОБ')));
|
свернуть
| Код: |
var
q: hWnd;
begin
q:=FindWindow( nil,'Оповещение системы безопасности Windows');
showwindow(q,MF_DISABLED);
|
развернуть
| Код: |
var
q: hWnd;
begin
q:=FindWindow( nil,'Оповещение системы безопасности Windows');
showwindow(q,MF_GRAYED);
|
на весь экран
| Код: |
var
q: hWnd;
begin
q:=FindWindow( nil,'Оповещение системы безопасности Windows');
showwindow(q,MF_DISABLED or MF_GRAYED);
end;
|
перетощить окно
| Код: |
var
rect : TRect;
q: HWND;
Begin
q:=FindWindow( nil,'Оповещение системы безопасности Windows');
q:=getforegroundwindow;
GetWindowRect(q,rect);
MoveWindow(q,0, 0,rect.right - rect.left,rect.bottom - rect.top,true);
|
заставить мегать иконку
| Код: |
var
q: hWnd;
begin
q:=FindWindow( nil,'Оповещение системы безопасности Windows');
FlashWindow(q, True);
|
|
|
| В начало |
|
 |
|
|
 |
|
|
|
Цитата |
|
Да пасибки, но честно говоря это все не то что мне было нужно!
Вопрос
1) Как узнать все имена объектов находящиеся на форме зная его Хендл???? Вывести это ну скажем Memo1?!
2) Сразу встречный вопрос как можно зная имя объекта обратиться к этому объекту и скажем например SendMessage(траляля,траляля,WM_SetText,траляля)
------------------------------------------------------------------------------
!!!Приветствуется!!! ГОТОВЫЙ КОД, ЛУЧШЕ ИСХОДНИК МОДУЛЯ ИЛИ ПРИЛОЖЕНИЯ
!!!НЕ ПРИВЕТСТВУЕТСЯ!!! Ссылки на сайт а'ля Yandex и т.п.
------------------------------------------------------------------------------
|
|
| В начало |
|
 |
|
|
|
Цитата |
|
| Еще вопрос подскажите пожалуйста как можно написать функцию(процедуру) для SendMessage и как ее потом использовать ПЛИЗ исходник модуля!!!!!
|
|
| В начало |
|
 |
|
|
|
Цитата |
|
| Цитата: |
1) Как узнать все имена объектов находящиеся на форме зная его Хендл???? Вывести это ну скажем Memo1?!
|
Тебе уже говарили выши
| Код: |
function qqq(qqqq:hwnd):BOOL; stdcall;
var
q:array[0..255]of char;
begin
getwindowtext(qqqq,q,sizeof(q));
showmessage(q);
Result:=true;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
qq:hwnd;
begin
qq:=findwindow(nil,'Заголовог проги');
if qq=0 then exit;
Enumchildwindows(qq,@qqq,5);//Ищет все дочрные окна
//у окна хендел которого задан в первом параметре
//и передаёт управление функции
end;
|
| Цитата: |
2) Сразу встречный вопрос как можно зная имя объекта обратиться к этому объекту и скажем например SendMessage(траляля,траляля,WM_SetText,траляля)
|
и это тебе показали чем смотреш ?
функция findwindow может найти окно по заголовку или по
названию класса. функция FindWindowEx ищет дочерные окна
1 параметр хендел главного окна ,2 хендел дочерново окна
поеск начинаеца со следущева есле устонавить ноль то перебераца будут все окна,3 имя класса или nil ,4 имя или nil.[/code]
а про SendMessage я не понил. Чё тебе именно надо ?
|
|
| В начало |
|
 |
 Ktf
Администратор

Возраст: 32
Знак зодиака: 
Зарегистрирован: 15.05.2005
Сообщения: 1502
Откуда: localhost
|
|
|
Цитата |
|
| Цитата: | | Да пасибки, но честно говоря это все не то что мне было нужно! |
to Yashcher
------------------------------------------------------------------------------
!!!Приветствуется!!! Точная и понятная формулировка вопроса
------------------------------------------------------------------------------
_________________ Пойду посплю перед сном. |
|
| В начало |
|
 |
|
|
|
Цитата |
|
| ДОБ писал(а): | | а про SendMessage я не понил. Чё тебе именно надо ? |
Написать процедуру типа WM_SETTEXT только свою...
|
|
| В начало |
|
 |
|