2013-06-01 3 views
-2

Я потратил некоторое время на поиск, поэтому, пожалуйста, извините меня, если об этом кто-то уже ответил. Я написал программу на C# для выполнения различных задач, но вместо того, чтобы собирать информацию из файлов, я хотел бы получить несколько значений из другой запущенной программы, которая будет открыта одновременно с моим собственным программным обеспечением. Эта другая программа будет иметь как переменные, так и экранные данные, которые мне нужно поместить в собственные переменные. Есть ли хороший способ сделать это? Я знаю, что у C++ есть некоторые методы, но я их не знаю; так что даже если мне нужно написать его на C++ и вызвать его через C#, я в порядке.Сбор информации из другого окна

Редактировать: больше информации; Есть 2 области окна сообщений и 3 переменные int, которые мне нужно будет захватить данные во время выполнения.

+0

Было бы полезно узнать, какие типы элементов управления (поле редактирования, изображение ect) в «другой программе» вы пытаетесь получить значения. –

+0

я бы предложил читать о WCF - один из многих примеров учебник онлайн: http://www.c-sharpcorner.com/UploadFile/4d56e1/how-to-create-and-consume-wcf-services/ когда вы сталкиваетесь с определенной трудностью, которую вы не можете решить, тогда настало время задать вопрос, и люди приложим все усилия, чтобы ответить, в настоящее время ваш пост является неопределенным и не имеет реального вопроса. –

+0

Спасибо за информацию, я не знал о WCF до сих пор. Что касается неопределенного, я не ценю нисходящее движение, но информации больше не нужно. Во второй программе есть переменные int, которые мне нужны в моей программе. Вот и все. – Sirius

ответ

0

Если вы хотите подключиться к управляемому приложению, вы можете увидеть, как это делает Snoop. Он является открытым исходным кодом: http://snoopwpf.codeplex.com/

... а не сбор информации из файлов, которые я хотел бы ...

Ну, а не какой-либо из этих подходов вы можете общаться с использованием стандартных не- файловая связь, такая как WCF (или альтернатива с меньшей кривой обучения).

0

Рассмотрите возможность использования EnumWindows, чтобы перечислить все окна.

[DllImport("user32.dll")] 
[return: MarshalAs(UnmanagedType.Bool)] 
static extern bool EnumWindows(EnumWindowsProc lpEnumFunc, IntPtr lParam); 

После этого вы можете получить дополнительную информацию об этих окнах. Например, вот blog post, который описывает, как получить заголовки окон.

Смежные вопросы