|
33 / 6 / 0
Регистрация: 18.05.2014
Сообщений: 127
|
|
Диалоговое окно выбора папки24.05.2015, 21:48. Показов 23802. Ответов 73
Метки нет (Все метки)
Добрый вечер!
Подскажите, пожалуйста, как открыть вот такое окно через cmd? Ищу способы именно через сторонние программы, не скрипты JS и VBS.
0
|
|
| 24.05.2015, 21:48 | |
|
Ответы с готовыми решениями:
73
Как через командную строку открыть диалоговое окно "Свойства" для файла или папки? Организовать ввод текста. По нажатию Enter показать диалоговое окно с введенным текстом Как скрыть дополнительно диалоговое окно в бат файле при работе с bitsadmin |
|
|
|||
| 24.08.2015, 15:00 | |||
По высоте вы имели ввиду? Сделал такое поведение думая, что именно такое центрирование вам и нужно. Изначально было центрирование только по оси X. Но это легко убирается. Строка 369: heightDialog = rcWindowCon.Bottom - rcWindowCon.Top; //heightDialogDef; заменить значение на то, что закомментировано, то есть должно быть так: heightDialog =heightDialogDef; Заново скомпилировать код в батнике. -------------------------
1
|
|||
|
33 / 6 / 0
Регистрация: 18.05.2014
Сообщений: 127
|
|
| 25.08.2015, 01:57 [ТС] | |
|
Garry Galler. Благодарю Вас!
А можно ли сделать так, чтобы диалоговое окно также открывалось по середине не только по ширина окна cmd, но и по высоте тоже. Такое ощущение что FolderDialog игнорирует размер диалогвого окна который бл у пользователя и выставляет свое.
0
|
|
|
|
||||||
| 25.08.2015, 14:17 | ||||||
|
lorents
Сделал центрирование как у вас на скрине. ---------------------------------------------------- Что касается игнорирования последних размеров, которые пользователь задал расширив\сузив диалог вручную, то обратил внимание на это только сейчас. Почему так происходит пока не разобрался. Программа, если размеры явно не заданы в опциях, их никак не меняет - перед перемещением она получает объект прямоугольника диалога из которого высчитываются дефолтные размеры (они всегда получаются как 334x326)
Возможно, игнорирование тут получается потому, что в обычном порядке система сначала выводит диалог с жестко заданными размерами 334x326 (и координатами по центру экрана), а затем меняет (это происходит незаметно визуально) на размеры последнего пользовательского использования, которые берет из реестра. А у меня - так как программа перехватывает у системы функцию задания размеров\координат - используются именно дефолтные\первоначальные системные размеры. Пользовательские же размеры получается нужно каждый раз читать из реестра. Если это имеет значение - то можно попробовать отыскать куда система пишет эти размеры.
1
|
||||||
|
33 / 6 / 0
Регистрация: 18.05.2014
Сообщений: 127
|
|
| 25.08.2015, 16:09 [ТС] | |
|
Garry Galler, если решить данную проблему, то будет отлично.
0
|
|
|
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
|
|
| 25.08.2015, 16:42 | |
|
lorents, Но в самой утилите разве нет центрирования: 25/08/2015
*** Выпущена новая версия программы: FolderDialog v1.0.0.4. * Исправлена возможность падения программы при некорректно заданных параметрах размера и координат. * Изменено центрирование диалога относительно окна cmd. * Изменены проверки валидности заданных координат и размеров диалога.
0
|
|
|
|
|
| 25.08.2015, 16:45 | |
|
lorents
Если решать простым путем, то достаточно выставить в Thread.Sleep(70) паузу не меньше 70 мск, вместо 10 мск, чтобы система успела отрисовать окно с последними пользовательскими размерами. Моя программа в этом случае захватит эти новые размеры и окно переместится\отцентрируется с размерами именно последнего использования, а не дефолтными.
0
|
|
|
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
|
|
| 25.08.2015, 16:45 | |
|
Насколько понятно из справки: FolderDialog /o
0
|
|
|
|
|
| 25.08.2015, 16:47 | |
|
alpap
lorents имел ввиду неотрабатывание программой пользовательских размеров окна (когда мы вручную тянем за край и меняем размеры окна), которые запоминаются ОС в реестре. Система их применяет налету - сразу после запуска диалога.
0
|
|
|
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
|
|
| 25.08.2015, 16:53 | |
|
Garry Galler, А это, практически, во всех утилитах и поменять это... даже лучше не браться.
0
|
|
|
|
|
| 25.08.2015, 17:14 | |
|
alpap
Не во всех. DlgMsgBox тоже перемещает окно по X координате относительно cmd и размеры последнего использования диалога сохранятся, но там применяется специальный callback (функция обратного вызова), которая получает размеры окна уже после того как система его перерисует в соответствии с сохраненными в реестре.У меня же прога слишком быстро перехватывает управление диалогом. И система не успевает применить параметры из реестра. Поэтому тут три варианта: 1) читать параметры из реестра (пока не ясно откуда именно) 2) увеличить паузу поиска окна в диапазоне 70-100 мск (лучше 100) 3) тоже использовать системный callback ( в C# коде с этим несколько сложнее, чем в скриптах использующих WinAPI )
0
|
|
|
33 / 6 / 0
Регистрация: 18.05.2014
Сообщений: 127
|
|
| 25.08.2015, 18:29 [ТС] | |
|
Именно поэтому я долгое время и работал с DlgMsgBox, но сейчас он не работает с Windows 10, а это критично.
0
|
|
|
⁞ ★☭ Mad Max ☭★ ⁞
279 / 84 / 12
Регистрация: 04.09.2013
Сообщений: 187
|
|||||||
| 25.08.2015, 21:54 | |||||||
|
Не по теме: Шурик, вы комсомолец? Костыль, добавляет совместимость с Win7 для DlgMsgBox.exe
0
|
|||||||
|
33 / 6 / 0
Регистрация: 18.05.2014
Сообщений: 127
|
|
| 25.08.2015, 22:22 [ТС] | |
|
0
|
|
|
⁞ ★☭ Mad Max ☭★ ⁞
279 / 84 / 12
Регистрация: 04.09.2013
Сообщений: 187
|
|
| 25.08.2015, 23:00 | |
|
Первые две строки в начало, в иниты, шестую и седьмую в процедуру выхода, остальные не важно куда, это процедуры.
Была у меня прога, крашилась и под семеркой и под восьмеркой, добавил параметр совместимости, стала работать без проблем
0
|
|
|
33 / 6 / 0
Регистрация: 18.05.2014
Сообщений: 127
|
|||||||
| 26.08.2015, 00:06 [ТС] | |||||||
|
Сделал так, но что-то не работает
0
|
|||||||
|
⁞ ★☭ Mad Max ☭★ ⁞
279 / 84 / 12
Регистрация: 04.09.2013
Сообщений: 187
|
||||||
| 26.08.2015, 10:01 | ||||||
|
lorents,
мой код для bat. При запуске bat он добавляет в реестр параметр совместимости для DlgMsgBox, ведь если я правильно понял, до Вин10 прога работала, а в Вин10 нет. И еще:
0
|
||||||
|
|
|
| 26.08.2015, 12:15 | |
|
lorents
Пока решил проблему дополнительной паузой Thread.Sleep(100), поставленной после основной в 10 мск. Пауза совсем небольшая - у DlgMsgBox там все 200 выставлены. На моем компе все работает идеально - никаких перемещений визуально незаметно, окно просто появляется в указанном месте и с последними пользовательскими размерами. Архив FolderDialog перезалил. PS: Пробую решить, конечно, и более точным способом - отловить системное сообщение BFFM_INITIALIZED (окончание инициализации диалога) - но написать процедуру пока не получилось.
0
|
|
|
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
|
|
| 26.08.2015, 15:38 | |
|
lorents, Мы вот тут все что-то химичим, химичим, а можно точно и четко поставить задачу, что нужно, я ,например, уже теряюсь в каких-то неизвестных требованиях. Четко, что, зачем и для чего это нужно, может легче переиграть задачу по отношению к каким-то странным требованиям?
Добавлено через 6 минут Непонято: Первое - зачем наблюдать окно cmd, если для тестирования, можно включить, Второе - зачем что-то центрировать (хоть что-то) если оно, в идеале, потом будет скрыто - это прихоть или как?
0
|
|
|
33 / 6 / 0
Регистрация: 18.05.2014
Сообщений: 127
|
|
| 26.08.2015, 18:01 [ТС] | |
|
@Root,
Благодарю! alpap, 1. Планирую использовать диалоговое окно у мебя в проекте https://github.com/lorents17/iCatalyst 2. пытаюсь найти приложение диалогового окна, которое работает также, как и любое диалоговое окно.
0
|
|
|
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
|
|
| 27.08.2015, 09:28 | |
|
lorents, Ну, наконец-то, что-то разродилось. Скачайте по ссылке Wselect 2.20 и забудьте окно cmd - задача решена, как забыть окно cmd приводил выше.
0
|
|
| 27.08.2015, 09:28 | |
|
Открыть диалоговое окно выбора папки Диалоговое окно для выбора папок с указанием папки Диалоговое окно выбора как папки так и файлов
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek
ВВЕДЕНИЕ
Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
|