Как я прерываю сообщения, отправляемые в окно?

Вы можете сделать это проще, используя array_combine :

$newArray = [];
$keys = ['name', 'sex', 'age', 'height', 'weight'];
foreach (explode(PHP_EOL, Storage::get('upload/test.txt')) as $line) {
    $newArray[] = array_combine($keys, explode(',', $line));
}

Или вы можете использовать array_map () и сделать что-то вроде:

[111 ]

10
задан Jon Tackabury 9 May 2009 в 17:31
поделиться

2 ответа

Вам необходимо ввести свой собственный код в процесс, которому принадлежат окна, сообщения от которых вы хотите перехватывать. К счастью, SetWindowsHookEx () упрощает это, хотя сначала у вас могут возникнуть небольшие проблемы, если вы до сих пор использовали его только для внутрипроцессного подключения.

Я могу порекомендовать две отличные статьи на эту тему:

  1. Джозефа Ньюкомбера Хуки и библиотеки DLL
  2. Роберта Кустера Три способа внедрения вашего кода в другой процесс
11
ответ дан 3 December 2019 в 20:43
поделиться

Если сообщение отправлено, а не отправлено, WH_GETMESSAGE его не увидит. Вам нужен WH_CALLWNDPROC . Если вы работаете с несколькими процессами, вам понадобится общесистемный перехватчик в DLL. Вы не упоминаете, как вы вызывали SetWindowsHookEx, поэтому я не знаю, не удалось ли ваше подключение, потому что оно не было глобальным, или потому что сообщение, которое вы искали, было отправлено .

Если вы раньше не работали с общесистемными хуками, у меня есть пример общесистемных хуков на моем веб-сайте здесь . Это клавиатурный крючок, но принцип тот же.

Остановите меня, если я непреднамеренно говорю здесь - ваш вопрос был настолько коротким, что я не могу сделать вывод о вашем уровне знаний. Но возиться с крючками действительно требует некоторого опыта ...

7
ответ дан 3 December 2019 в 20:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: