Прошу прощения. Я совсем начинающий программист и обладаю минимальными познаниями. Я медленно и уверено продолжаю своё обучение. И пробую написание простейших программ. У меня убедительная просьба не игнорить меня как это делали на других форумах.
Дело в том что я столкнулся с проблемой(для меня) это 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;
}
}
}