C # и чтение звука из другого процесса? - PullRequest
3 голосов
/ 21 октября 2010

В настоящее время я разрабатываю приложение, которое напрямую взаимодействует с игрой-головоломкой на C #.Он может играть, просматривая состояние игры на экране и затем решая для следующего хода, который должен сделать.

Приложение захватывает ширину и высоту игры, отыскивая процесс и захватывая его прямоугольник, какниже.

var p = Process.GetProcessesByName("game")[0];
var r = new User32.Rect();

// Bring the window to the foreground in order to get its coordinates.
User32.SetForegroundWindow(p.MainWindowHandle);
User32.GetWindowRect(p.MainWindowHandle, ref r);

// Get the width and height of the window.
int width = r.right - r.left;
int height = r.bottom - r.top;

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

Я читал о возможностиподключиться к входу «что вы слышите» на определенных звуковых картах, но это будет означать, что если звук воспроизводится полностью независимым приложением, это будет мешать, верно?Я действительно надеюсь, что есть решение, которое зависит от процесса.

Заранее спасибо за вашу помощь.

1 Ответ

1 голос
/ 05 ноября 2010

Вы можете сделать это с помощью DLL-инъекции .Один из методов - подключиться в качестве отладчика, перехватывать вызовы звуковых функций Windows и делать то, что вам нужно вместо этого.

Microsoft Research предлагает расширенный способ перехвата любого API: Windows Detours .У меня нет опыта с этим, но это выглядит довольно мощным.Вы можете скачать API здесь .Обратите внимание, что использование этого API в коммерческом программном обеспечении стоит один раз в 10 000 долларов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...