Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2007.06.10;
Скачать: [xml.tar.bz2];

Вниз

Управление окном другого приложения   Найти похожие ветки 

 
rll-progr ©   (2006-10-14 14:29) [0]

Есть некое приложение. В нем есть видимая неактивная кнопка. Можно ли  подключиться к этому приложению и сделать кнопку активной. Очень надо.


 
Eraser ©   (2006-10-14 22:03) [1]

> [0] rll-progr ©   (14.10.06 14:29)

можно, особенно если в данный момент твое приложение активно.


 
rll-progr ©   (2006-10-14 22:11) [2]

а как это сделать?


 
Eraser ©   (2006-10-14 22:14) [3]

> [2] rll-progr ©   (14.10.06 22:11)

примерное так:
вызвать SetForegroundWindow, потом послать нужной кнопке WM_SETFOCUS.


 
rll-progr ©   (2006-10-14 22:18) [4]

Не так вроде не прокатит. Есть одно приложение с неактивной кнопкой и мое из которого я должен кнопку другого приложения сделать активной.


 
Eraser ©   (2006-10-14 22:25) [5]

> [4] rll-progr ©   (14.10.06 22:18)

только что попробовал - катит.


 
rll-progr ©   (2006-10-14 22:36) [6]

Раз уж ты попробовал не напишешь чкть по подробнее


 
Eraser ©   (2006-10-14 22:38) [7]

> [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:52) [8]

Ну суть я понял. Есть ссылка на твою прогу WS а то я свою похожую дома на компе не нашел (на работе точно помню есть)


 
rll-progr ©   (2006-10-14 23:00) [9]

нашел . ну фокус она полечает а как чтобы она активна стала?


 
Eraser ©   (2006-10-14 23:05) [10]

> [9] rll-progr ©   (14.10.06 23:00)

точного и оффициального рецепта нету. нужно использовать различные полу-хакерские технологии.. но вообще я этим вопросом не интересовался досконально.


 
rll-progr ©   (2006-10-14 23:07) [11]

ну и на этом спасибо


 
Psychedelic ©   (2006-10-15 00:32) [12]


> точного и оффициального рецепта нету. нужно использовать
> различные полу-хакерские технологии.. но вообще я этим вопросом
> не интересовался досконально.

???


var cursor:TPoint;
begin
GetCursorPos(cursor);

EnableWindow(WindowFromPoint(cursor){или дескриптор кнопки},true)


Проводим ммышкой по неактивным, и они становяться активными....


 
Eraser ©   (2006-10-15 01:47) [13]

> [12] Psychedelic ©   (15.10.06 00:32)

сами-то поняли что написали? )
если да - то прокомментируйте )


 
rll-progr ©   (2006-10-15 13:33) [14]

РАБОТАЕТ!!!!!! Спасибо.
EnableWindow(+дескриптор кнопки+,true)


 
Leonid Troyanovsky ©   (2006-10-15 14:27) [15]


> rll-progr ©   (15.10.06 13:33) [14]


Недоступный контрол фокус не получает,
так что не надо было [9].

Неактивная и недоступная - две большие разницы.

--
Regards, LVT.


 
Eraser ©   (2006-10-15 14:36) [16]

> [9] rll-progr ©   (14.10.06 23:00)
> нашел . ну фокус она полечает а как чтобы она активна стала?

учитесь по-четче формулировать вопросы.


 
bb2   (2007-01-03 14:17) [17]

А как вообще сделать так, чтобы одно приложение управляло другим? Можно ли, чтобы программа САМА нашла это другое приложение (например, по имени его EXE-файла), открыла в нём нужные окна и т.д. Если кто знает, подскажите, пожалуйста!


 
kaZaNoVa ©   (2007-01-03 14:28) [18]

bb2   (03.01.07 14:17) [17]
можно, а нужно ли? имхо лучше OLE-автоматизация ..


 
bb2   (2007-01-03 14:34) [19]

Да вообще-то хотелось бы... А как можно?


 
kaZaNoVa ©   (2007-01-03 14:39) [20]

bb2   (03.01.07 14:34) [19]
записать действия юзера и сделать в проге ..

ну типа юзер запускает прогу водит мышкой все это мутить ... но имхо такой подход тупиковый ...(

функции по теме:

keybd_event()
mouse_event()
GetCursorPos()
SetCursorPos()
SetForegroundWindow()


 
bb2   (2007-01-03 14:49) [21]

Дело в том, что приложение, которым мне нужно управлять, чужое. Возможна ли при этом OLE-автоматизация?

За функции - спасибо, функции отличные! Обязательно применю.


 
kaZaNoVa ©   (2007-01-03 14:54) [22]

bb2   (03.01.07 14:49) [21]
Дело в том, что приложение, которым мне нужно управлять, чужое. Возможна ли при этом OLE-автоматизация?

ИМХО, если в чужой проге это не предусмотрено то не получится



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

Форум: "WinAPI";
Текущий архив: 2007.06.10;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.041 c
2-1179397911
Megabyte
2007-05-17 14:31
2007.06.10
Не ловится класс исключения


2-1179823907
Lobach
2007-05-22 12:51
2007.06.10
Как получить число из строки


2-1179733608
=Teddy=
2007-05-21 11:46
2007.06.10
Как загрузить в приложение и проиграть mp3 файл?


15-1179152262
denis24
2007-05-14 18:17
2007.06.10
сохранение настроек IDE


15-1179003949
P
2007-05-13 01:05
2007.06.10
Программист = писатель?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский