Не совсем лабвьюшный вопрос (общий)
-
Sergey Ivanov
- expert
- Сообщения: 1217
- Зарегистрирован: 01 мар 2009, 20:54
- Награды: 5
- Версия LabVIEW: 2018
- Откуда: Санкт-Петербург, Кронштадт
- Благодарил (а): 11 раз
- Поблагодарили: 1 раз
- Контактная информация:
Не совсем лабвьюшный вопрос (общий)
Подскажите, пожалуйста, возможно ли задать начальное положение окна приложения, которое запускается через командную строку ?
Добро пожаловать на http://rk-stud.ru/
-
Vitekkz88
- expert
- Сообщения: 1100
- Зарегистрирован: 21 янв 2014, 15:45
- Награды: 3
- Версия LabVIEW: 12,13,14
- Откуда: Томск
- Контактная информация:
Re: Не совсем лабвьюшный вопрос (общий)
Так понимаю,что в самом приложении этого сделать никак не получится?Sergey Ivanov 6 минут назад
Подскажите, пожалуйста, возможно ли задать начальное положение окна приложения, которое запускается через командную строку ?
Есть утилита - Cmdow. Она позволяет манипулировать окнами.
Гляньте,может подойдет.
http://old.computerra.ru/gid/rtfm/system/272855/
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
-А. И. Солженицын
-
Sergey Ivanov
- expert
- Сообщения: 1217
- Зарегистрирован: 01 мар 2009, 20:54
- Награды: 5
- Версия LabVIEW: 2018
- Откуда: Санкт-Петербург, Кронштадт
- Благодарил (а): 11 раз
- Поблагодарили: 1 раз
- Контактная информация:
Re: Не совсем лабвьюшный вопрос (общий)
То что надо. Спасибо большое !
Добро пожаловать на http://rk-stud.ru/
-
Sergey Ivanov
- expert
- Сообщения: 1217
- Зарегистрирован: 01 мар 2009, 20:54
- Награды: 5
- Версия LabVIEW: 2018
- Откуда: Санкт-Петербург, Кронштадт
- Благодарил (а): 11 раз
- Поблагодарили: 1 раз
- Контактная информация:
Re: Не совсем лабвьюшный вопрос (общий)
Только сейчас стал разбираться, но не пойму, как этой утилитой пользоваться.
Пробую так, но не получается Утилита, на всякий случай:
Пробую так, но не получается Утилита, на всякий случай:
Добро пожаловать на http://rk-stud.ru/
-
Sergey Ivanov
- expert
- Сообщения: 1217
- Зарегистрирован: 01 мар 2009, 20:54
- Награды: 5
- Версия LabVIEW: 2018
- Откуда: Санкт-Петербург, Кронштадт
- Благодарил (а): 11 раз
- Поблагодарили: 1 раз
- Контактная информация:
Re: Не совсем лабвьюшный вопрос (общий)
Всё, разобрался. Необходимо было cmdow.exe закинуть в папку Windows.
Теперь другой вопрос. Как манипулировать с окнами, имеющими русские буквы в названии ?
Теперь другой вопрос. Как манипулировать с окнами, имеющими русские буквы в названии ?
Добро пожаловать на http://rk-stud.ru/
-
Sergey Ivanov
- expert
- Сообщения: 1217
- Зарегистрирован: 01 мар 2009, 20:54
- Награды: 5
- Версия LabVIEW: 2018
- Откуда: Санкт-Петербург, Кронштадт
- Благодарил (а): 11 раз
- Поблагодарили: 1 раз
- Контактная информация:
Re: Не совсем лабвьюшный вопрос (общий)
Разобрался и с этим.
Вместо имени окна надо использовать шестнадцатеричный дескриптор окна
Это записываем в батник и оно начинает работать
0x180144 - дескриптор окна
Вместо имени окна надо использовать шестнадцатеричный дескриптор окна
Это записываем в батник и оно начинает работать
Код: Выделить всё
cmdow 0x180144 /MOV 0 0
pause
Добро пожаловать на http://rk-stud.ru/
-
Sergey Ivanov
- expert
- Сообщения: 1217
- Зарегистрирован: 01 мар 2009, 20:54
- Награды: 5
- Версия LabVIEW: 2018
- Откуда: Санкт-Петербург, Кронштадт
- Благодарил (а): 11 раз
- Поблагодарили: 1 раз
- Контактная информация:
Re: Не совсем лабвьюшный вопрос (общий)
С дескриптором окна не получается. Он при каждом запуске меняется. А название окна содержит русские буквы. Что можно сделать ?
Добро пожаловать на http://rk-stud.ru/
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Не совсем лабвьюшный вопрос (общий)
Sergey Ivanov, а FindWindow использовать не получится? Можно для начала попробовать без указания класса. Но тут такое дело: если будет запущено приложение с окном, имеющим точно такое же название, может сработать неверно: вернёт не тот хэндл. Так что лучше ещё указать класс, его можно определить через WinSpy. Есть более сложный вариант. Используете для запуска программы это, потом листаете все окна с помощью EnumWindows() и GetWindowThreadProcessID(), сравниваете ID процесса с вашим ID, если совпало - то можно что-то делать с окном ( http://stackoverflow.com/questions/1888 ... process-id ). Честно говоря, мне это не очень нравится, но больше ничего на ум не приходит. :)
-
Sergey Ivanov
- expert
- Сообщения: 1217
- Зарегистрирован: 01 мар 2009, 20:54
- Награды: 5
- Версия LabVIEW: 2018
- Откуда: Санкт-Петербург, Кронштадт
- Благодарил (а): 11 раз
- Поблагодарили: 1 раз
- Контактная информация:
Re: Не совсем лабвьюшный вопрос (общий)
Ваш способ хорош, наверно, но в нём надо разбираться.
Я решил сделать немного по-другому, попроще. Изменил кодировку.
Теперь батник с таким содержанием получается:
скрываю окно
изменяю кодировку
присваиваю координаты верхнего левого угла окна микшера 0 по х, 0 по у
изменяю название окна
Я решил сделать немного по-другому, попроще. Изменил кодировку.
Теперь батник с таким содержанием получается:
Код: Выделить всё
cmdow @ /HID
chcp 1251
cmdow "Микшер громкости - Динамики (Conexant SmartAudio HD)" /MOV 0 0
cmdow "Микшер громкости - Динамики (Conexant SmartAudio HD)" /REN "Изменить громкость"
изменяю кодировку
присваиваю координаты верхнего левого угла окна микшера 0 по х, 0 по у
изменяю название окна
Добро пожаловать на http://rk-stud.ru/
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Не совсем лабвьюшный вопрос (общий)
А вы уверены, что при смене железа (материнка со встроенной звуковухой или отдельная звуковуха) у вас не изменится название окна? И как с этим делом на разных ОС?[b][color=#FF9900]Sergey Ivanov[/color][/b] писал(а):Код: Выделить всё
cmdow "Микшер громкости - Динамики (Conexant SmartAudio HD)" /MOV 0 0
-
Sergey Ivanov
- expert
- Сообщения: 1217
- Зарегистрирован: 01 мар 2009, 20:54
- Награды: 5
- Версия LabVIEW: 2018
- Откуда: Санкт-Петербург, Кронштадт
- Благодарил (а): 11 раз
- Поблагодарили: 1 раз
- Контактная информация:
Re: Не совсем лабвьюшный вопрос (общий)
Название окна меняется.
Поэтому, смотрим как окно называется и вписываем нужное название. Пробовал на Win7 и Win8 работает и там и там.
Поэтому, смотрим как окно называется и вписываем нужное название. Пробовал на Win7 и Win8 работает и там и там.
Добро пожаловать на http://rk-stud.ru/
-
- developer
- Сообщения: 257
- Зарегистрирован: 03 янв 2014, 19:37
- Версия LabVIEW: 2016
- Откуда: Украина, Киев
- Контактная информация:
Re: Не совсем лабвьюшный вопрос (общий)
Для того, чтобы получить hWnd можно использовать библиотеку отсюда:
http://www.labviewportal.org/viewtopic. ... 1&start=45
чтобы получить имя нужного окна, можно использовать такую конструкцию, как на скрине (конструктор взят из библиотеки System 4.0.0)
Подаём имя процесса - профит.
это имя можно считывать с файла, чтобы сделать программу легко транспортируемой на другую систему.
http://www.labviewportal.org/viewtopic. ... 1&start=45
чтобы получить имя нужного окна, можно использовать такую конструкцию, как на скрине (конструктор взят из библиотеки System 4.0.0)
Подаём имя процесса - профит.
это имя можно считывать с файла, чтобы сделать программу легко транспортируемой на другую систему.
- Вложения
-
- get_window_name.png (3.72 КБ) 11847 просмотров
колдооооовствооооо! (С)
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Не совсем лабвьюшный вопрос (общий)
AlexanderKonoval, это работает, если запущен один процесс с таким именем. Если больше, то может вернуть не тот хэндл. Ситуация маловероятная, конечно, но всё же. Так что в действительности самый надежный способ - запуск через ShellExecute и по хэндлу процесса получить окно. Пока не рассматриваю ситуацию, когда у процесса много окон, и какие у них взаимоотношения ("родитель" / "потомок", "собственник" и т.п.)
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Не совсем лабвьюшный вопрос (общий)
Потратил несколько часов, всё-таки реализовав второй вариант. Попутно обнаружились некоторые подводные камни:
1. на XP sndvol32, на W7 sndvol (об этом вроде уже писали);
2. на XP класс окна Volume Control, на W7 #32770;
3. текст (заголовок) окна одного процесса может меняться (и иногда меняется), как ему захочется;
4. одних и тех же PID'ов одновременно может быть несколько, как правило, это дочерние окна одного процесса. Вроде бы работает, как нужно. Если использовать для другого приложения, то нужно будет прописать класс окна, определяемый через WinSpy, например. Да, ещё массив там в конце надо проиндексировать по 0, чтобы кластер вытащить.
P.S.: за основу взят код отсюда.
1. на XP sndvol32, на W7 sndvol (об этом вроде уже писали);
2. на XP класс окна Volume Control, на W7 #32770;
3. текст (заголовок) окна одного процесса может меняться (и иногда меняется), как ему захочется;
4. одних и тех же PID'ов одновременно может быть несколько, как правило, это дочерние окна одного процесса. Вроде бы работает, как нужно. Если использовать для другого приложения, то нужно будет прописать класс окна, определяемый через WinSpy, например. Да, ещё массив там в конце надо проиндексировать по 0, чтобы кластер вытащить.
P.S.: за основу взят код отсюда.
- Вложения
-
- GetWin.cpp
- исходник Get Windows
- (2.82 КБ) 241 скачивание
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 3 Ответы
- 357 Просмотры
-
Последнее сообщение ujin1
-
- 7 Ответы
- 941 Просмотры
-
Последнее сообщение dadreamer
-
- 10 Ответы
- 774 Просмотры
-
Последнее сообщение Zloydj
-
- 14 Ответы
- 706 Просмотры
-
Последнее сообщение Vladimir_T