Форум: "Основная";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];
ВнизЭмуляция нажатия комбинаций клавиш Найти похожие ветки [Alt + A]
← →
Dr. Genius (2005-05-11 20:19) [0]Как программно эмулировать нажатие комбинаций клавиш [Alt + A] (код клавиши A – $41). И чтобы это сэмулированное нажатие клавиш принял Handle моей формы. В Интернете я нашел много исходников эмуляции нажатия клавиш, но ни одна у меня не заработала. Может быть это из-за того, что сэмулированную комбинацию должна принять моя форма, будучи в скрытом состоянии (Form1.Hide). Не знаю, но как бы то ни было должен быть какой-то способ. Мне нужна точная эмуляция, как если бы пользователь сам вручную нажимал [Alt + A].
И задам еще один вопрос (не хочу открывать для него отдельную тему): как открыть окно свойств папки (Properties), зная полный путь к этой самой папке.
← →
[wl] (2005-05-11 22:41) [1]могу посоветовать только попробовать WM_SYSKEYDOWN - она Alt-ами заведует, но сам я не пробовал... насчёт того, что скрытая форма не принимает события, я вроде бы не встречал, а если форма видимая, то она принимает это событие? если да, то можно не скрывать форму а поместить её в заоблачные координаты.
окно свойств кажется можно получить с помощью ShellAPI функции, щаз пороюсь в msdn
← →
Cobalt © (2005-05-11 22:49) [2]по 2-му вопросу - способ известный, очень простой, видел как-то, уже не помню. К папке, или файлу. Поищи на Исходниках (www.sources.ru)
Насчёт 1-го - тут какой-то низкоуровневый способ, не как сообщения, а keybd_event, кажется.
← →
[wl] (2005-05-11 22:50) [3]возможно вот эта функция:
BOOL SHObjectProperties( HWND hwnd,
DWORD dwType,
LPCWSTR szObject,
LPCWSTR szPage
);
← →
GreatMaster (2005-05-12 08:27) [4]Ну, типа так:
жмём Alt:
keybd_event(VK_MENU, 0, 0, 0);
нажание-отпускание A:
keybd_event(VK_A, 32, 0, 0);
keybd_event(VK_A, 32, KEYEVENTF_KEYUP, 0);
отпускаем Alt:
keybd_event(VK_MENU, MapVirtualKey(Key, 0), KEYEVENTF_KEYUP, 0);
← →
GreatMaster (2005-05-12 08:28) [5]Ну, типа так:
жмём Alt:
keybd_event(VK_MENU, 0, 0, 0);
нажание-отпускание A:
keybd_event(VK_A, 32, 0, 0);
keybd_event(VK_A, 32, KEYEVENTF_KEYUP, 0);
отпускаем Alt:
keybd_event(VK_MENU, MapVirtualKey(VK_MENU, 0), KEYEVENTF_KEYUP, 0);
← →
Dr. Genius (2005-05-12 15:27) [6]
> GreatMaster (12.05.05 08:28) [5]
Спасибо! Помогло!
← →
Dr. Genius (2005-05-15 09:45) [7]
> И задам еще один вопрос (не хочу открывать для него отдельную
> тему): как открыть окно свойств папки (Properties), зная
> полный путь к этой самой папке.
Никто не ответит на этот вопрос?
← →
nikkie © (2005-05-15 13:11) [8]ShellExecute(.. "properties" ..)
← →
begin...end © (2005-05-15 13:27) [9]> nikkie © (15.05.05 13:11) [8]
Только не ShellExecute, а ShellExecuteEx.
← →
Dr. Genius (2005-05-16 10:41) [10]
> Только не ShellExecute, а ShellExecuteEx.
Как обращаться к ShellExecuteEx? Какой у него синтаксис?
← →
begin...end © (2005-05-16 12:16) [11]> Dr. Genius (16.05.05 10:41) [10]
Список и назначение параметров ShellExecuteEx описаны в справке по WinAPI. См. Help -> Windows SDK или MSDN.var
Info: TShellExecuteInfoA;
begin
ZeroMemory(@Info, SizeOf(Info));
with Info do
begin
Wnd := MyForm.Handle;
cbSize := SizeOf(Info);
lpVerb := "properties";
lpFile := "C:\Windows";
fMask := SEE_MASK_INVOKEIDLIST
end;
ShellExecuteEx(@Info)
end.
← →
Dr. Genius (2005-05-18 10:10) [12]
> begin...end © (16.05.05 12:16) [11]
Спасибо! Помогло!
← →
Marser © (2005-05-26 18:32) [13]
> begin...end © (15.05.05 13:27) [9] [Новое
>сообщение][Ответить]
>> nikkie © (15.05.05 13:11) [8]
>
> Только не ShellExecute, а ShellExecuteEx.
Это как раз ShellExecute. ShellExecuteEx работает с одним параетром(структурой)
← →
begin...end © (2005-05-26 18:46) [14]> Marser © (26.05.05 18:32) [13]
Ты, может быть, приведёшь код, реализующий задачу [7] с помощью ShellExecute, чтобы не быть голословным?
← →
Marser © (2005-05-26 18:48) [15]
> begin...end © (26.05.05 18:46) [14] [Новое
>сообщение][Ответить]
>> Marser © (26.05.05 18:32) [13]
>
> Ты, может быть, приведёшь код, реализующий задачу [7]
> с помощью ShellExecute, чтобы не быть голословным?
Сейчас немножко не до того, но мне броилось в глаза то, что параметров явно больше одного. Никки тебе наверняка предоставит такой пример.
← →
Игорь Шевченко © (2005-05-26 19:17) [16]Marser © (26.05.05 18:48) [15]
Ты б хоть хелп почитал
← →
begin...end © (2005-05-26 19:28) [17]> Marser © (26.05.05 18:48) [15]
> мне броилось в глаза то, что параметров явно больше одного
Количество параметров функции, вроде бы, ничего не говорит о её функциональности, не так ли?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.039 c