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

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

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

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

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

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

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


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

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

9   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы