VinSmile

|
Posted: Fri Nov 02, 2007 13:49 Post subject: |
|
|
Доброго всем времени суток. Тут уже довольно много написано о получении дескриптора окна Total Commander, но все же хочу спросить:
Есть несколько методов для получения этого дескриптора, каким из них предпочтительней пользоваться? Я приведу три из них, которые с моей точки зрения, "имеют смысл быть"
1. Проще всего использовать функцию FindWindow( "TTOTAL_CMD", NULL ) в том месте где нужно получить дескриптор, это еще удобно тем, что не нужно использовать глобальные переменные (хотя в данном случае это не очень страшно, так как дескриптор будет один для всех ). Но!!! Но, поскольку эта функция ищет окна в их Z порядке начиная с верху, нужно быть точно уверенным что в данный момент "нужный" экземпляр Total Commander - а использовался последним среди всех, возможно, открытых!!!
2. Гораздо надежней использовать поиск окна по классу, в процессе в котором этот плагин запущен (Пример выше, в посте от Maximus с поправкой от VadiMGP)... Но метод на много более громоздкой, и подразумевает использование глобальных переменных ( эх... как без них сложно )
3. Использовать параметр MainWin из функции FsExecuteFile()... Тут нужно немного уточнить... Почему то, при первом обращении к плагину (для каждой сессии Total Commander), она вызывается с пустой строкой в качестве параметра RemoteName. Я пытался найти описание этого случая в спецификации, но там ни слова... Если кто-то имеет более подробную спецификацию, отпишите пожалуйста!!! Так как это наиболее простой способ получить дескриптор окна!!! |
|