Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2013, 17:34   #1
DVeritas
Новичок
Джуниор
 
Регистрация: 27.02.2013
Сообщений: 3
По умолчанию Как получить список контролов другого процесса?

Здравствуйте.
Подскажите пожалуйста, можно ли как-то получить список контролов другого процесса?

Пробовал сделать следующим способом, но выбрасывает исключение:
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            foreach(Process p in Process.GetProcesses())
            {
                Console.WriteLine("process: " + p.ProcessName + " hwnd:" + p.MainWindowHandle);
                if (!p.MainWindowHandle.Equals(0))
                {
                    Form form = (Form) Form.FromHandle(p.MainWindowHandle);
                    Console.WriteLine(" --- main: " + form.Name);
                }
            }
            Console.ReadKey();
        }
    }
}
DVeritas вне форума Ответить с цитированием
Старый 27.02.2013, 17:57   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Теоретически можно, если залезть в адресное пространство этого процесса. У меня нет уверенности, что применение .NET для этой цели - удачная идея. Так, как у Вас, работать не должно - другое адресное пространство, описатели (handles) из него являются мусором для "вашего" процесса.
Abstraction вне форума Ответить с цитированием
Старый 27.02.2013, 18:00   #3
DVeritas
Новичок
Джуниор
 
Регистрация: 27.02.2013
Сообщений: 3
По умолчанию

Правильно понимаю, без использования WinAPI - никак ?
DVeritas вне форума Ответить с цитированием
Старый 27.02.2013, 18:08   #4
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Возможно, как-то можно, в .NET есть очень интересные классы. Но легко не будет.
Abstraction вне форума Ответить с цитированием
Старый 27.02.2013, 18:20   #5
DVeritas
Новичок
Джуниор
 
Регистрация: 27.02.2013
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Abstraction Посмотреть сообщение
... У меня нет уверенности, что применение .NET для этой цели - удачная идея. ...
Апликуха досталась по наследству, так что только .NET. Википедия обрадовала тем что Window Forms - обертка для WinAPI, я уж обрадовался, думал всё будет просто :D
Спасибо за ответы, напишите пожалуйста если вдруг появятся какие то мысли
DVeritas вне форума Ответить с цитированием
Старый 27.02.2013, 18:53   #6
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Ну вот вопрос на схожую тему на StackOverflow, копать надо куда-то туда.
Abstraction вне форума Ответить с цитированием
Старый 28.02.2013, 05:34   #7
winhttp
Пользователь
 
Регистрация: 29.07.2012
Сообщений: 98
По умолчанию

можно, с использованием сторонней библиотеки. встроенными средствами .NET - наврятли.
winhttp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить даннные ячейки другого документа екселя? treedo2 Microsoft Office Excel 11 16.05.2012 19:58
Как получить property объекта на форме из другого файла? stiver Microsoft Office Excel 3 29.08.2011 18:46
как получить путь процесса по его ID Аlex Общие вопросы C/C++ 7 14.12.2009 02:12
Как получить коллекцию контролов в документе WORD в VBA? Dima_S Microsoft Office Word 4 06.11.2009 17:52