Windows API получает HWND - PullRequest
       4

Windows API получает HWND

0 голосов
/ 20 марта 2011

Я разрабатываю часть программного обеспечения для вставки текста в расширенное редактирование другой программы, код выглядит так:

atlfe = FindWindowEx(wtlsplitterwindow, 0, "atl:0087d7a8" , null);

Это только одна строка: она работает нормально, проблема в том, что с каждым выпуском программы номер atl:0087d7a8 меняется, поэтому мне приходится использовать spy ++, чтобы получить новый и изменить его в коде.

Вопрос в том, могу ли я узнать это число из кода?

Кстати, я использую C #, VS2010.

Ответы [ 4 ]

1 голос
/ 20 марта 2011

Я предлагаю вам использовать UI Automation вместо сырого Windows API. Вам следует начать с инструмента UI Spy, чтобы определить иерархию интерфейса вашего приложения, оно будет более гибким для изменения.

См. Некоторые статьи на эту тему на SO:

Получить текущий URL из приложения форм C # windows

Как получить слово под курсором в Windows?

0 голосов
/ 20 марта 2011

Если Title всегда одно и то же, используйте его вместо имени класса

atlfe = FindWindowEx(wtlsplitterwindow, 0, null, "Title");

Подробнее о MSDN .

0 голосов
/ 20 марта 2011

Очевидно, что подокно не имеет заголовка и его имя класса отличается каждый раз, когда у вас остается только один метод.

Сначала вам нужно будет найти окно верхнего уровня этого приложения, используя либо EnumWindows, либо FindWindowEx, последнее, если вы можете идентифицировать его по имени класса и / или заголовку окна.

Как только у вас появится окно верхнего уровня, вы можете пройтись по детям, чтобы найти подокно, которое вы ищете. Предположительно, вы уже знаете отношения между окном верхнего уровня и подокном, на которое вы нацелены. В любом случае Spy ++ может сказать вам это.

0 голосов
/ 20 марта 2011

Прошло некоторое время с тех пор, как я связался с некоторыми из этих окон API. Я думаю, что это может иметь значение, хотя.

http://msdn.microsoft.com/en-us/magazine/cc163617.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...