WinApi считать данные из стороннего приложения - C#

Узнай цену своей работы

Формулировка задачи:

Всем привете! Ребят, выручайте. Мне необходимо по нажатию клавиши вытащить номер входящего вызова из программы X-lite(прога для IP телефонии). Что я значится делаю: подключаю значится необходимое для работы
        [DllImport("user32.dll")]
        private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
 
        [DllImport("user32")]
        [return: MarshalAs(UnmanagedType.Bool)]
        public static extern bool EnumChildWindows(IntPtr window, EnumWindowProc callback, IntPtr i);
 
        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, [Out] StringBuilder lParam);
 
         public static List<IntPtr> GetChildWindows(IntPtr parent)
        {
            List<IntPtr> result = new List<IntPtr>();
            GCHandle listHandle = GCHandle.Alloc(result);
            try
            {
                EnumWindowProc childProc = new EnumWindowProc(EnumWindow);
                EnumChildWindows(parent, childProc, GCHandle.ToIntPtr(listHandle));
            }
            finally
            {
                if (listHandle.IsAllocated)
                    listHandle.Free();
            }
            return result;
        }
и по нажатию на кнопку(на сколько я понимаю) получаю дискрипторы приложения(хотя сам не понимаю, че это за х.. ну условно ИДинтификаторы окна и всех объектов в нем )
            List<IntPtr> ls = new List<IntPtr>();
            string enum_ = string.Empty;
            IntPtr hWnd = FindWindow(null, "X-lite");
            if (!hWnd.Equals(IntPtr.Zero))
            { ls = GetChildWindows(hWnd);}
            Array.ForEach(ls.ToArray(), i => enum_ += i.ToString() + Environment.NewLine );
            richTextBox1.AppendText(enum_);
Как мне теперь вытащить данные из X-lite. Если потыкать на окно X-lite'a программой Spy++, то она не видит каких либо объектов в ней, только воспринимает всю программу как одно целое(то есть нет ни label, textbox и подобных объектов нет). Как мне выйти из этой ситуации. Может кто объяснит, все ли вообще я правильно понимаю и как в данном случае вытащить текст? И на сколько я понимаю вытащить текст из программы мне теперь необходимо с помощью SendMessage..

Решение задачи: «WinApi считать данные из стороннего приложения»

textual
Листинг программы
IntPtr.Add(process.MainModule.BaseAddress, 0xfff)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4 из 5
Похожие ответы