![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Управление окном другого приложения [D6, D7, Win2k, WinXP]
rll-progr © (2006-10-14 14:29:00)Есть некое приложение. В нем есть видимая неактивная кнопка. Можно ли подключиться к этому приложению и сделать кнопку активной. Очень надо.
kaZaNoVa (2007-01-03 14:54:00) [1]bb2 (03.01.07 14:49) [21]
Дело в том, что приложение, которым мне нужно управлять, чужое. Возможна ли при этом OLE-автоматизация?
ИМХО, если в чужой проге это не предусмотрено то не получится
bb2 (2007-01-03 14:49:00) [2]Дело в том, что приложение, которым мне нужно управлять, чужое. Возможна ли при этом OLE-автоматизация?
За функции - спасибо, функции отличные! Обязательно применю.
kaZaNoVa (2007-01-03 14:39:00) [3]bb2 (03.01.07 14:34) [19]
записать действия юзера и сделать в проге ..
ну типа юзер запускает прогу водит мышкой все это мутить ... но имхо такой подход тупиковый ...(
функции по теме:
keybd_event()
mouse_event()
GetCursorPos()
SetCursorPos()
SetForegroundWindow()
bb2 (2007-01-03 14:34:00) [4]Да вообще-то хотелось бы... А как можно?
kaZaNoVa (2007-01-03 14:28:00) [5]bb2 (03.01.07 14:17) [17]
можно, а нужно ли? имхо лучше OLE-автоматизация ..
bb2 (2007-01-03 14:17:00) [6]А как вообще сделать так, чтобы одно приложение управляло другим? Можно ли, чтобы программа САМА нашла это другое приложение (например, по имени его EXE-файла), открыла в нём нужные окна и т.д. Если кто знает, подскажите, пожалуйста!
Eraser (2006-10-15 14:36:00) [7]> [9] rll-progr © (14.10.06 23:00)
> нашел . ну фокус она полечает а как чтобы она активна стала?
учитесь по-четче формулировать вопросы.
Leonid Troyanovsky (2006-10-15 14:27:00) [8]
> rll-progr © (15.10.06 13:33) [14]
Недоступный контрол фокус не получает,
так что не надо было [9].
Неактивная и недоступная - две большие разницы.
--
Regards, LVT.
rll-progr (2006-10-15 13:33:00) [9]РАБОТАЕТ!!!!!! Спасибо.
EnableWindow(+дескриптор кнопки+,true)
Eraser (2006-10-15 01:47:00) [10]> [12] Psychedelic © (15.10.06 00:32)
сами-то поняли что написали? )
если да - то прокомментируйте )
Psychedelic (2006-10-15 00:32:00) [11]
> точного и оффициального рецепта нету. нужно использовать
> различные полу-хакерские технологии.. но вообще я этим вопросом
> не интересовался досконально.
???
var cursor:TPoint;
begin
GetCursorPos(cursor);
EnableWindow(WindowFromPoint(cursor){или дескриптор кнопки},true)
Проводим ммышкой по неактивным, и они становяться активными....
rll-progr (2006-10-14 23:07:00) [12]ну и на этом спасибо
Eraser (2006-10-14 23:05:00) [13]> [9] rll-progr © (14.10.06 23:00)
точного и оффициального рецепта нету. нужно использовать различные полу-хакерские технологии.. но вообще я этим вопросом не интересовался досконально.
rll-progr (2006-10-14 23:00:00) [14]нашел . ну фокус она полечает а как чтобы она активна стала?
rll-progr (2006-10-14 22:52:00) [15]Ну суть я понял. Есть ссылка на твою прогу WS а то я свою похожую дома на компе не нашел (на работе точно помню есть)
Eraser (2006-10-14 22:38:00) [16]> [6] rll-progr © (14.10.06 22:36)
ну для теста я накатал уж очень примитивный примерчик
procedure TForm1.Button1Click(Sender: TObject);
var
hWindow, hButton: HWND;
begin
hWindow := FindWindow('TfmOptions', nil);
hButton := StrToInt(edButtonHandle.Text);
SetForegroundWindow(hWindow);
SendMessage(hButton, WM_SETFOCUS, 0, 0);
end;
здесь нужно в поле ввода edButtonHandle вручную вводить хэндл нужной кнопки (который я получил с пом. программы Window Scaneer от InqSoft).
rll-progr (2006-10-14 22:36:00) [17]Раз уж ты попробовал не напишешь чкть по подробнее
Eraser (2006-10-14 22:25:00) [18]> [4] rll-progr © (14.10.06 22:18)
только что попробовал - катит.
rll-progr (2006-10-14 22:18:00) [19]Не так вроде не прокатит. Есть одно приложение с неактивной кнопкой и мое из которого я должен кнопку другого приложения сделать активной.
Eraser (2006-10-14 22:14:00) [20]> [2] rll-progr © (14.10.06 22:11)
примерное так:
вызвать SetForegroundWindow, потом послать нужной кнопке WM_SETFOCUS.