Показать сообщение отдельно
Старый 01.11.2013, 03:36   #5
riot
AnyKey`щик
 
Регистрация: 01.11.2013
Сообщений: 14
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Пару вопросов на счет окон.

Прошу прощения. Я совсем начинающий программист и обладаю минимальными познаниями. Я медленно и уверено продолжаю своё обучение. И пробую написание простейших программ. У меня убедительная просьба не игнорить меня как это делали на других форумах.

Дело в том что я столкнулся с проблемой(для меня) это API(EnumWindows function в частности), и ни как не могу понять принцип её работы. И не могу найти подходящей для меня(чайника) статьи урока на русском где разжёвано описывалось нужная информация.

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

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;

namespace pb0._1
{
    class Program
    {

        private delegate bool EnumWindowsProc(IntPtr hWnd, IntPtr lParam);

        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]

        private static extern bool EnumWindows(EnumWindowsProc callback, IntPtr extraData);

        static void Main(string[] args)
        {
            System.Diagnostics.Process[] allprocess = System.Diagnostics.Process.GetProcesses();
            Console.WriteLine("Создана allprocess, в неё записаны все процессы. Количество : " + allprocess.Length);

            System.Diagnostics.Process[] xxxprocess = System.Diagnostics.Process.GetProcessesByName("xxx");
            Console.WriteLine("Создана xxxprocess, в неё записаны процессы с именем xxx. Количество : " + xxxprocess.Length);

            // Console.WriteLine("{0}", allprocess); // вывести имя процесса под номером указанном в "{}"

            // проинициализировать переменную NeedHandle
            foreach (System.Diagnostics.Process anti in System.Diagnostics.Process.GetProcesses()) // перебираем все процесы
            {
                if (anti.MainWindowTitle.ToString() == "abcd") // находим окно по точному заголовку окна
            //  if (anti.MainWindowTitle.StartsWith("abcd")) // находим окно по первой букве заголовка окна
                {
                    Console.WriteLine("Найдено окно c заголовком abcd");
                    IntPtr handle = anti.MainWindowHandle;
                    Console.WriteLine("Создаём IntPtr handle переменную и присваиваем ей указатель на найденое окно");
                }
            }

            

            Console.ReadLine();

            // using System.Diagnostics;
            // using System.IO;
            // Process process = Process.GetProcesses().FirstOrDefault(x => x.ProcessName == "calc");
            // IntPtr handle = (process != null) ? process.MainWindowHandle : IntPtr.Zero;

        }
    }
}
(Offline)
 
Ответить с цитированием