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

Вниз

Подскажите пожалуйста!   Найти похожие ветки 

 
Alex870   (2001-11-26 21:27) [0]

Привет всем! Помогите пожалуйста разобраться с такой задачей: Запущено приложение,имеющее элементы SPEEDBUTTON (у которых нет дескриптора), могу ли я из своей программы вызвать "Click" данного элемента. Есть так же главное меню, в котором команды этх кнопок дублируются, но к сожелению и оно дескриптора не имеет.Заранее всем спасибо!


 
ggsoft   (2001-11-26 22:00) [1]

Если забросишь на форму ActionList, закладка Standart палитры компонентов и свяжешь элементы меню и
SpeedButton-ы с соответствующими «акциями», тогда легко
можно вызвать ActionMenuFile1.Execute;.

С уважением, Евгений!


 
Alex870   (2001-11-26 22:07) [2]

Спасибо Евгений, но дело в том, что меню находится не на моем приложении.Если знаешь, как отправляются и принимаются сообщения от подобных элементов системой, напиши, буду очень признателен!
Alex870@newmail.ru


 
ggsoft   (2001-11-26 22:53) [3]

Нет, Alex870, к сожалению не знаю как послать, а от элементов меню сообщения посылаются в окно в виде WM_COMMAND, посмотри Help по WinAPI - формирование (из чего состоит) WPARAM и LPARAM, возможно SendMessageTimeout(...). Но обработает ли его окно - не знаю. Под W2K работает (по-моему) функция <SendThreadMessage(...)>, почему под W2K - описание в MSDN не нашел, хотя в литературе читал.

С уважением, Евгений!


 
Alex870   (2001-11-28 22:31) [4]

Привет Евгений, если ещё читаешь этот "чат". Самая главная проблема-это получить дескриптор, потом можно пользоваться и wm_command и другими функциями. Т.е. на счет wparam b lparam это всего лишь комманда и парамтр(параметры её), но в любо случае нужно знать хендл...
Если чё нароешь, пиши. Спасибо за ответ!
Алексей.


 
Donal   (2001-11-29 11:06) [5]

GetMenu (hWnd);


 
ggsoft   (2001-11-29 19:54) [6]

to Alex870.

Например, вот так, если с меню чужого окна.


procedure TForm2.N1Click(Sender: TObject);
var
hwndWindow: HWND;
hmnClassMenu, hmnSubMenu: HMENU;
dwDummy: DWORD;
begin
//получяем Handle нужного окна
hwndWindow := FindWindow("Some cool class", "And window name");
//если нашли его
if hwndWindow <> 0 then begin
//получить описатель меню класса, т. е. искомого окна
hmnClassMenu := GetMenu(hwndWindow);
//получить описатель первого подменю (например - 0 т. е. обычно "File")
hmnSubMenu := GetSubMenu(hmnClassMenu, 0{for example});
//послать сообщение окну. Почему не SendMessage(...)? А вдруг это общение окно будет очень долго обрабатывать и твое приложение "зависнет", так что в любом случае через 5 секунд продолжим работу.
SendMessageTimeout(hwndWindow,
WM_COMMAND,
//в старшем слове WPARAM - содержится ID меню.
//так и получим его из известного субменю("File")
MAKEWPARAM(0, GetMenuItemID(hmnSubMenu, 1{for example})),
0,
SMTO_ABORTIFHUNG,
5000,
dwDummy);
end
else ShowMessage("No requsted window found");
end;

Да только зачем все это - какой интерес.

С уважением, Евгений!

PS. Не проверял, но должно работать!



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

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

Наверх





Память: 0.46 MB
Время: 0.004 c
14-90355
limon
2001-12-03 18:31
2002.01.28
Пример диалога со службой технической поддержки


3-90241
Грифон
2001-12-22 00:59
2002.01.28
возникла следующая проблемка:


1-90291
Ig
2002-01-10 19:17
2002.01.28
Как сделать COM DLL?


4-90407
YUS
2001-11-24 06:47
2002.01.28
CreateDialog ( R )


3-90201
victor
2001-12-21 13:09
2002.01.28
поле со счетчиком в ОРАКЛЕ





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский