![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
key_event [D7, WinXP]
pomashok © (2004-12-18 22:37:00)Привет!Подскажите как послать сообщение от "Мультимедийной" клавиши скажем "PLAY" ?
SendMessage...?
Piter (2004-12-26 18:06:00) [1]GuAV © (26.12.04 15:32) [36]
Как я могу юзать в ней MF !?
Да, я слышал о проблемах с MF в win98... ну а что я могу поделать? Я даже не знаю в чем причина...
GuAV (2004-12-26 15:32:00) [2]Piter © (26.12.04 15:21) [35]
Знаешь, вопрос нужно ставить по - другому:
Как я могу юзать в ней MF !?
Ибо с остальным: Delphi, MSDN Library, Word, Excel, IE, etc - никаких проблем.
Piter (2004-12-26 15:21:00) [3]GuAV © (26.12.04 13:31) [33]
т.к. у меня win98
???? GuAV! Как ты можешь в ней работать...
pomashok (2004-12-26 14:15:00) [4]GuAV © [33]
APPCOMMAND_VOLUME_MUTE = 8;это я выполнил таким образомSendMessage(FindWindow(PChar('SystemTray_Main'),nil),WM_APPCOMMAND,0,8 shl 16); // MUTEеще поддерживает Volum UP/Down
а к остальным я подобраться не могу.
нада чет через waveOutSetVolume ... но как пока что не получается ....
т.е. судя по этому сообщение отправлять себе или HWND_DESKTOP. Проверить не могу, т.к. у меня win98, и это сообщение не поддерживается.
я не большой программер... поэтому неособо понимаю кусочки кода :(
GuAV (2004-12-26 13:31:00) [5]2. если я хачу выполнить APPCOMMAND_VOLUME_MUTE = 8;
If a child window does not process this message and instead calls DefWindowProc, DefWindowProc will send the message to its parent window. If a top level window does not process this message and instead calls DefWindowProc, DefWindowProc will call a shell hook with the hook code equal to HSHELL_APPCOMMAND.
т.е. судя по этому сообщение отправлять себе или HWND_DESKTOP. Проверить не могу, т.к. у меня win98, и это сообщение не поддерживается.
pomashok (2004-12-26 03:21:00) [6]ОГРОМНОЕ спасибо! работает ;)
1.еще вопросик по ходу... если приложение которое мы FindWindow находиться в трее, срабатывать фсиравно будет?
2. если я хачу выполнить APPCOMMAND_VOLUME_MUTE = 8;
но не в WMP ... как непосредственно обратиться к той части которая отвечает за ЗВУК ?(приложение или что то в этом роде...типа "ОБЩАЯ ГРОМКОСТЬ" нах в трее)
GuAV (2004-12-26 02:41:00) [7]pomashok (26.12.04 2:36) [30]
SendMessage(FindWindow('WMPlayerApp', nil),
WM_APPCOMMAND, 0, 46 shl 16);
pomashok (2004-12-26 02:36:00) [8]
SendMessage(FindWindow('WMPlayerApp', nil),так не работает...
WM_APPCOMMAND, 0, 46 );
GuAV (2004-12-26 02:13:00) [9]В смысле по предыдущему ответу надо обрабатывать уже не WM_KEYDOWN, а WM_APPCOMMAND.
Вот кчтати фрагмент из ftp://delphi-jedi.org/api/win32api.zip
APPCOMMAND_BROWSER_BACKWARD = 1;
{$EXTERNALSYM APPCOMMAND_BROWSER_BACKWARD}
APPCOMMAND_BROWSER_FORWARD = 2;
{$EXTERNALSYM APPCOMMAND_BROWSER_FORWARD}
APPCOMMAND_BROWSER_REFRESH = 3;
{$EXTERNALSYM APPCOMMAND_BROWSER_REFRESH}
APPCOMMAND_BROWSER_STOP = 4;
{$EXTERNALSYM APPCOMMAND_BROWSER_STOP}
APPCOMMAND_BROWSER_SEARCH = 5;
{$EXTERNALSYM APPCOMMAND_BROWSER_SEARCH}
APPCOMMAND_BROWSER_FAVORITES = 6;
{$EXTERNALSYM APPCOMMAND_BROWSER_FAVORITES}
APPCOMMAND_BROWSER_HOME = 7;
{$EXTERNALSYM APPCOMMAND_BROWSER_HOME}
APPCOMMAND_VOLUME_MUTE = 8;
{$EXTERNALSYM APPCOMMAND_VOLUME_MUTE}
APPCOMMAND_VOLUME_DOWN = 9;
{$EXTERNALSYM APPCOMMAND_VOLUME_DOWN}
APPCOMMAND_VOLUME_UP = 10;
{$EXTERNALSYM APPCOMMAND_VOLUME_UP}
APPCOMMAND_MEDIA_NEXTTRACK = 11;
{$EXTERNALSYM APPCOMMAND_MEDIA_NEXTTRACK}
APPCOMMAND_MEDIA_PREVIOUSTRACK = 12;
{$EXTERNALSYM APPCOMMAND_MEDIA_PREVIOUSTRACK}
APPCOMMAND_MEDIA_STOP = 13;
{$EXTERNALSYM APPCOMMAND_MEDIA_STOP}
APPCOMMAND_MEDIA_PLAY_PAUSE = 14;
{$EXTERNALSYM APPCOMMAND_MEDIA_PLAY_PAUSE}
APPCOMMAND_LAUNCH_MAIL = 15;
{$EXTERNALSYM APPCOMMAND_LAUNCH_MAIL}
APPCOMMAND_LAUNCH_MEDIA_SELECT = 16;
{$EXTERNALSYM APPCOMMAND_LAUNCH_MEDIA_SELECT}
APPCOMMAND_LAUNCH_APP1 = 17;
{$EXTERNALSYM APPCOMMAND_LAUNCH_APP1}
APPCOMMAND_LAUNCH_APP2 = 18;
{$EXTERNALSYM APPCOMMAND_LAUNCH_APP2}
APPCOMMAND_BASS_DOWN = 19;
{$EXTERNALSYM APPCOMMAND_BASS_DOWN}
APPCOMMAND_BASS_BOOST = 20;
{$EXTERNALSYM APPCOMMAND_BASS_BOOST}
APPCOMMAND_BASS_UP = 21;
{$EXTERNALSYM APPCOMMAND_BASS_UP}
APPCOMMAND_TREBLE_DOWN = 22;
{$EXTERNALSYM APPCOMMAND_TREBLE_DOWN}
APPCOMMAND_TREBLE_UP = 23;
{$EXTERNALSYM APPCOMMAND_TREBLE_UP}
APPCOMMAND_MICROPHONE_VOLUME_MUTE = 24;
{$EXTERNALSYM APPCOMMAND_MICROPHONE_VOLUME_MUTE}
APPCOMMAND_MICROPHONE_VOLUME_DOWN = 25;
{$EXTERNALSYM APPCOMMAND_MICROPHONE_VOLUME_DOWN}
APPCOMMAND_MICROPHONE_VOLUME_UP = 26;
{$EXTERNALSYM APPCOMMAND_MICROPHONE_VOLUME_UP}
APPCOMMAND_HELP = 27;
{$EXTERNALSYM APPCOMMAND_HELP}
APPCOMMAND_FIND = 28;
{$EXTERNALSYM APPCOMMAND_FIND}
APPCOMMAND_NEW = 29;
{$EXTERNALSYM APPCOMMAND_NEW}
APPCOMMAND_OPEN = 30;
{$EXTERNALSYM APPCOMMAND_OPEN}
APPCOMMAND_CLOSE = 31;
{$EXTERNALSYM APPCOMMAND_CLOSE}
APPCOMMAND_SAVE = 32;
{$EXTERNALSYM APPCOMMAND_SAVE}
APPCOMMAND_PRINT = 33;
{$EXTERNALSYM APPCOMMAND_PRINT}
APPCOMMAND_UNDO = 34;
{$EXTERNALSYM APPCOMMAND_UNDO}
APPCOMMAND_REDO = 35;
{$EXTERNALSYM APPCOMMAND_REDO}
APPCOMMAND_COPY = 36;
{$EXTERNALSYM APPCOMMAND_COPY}
APPCOMMAND_CUT = 37;
{$EXTERNALSYM APPCOMMAND_CUT}
APPCOMMAND_PASTE = 38;
{$EXTERNALSYM APPCOMMAND_PASTE}
APPCOMMAND_REPLY_TO_MAIL = 39;
{$EXTERNALSYM APPCOMMAND_REPLY_TO_MAIL}
APPCOMMAND_FORWARD_MAIL = 40;
{$EXTERNALSYM APPCOMMAND_FORWARD_MAIL}
APPCOMMAND_SEND_MAIL = 41;
{$EXTERNALSYM APPCOMMAND_SEND_MAIL}
APPCOMMAND_SPELL_CHECK = 42;
{$EXTERNALSYM APPCOMMAND_SPELL_CHECK}
APPCOMMAND_DICTATE_OR_COMMAND_CONTROL_TOGGLE = 43;
{$EXTERNALSYM APPCOMMAND_DICTATE_OR_COMMAND_CONTROL_TOGGLE}
APPCOMMAND_MIC_ON_OFF_TOGGLE = 44;
{$EXTERNALSYM APPCOMMAND_MIC_ON_OFF_TOGGLE}
APPCOMMAND_CORRECTION_LIST = 45;
{$EXTERNALSYM APPCOMMAND_CORRECTION_LIST}
APPCOMMAND_MEDIA_PLAY = 46;
{$EXTERNALSYM APPCOMMAND_MEDIA_PLAY}
APPCOMMAND_MEDIA_PAUSE = 47;
{$EXTERNALSYM APPCOMMAND_MEDIA_PAUSE}
APPCOMMAND_MEDIA_RECORD = 48;
{$EXTERNALSYM APPCOMMAND_MEDIA_RECORD}
APPCOMMAND_MEDIA_FAST_FORWARD = 49;
{$EXTERNALSYM APPCOMMAND_MEDIA_FAST_FORWARD}
APPCOMMAND_MEDIA_REWIND = 50;
{$EXTERNALSYM APPCOMMAND_MEDIA_REWIND}
APPCOMMAND_MEDIA_CHANNEL_UP = 51;
{$EXTERNALSYM APPCOMMAND_MEDIA_CHANNEL_UP}
APPCOMMAND_MEDIA_CHANNEL_DOWN = 52;
{$EXTERNALSYM APPCOMMAND_MEDIA_CHANNEL_DOWN}
FAPPCOMMAND_MOUSE = $8000;
{$EXTERNALSYM FAPPCOMMAND_MOUSE}
FAPPCOMMAND_KEY = 0;
{$EXTERNALSYM FAPPCOMMAND_KEY}
FAPPCOMMAND_OEM = $1000;
{$EXTERNALSYM FAPPCOMMAND_OEM}
FAPPCOMMAND_MASK = $F000;
{$EXTERNALSYM FAPPCOMMAND_MASK}
function GET_APPCOMMAND_LPARAM(lParam: LPARAM): Shortint;
{$EXTERNALSYM GET_APPCOMMAND_LPARAM}
function GET_DEVICE_LPARAM(lParam: LPARAM): WORD;
{$EXTERNALSYM GET_DEVICE_LPARAM}
function GET_MOUSEORKEY_LPARAM(lParam: LPARAM): WORD;
{$EXTERNALSYM GET_MOUSEORKEY_LPARAM}
function GET_FLAGS_LPARAM(lParam: LPARAM): Integer;
{$EXTERNALSYM GET_FLAGS_LPARAM}
function GET_KEYSTATE_LPARAM(lParam: LPARAM): Integer;
{$EXTERNALSYM GET_KEYSTATE_LPARAM}
GuAV (2004-12-26 02:05:00) [10]pomashok (26.12.04 1:09) [26]
откуда брать константы shl 16 ?
:-)
>GuAV © (20.12.04 23:06) [12]
>pomashok (20.12.04 20:33) [7]
>как получить их константы?
>
> или скачать файлы где они прописаны. Например:
> ftp://delphi-jedi.org/api/win32api.zip- SDK файлы
>переведенные в Delphi.
>
> или написать программу отлавливающую WM_KEYDOWN и
> записывающую/отображающую wParam, затем понажимать эти
> клавиши.
Piter (2004-12-26 01:54:00) [11]pomashok (26.12.04 1:09) [26]
откуда брать константы shl 16 ?
:)))))))))))))))))
pomashok (2004-12-26 01:09:00) [12]
procedure TForm1.Button5Click(Sender: TObject);
begin
SendMessage(FindWindow('WMPlayerApp', nil),
WM_APPCOMMAND,
0,
APPCOMMAND_MEDIA_PLAY_PAUSE shl 16); // здесь выдает ошибку
end;
выдает ошибку!
GuAV © [6]
откуда брать константы shl 16 ? ссылочку или кусок кода ;)
все таки хотелось бы добить этот вопрос!я думаю он многих интересует...
GuAV (2004-12-24 23:53:00) [13]Правильная ссылка уже была у тебя, сужу по [2].
SendMessage(FindWindow('WMPlayerApp', nil), WM_APPCOMMAND, 0, APPCOMMAND_MEDIA_PLAY_PAUSE shl 16);
pomashok (2004-12-24 22:15:00) [14]ссылку киньте толковую какую нить...
GuAV (2004-12-22 23:21:00) [15]2 pomashok (22.12.04 22:18) [22]
> а где писать не совсем понял...
Перечитай внимательно pomashok (19.12.04 20:47) [2]
pomashok (2004-12-22 22:18:00) [16]GuAV ©т.е. создаем function....
Т.е. чтоб писать APPCOMMAND_ХХХХ в lParam надо эти константы shl 16.APPCOMMAND_ХХХХ - это имеется ввиду APPCOMMAND_MEDIA_PLAY ну и д.р.? а где писать не совсем понял...
GuAV (2004-12-22 21:55:00) [17]pomashok (19.12.04 20:47) [2]
cmd = GET_APPCOMMAND_LPARAM(lParam);
function GET_APPCOMMAND_LPARAM(lParam: LPARAM): Shortint;
begin
Result := Shortint(HIWORD(lParam) and not FAPPCOMMAND_MASK);
end;
Т.е. чтоб писать APPCOMMAND_ХХХХ в lParam надо эти константы shl 16.
pomashok (2004-12-22 21:30:00) [18]ничего не получается... какие еще мысли есть ?
Просто Джо (2004-12-22 13:10:00) [19]...и не надо
8()
pomashok (2004-12-21 21:22:00) [20]неработает.....;(