|
|
||||||
Как программно узнать закончил ли ZIP свою работу?25.02.2014, 11:19. Показов 14578. Ответов 90
Метки нет (Все метки)
Тот класс переделал, только не могу понять
как всётаки получить ответ что ZIP закончил свою работу ? класс переделал ! по рекомендации проффесионала под ником Dragokas выкладываю все версии в блоге ниже фрагмент с коментарием где необходим этот код
0
|
||||||
| 25.02.2014, 11:19 | |
|
Ответы с готовыми решениями:
90
Как в VBA узнать когда процесс закончил работу? Как уведомить первый поток о том, что второй закончил свою работу
|
|
9909 / 3931 / 742
Регистрация: 11.10.2011
Сообщений: 5,911
|
|
| 28.02.2014, 22:21 | |
|
1
|
|
|
|
||||||
| 01.03.2014, 20:45 [ТС] | ||||||
|
Внес изменения ! ищите в готовых решниях, или читайте в моём блоге
![]() Дольше пришлось, приводить в порядок, назначить кнопкам функционал чем создание самого класса, зато теперь можно про него забыть и переходить к следующему моему проекту, а тот я уже считаю законченным, позже можно только дополнения внести ... Добавлено через 8 минут Вот как там производится копирование
Я конечно-же не до конца воплотил идею Dragokas там у меня простой подсчёт найденных окон, хотя если немного доработать (3-4 строчки...) можно будет отследить конкретное окно относящееся к данному процессу, я решил пока не усложнять, тем более The Trick настойчиво меня уверяет что я делаю чтото не правильно,( а в его компетентности я не сомневаюсь...) что-ж я сторонник того, чтоб не ломать то что работает вот увижу я код более правильный, в контексте этой задачи, найду как его вставить, тогда и поменяю
0
|
||||||
|
|
|
| 01.03.2014, 23:22 | |
|
Здесь вопрос больше не в компетентности, а в простоте реализации и стабильности кода.
Задачу можно решить несколькими способами. Найденный Trick код наиболее удачен в силу прямого обращения к библиотеке. Но и его реализация требует некоторых дополнительных усилий. FelixMacintosh, приведенное Вами решение довольно интересное. Неплохо бы теперь добраться до конкретного окна.
1
|
|
|
|
|
| 01.03.2014, 23:28 [ТС] | |
|
Спасибо что это заметили, ну хорошо, я напрягусь, доработаю, потому-что и мне не хорошо от этого, что в коде есть дыры....
Добавлено через 3 минуты Зато простенько )
0
|
|
|
Модератор
|
|
| 01.03.2014, 23:42 | |
|
Это ненадежный код и неправильный в корне. Попробуй во время архивации открыть какое-нибудь окно, и цикл у тебя не закончится, или закрыть открытое окно. Я не понимаю чем тебе не устраивает отслеживание тредов? Я понимаю что ты не хочешь связываться с COM и C++, выбирай более простое решение значит, а не неправильное. Если ты пишешь на VB6 и это StandartEXE, то ты можешь быть уверен что параллельных тредов не будет. Ты можешь узнать количество тредов до копирования, и во время и в разнице найти TID' нужных тредов, сделав WaitForMultipleObject ты дождешься корректного завершения.
2
|
|
|
|
|
| 01.03.2014, 23:58 [ТС] | |
|
Мне кажется проще будет в том коде
реализовать 2-мя циклами ========== перед копировинием запомнить состояние окон: запуск копирования ! 1) следить не появилось ли новое(новые) 2) если появилось выявить его и следить, что именно оно (или его группа) должно закрыться всё просто, и уже ошибки точно не будет, уж в крайнем случае я предусмотрел аварийную Cancel
0
|
|
|
Модератор
|
|||||||
| 02.03.2014, 01:10 | |||||||
Сообщение было отмечено Антихакер32 как решение
РешениеДобавлено через 1 час 6 минут Решил тебе немного помочь, как я и говорил - отслеживая тред (по идее нужно отслеживать все новые треды, но у меня создается только один и я отслеживал один). Все корректно ожидает и завершается функция только после копирования.
2
|
|||||||
|
|
|
| 02.03.2014, 09:16 [ТС] | |
|
Спасибо, прикрутил, на моей системе WaitForSingleObject действительно
правильно дожидаеться hTrd но смущает коментарий: (перечислять нужно все потоки, я для примера делаю 1 последний, на других системах может создаваться несколько потоков, поэтому не стоит так оставлять) Добавлено через 33 минуты Тоесть я даже не могу вопрос сформулировать, спрошу так... как перечислить все потоки, и нужно ли их перечислять все ? Добавлено через 3 минуты и как определить что этот тот самый поток
0
|
|
|
Модератор
|
|||
| 02.03.2014, 10:00 | |||
|
1
|
|||
|
|
|
| 02.03.2014, 10:18 [ТС] | |
|
Дошло!, ну это примерно то-же о чем я и Dragokas уже писал, только я говорил о разнице окон а не потоков, нужно проследить добавленный поток верно ?
Добавлено через 8 минут The Trick спасибо еще раз!, твой код способен уже работать в классе а не отдельном модуле так как не используется AddressOf, я очень рад полученным знаниям ! а ведь ещё неделб назад в интернете днём .. с огнём нельзя было найти адекватный ответ на этот вопрос, только здесь, и сейчас ответ найден ! ✰
0
|
|
|
Модератор
|
|||
| 02.03.2014, 10:30 | |||
|
Добавлено через 10 минут
1
|
|||
|
|
||
| 03.03.2014, 09:25 [ТС] | ||
|
Отметил лучшим ✰ ответом !
Добавлено через 1 минуту Добавлено через 22 часа 44 минуты Очень не рекомендую проводить необдуманные эксперементыс библиотеками Shell.32 и zipfldr.dll после моих эксперементов, мне пришлось пере-устанавливать Windows (хорошо что я запасся загодя, необходимым софтом, установил поверх старой 2-дня настройки из старой перетаскивал )моя Shell32 сначало выдовала странности, а потом и вовсе слетела ... а ведь она отвечает за многие эфекты в Windows Exploere
0
|
||
|
|
|
| 03.03.2014, 09:34 [ТС] | |
|
...и еще не все шрифты восстановил
0
|
|
|
|
||
| 03.03.2014, 10:23 [ТС] | ||
|
Кликните здесь для просмотра всего текста
Shell - достаточно полное представление о наиболее важных вызовов с использованием RUNDLL32 окон.
Это довольно полный список вызовов с использованием Rundell32 например, доступ к диалоговом окне "Свойства экрана" Панель управления ", и т.д. .. Доступность Общие сведения: Shell "rundll32.exe shell32.dll, Control_RunDLL access.cpl,, 3" Клавиатура: Shell "rundll32.exe shell32.dll, Control_RunDLL access.cpl,, 3" Мышь: Shell "rundll32.exe shell32.dll, Control_RunDLL access.cpl,, 3" Звук: Shell "rundll32.exe shell32.dll, Control_RunDLL access.cpl,, 3" Дисплей: Shell "rundll32.exe shell32.dll, Control_RunDLL access.cpl,, 3" Добавить / Удалить Программы Установка и удаление программ: Shell "rundll32.exe shell32.dll, Control_RunDLL команду appwiz.cpl, 0" Установка / Удаление программ: Shell "rundll32.exe shell32.dll, Control_RunDLL команду appwiz.cpl, 1" Выбор программ по умолчанию: Shell "rundll32.exe shell32.dll, Control_RunDLL команду appwiz.cpl, 3" Добавить программу с CD или дискеты: Shell "rundll32.exe shell32.dll, Control_RunDLL команду appwiz.cpl, 3" Установка / удаление компонентов Windows: Shell "rundll32.exe shell32.dll, Control_RunDLL команду appwiz.cpl, 2" Применение Настройка Windows Портфель: Shell "rundll32.exe syncui.dll, Briefcase_Intro" Сжатие Показать содержимое Zip: Shell "rundll32.exe Zipfldr.dll, RouteTheCall C: \ a.zip" Советник по содержимому Shell "rundll32.exe msrating.dll, RatingSetupUI" Панель управления Часы работы: Shell "rundll32.exe shell32.dll, Control_RunDLL" Удалить ярлыки рабочего стола Shell "rundll32.exe Fldrclnr.dll, Wizard_RunDLL" Диалоги Печатная: Shell "rundll32.exe DISKCOPY.DLL, DiskCopyRunDll" Диск Формат: Shell "rundll32.exe shell32.dll, SHFormatDrive" Настройки дисплея Wallpaper: Shell "rundll32.exe shell32.dll, Control_RunDLL desk.cpl, 0" Заставка: Shell "rundll32.exe shell32.dll, Control_RunDLL desk.cpl,, 1" Настройки: Shell "rundll32.exe shell32.dll, Control_RunDLL desk.cpl,, 3" Темы: Shell "rundll32.exe shell32.dll, Control_RunDLL desk.cpl,, -1" Заставка Tab: Shell "rundll32.exe desk.cpl, InstallScreenSaver% 1" Внешний вид: Shell "rundll32.exe shell32.dll, Control_RunDLL desk.cpl,, 2" Диалоги Быстрый поиск: Shell "rundll32.exe shell32.dll, Control_RunDLL findfast.cpl" Открыть файл с ... : Shell "rundll32.exe shell32.dll, OpenAs_RunDLL FileName" Открыть папку, в которой шрифты установлены: Shell "rundll32.exe shell32.dll, SHHelpShortcuts_RunDLL FontsFolder" Открытый диалог - Game Device: Shell "rundll32.exe shell32.dll, Control_RunDLL joy.cpl" Аппаратные средства Добавить новый мастер оборудования: Shell "rundll32.exe shell32.dll, Control_RunDLL экрана Hdwwiz.cpl Параметры" Откройте диспетчер устройств: Shell "rundll32.exe devmgr.dll DeviceManager_Execute" Безопасное извлечение устройства: Shell "rundll32.exe shell32.dll, Control_RunDLL hotplug.dll" Мастер установки сканеров и камер безопасности: Shell "rundll32.exe wiashext.dll, AddDeviceWasChosen" Internet Explorer Упорядочить избранное: Shell "rundll32.exe Shdocvw.dll, DoOrganizeFavDlg" Ограничение доступа - пароль: "Шелл" rundll32.exe msrating.dll, ClickedOnRAT% 1 " Свойства обозревателя - вкладка - Общие сведения: Shell "rundll32.exe shell32.dll, Control_RunDLL inetcpl.cpl,, #" Интернет Открыть Telnet: Shell "rundll32.exe Url.dll, TelnetProtocolHandler www.yahoo.com.ar" Печать HTML документа: Shell "rundll32.exe mshtml.dll, PrintHTML" NombreArchivoyPath "" Клавиатура Клавиатура Свойства - вкладка Оборудование: Shell "rundll32.exe shell32.dll, Control_RunDLL main.cpl @ 1,1" Клавиатура Properties - вкладке "Скорость": Shell "rundll32.exe shell32.dll, Control_RunDLL main.cpl @ 1" Microsoft Java Virtual Machine - удалить: Shell "rundll32.exe advpack.dll, LaunchINFSection java.inf, удаление" Модем Установка модема Wizard: Shell "rundll32.exe modemui.dll, InvokeControlPanel" Мышь Свойства: Мышь - Настройка кнопки: Shell "rundll32.exe shell32.dll, Control_RunDLL main.cpl @ 0,0" Свойства: Мышь - Оборудование: Shell "rundll32.exe shell32.dll, Control_RunDLL main.cpl @ 0,4" Свойства: Мышь - Pointer Set: Shell "rundll32.exe shell32.dll, Control_RunDLL main.cpl @ 0,2" Свойства: Мышь - Установить колесо мыши: Shell "rundll32.exe shell32.dll, Control_RunDLL main.cpl @ 0,3" MSN Messenger Удалите в системном трее Msn: Shell "rundll32.exe advpack.dll, LaunchINFSection% WINDIR% \ INF \ msmsgs.inf, BLC.Remove" Мультимедиа NetMeeting: - инициировать вызов: Shell "rundll32.exe msconf.dll, CallToProtocolHandler% L" NetWork Мастер веб-сайтов: Shell "rundll32.exe netplwiz.dll, AddNetPlaceRunDll" Отключить сетевой диск: Shell "rundll32.exe shell32.dll, SHHelpShortcuts_RunDLL Отключить" Откройте Сетевые соединения: Shell "rundll32.exe shell32.dll, Control_RunDLL ncpa.cpl" Мастер настройки сети: Shell "rundll32.exe hnetwiz.dll, HomeNetWizardRunDll" ODBC Открытие источника данных Администратор: Shell "rundll32.exe shell32.dll, Control_RunDLL Odbccp32.cpl" Пароль Мастер забытых паролей: Shell "rundll32.exe keymgr.dll, PRShowSaveWizardExW" Мастер сброса паролей: Shell "rundll32.exe keymgr.dll, PRShowRestoreWizardExW" Модем и телефон Параметры настройки телефона и модема: Shell "rundll32.exe shell32.dll, Control_RunDLL modem.cpl" Свойства: Электропитание: Shell "rundll32.exe shell32.dll, Control_RunDLL powercfg.cpl" Принтеры Добавить принтера: Shell "rundll32.exe shell32.dll, SHHelpShortcuts_RunDLL AddPrinter" Диалог - подключение к принтеру: Shell "rundll32.exe Winspool.drv, ConnectToPrinterDlg" Открыть принтера папки: Shell "rundll32.exe shell32.dll, SHHelpShortcuts_RunDLL PrintersFolder" Распечатать эту страницу для проверки: Shell "rundll32.exe shell32.dll, SHHelpShortcuts_RunDLL PrintTestPage" Открыть принятых методов установить принтер по умолчанию: Shell "rundll32.exe printui.dll, PrintUIEntry / Y / N" [Версия Отображаемое имя] "" Язык и региональные стандарты - Диалог Вкладка Дополнительно: Shell "rundll32.exe shell32.dll, Control_RunDLL intl.cpl,, 2" Лоскут Языки: Shell "rundll32.exe shell32.dll, Control_RunDLL intl.cpl,, 1" Региональные стандарты Tab: Shell "rundll32.exe shell32.dll, Control_RunDLL intl.cpl,, 0" Общие папки Открыть диалоговое окно общих папок: Shell "rundll32.exe NTLANUI.DLL, ShareManage" Свойства Звуки и аудиоустройства Лоскут Объем: Shell "rundll32.exe shell32.dll, Control_RunDLL Mmsys.cpl @ 1" Аудио Tab: Shell "rundll32.exe shell32.dll, Control_RunDLL Mmsys.cpl,, 2" Оборудование Tab: Shell "rundll32.exe shell32.dll, Control_RunDLL Mmsys.cpl,, 4" Лоскут Голос: Shell "rundll32.exe shell32.dll, Control_RunDLL Mmsys.cpl,, 3" Свойства системы Генеральный Tab: Shell "rundll32.exe shell32.dll, Control_RunDLL команду sysdm.cpl, #" Автоматическое обновление Tab: Shell "rundll32.exe shell32.dll, Control_RunDLL команду sysdm.cpl, 5" Лоскут Имя компьютера: Shell "rundll32.exe shell32.dll, Control_RunDLL команду sysdm.cpl, 1" Оборудование Tab: Shell "rundll32.exe shell32.dll, Control_RunDLL команду sysdm.cpl, 2" Удаленная Tab: Shell "rundll32.exe shell32.dll, Control_RunDLL команду sysdm.cpl 6" "Восстановление системы" Tab: Shell "rundll32.exe shell32.dll, Control_RunDLL команду sysdm.cpl, 4" Вкладка "Дополнительно": Shell "rundll32.exe shell32.dll, Control_RunDLL команду sysdm.cpl, 3" Панели задач Свойства панели задач: Shell "rundll32.exe shell32.dll, Options_RunDLL 1" Установите часы и дата: Shell "rundll32.exe shell32.dll, Control_RunDLL timedate.cpl" Windows Windows Firewall: Shell "rundll32.exe shell32.dll, Control_RunDLL firewall.cpl" Изображения и факсы:. Exe shimgvw.dll, ImageView_PrintTo / р "% 1"% 2 ""% 3 ""% 4 " Блокировка компьютера: Shell "rundll32.exe User32.dll, LockWorkStation" Выход: Shell "rundll32.exe shell32.dll, SHExitWindowsEx 0" Приостановка и спящий: Shell "rundll32.exe Powrprof.dll, SetSuspendState"
0
|
||
|
|
||||||||
| 03.03.2014, 22:10 [ТС] | ||||||||
|
плюс чтение потоков
и как итог полная пере-установка ... Добавлено через 11 часов 32 минуты ну это всё лирика, а вот главное ! ![]() Кликните здесь для просмотра всего текста
0
|
||||||||
|
Модератор
|
|
| 03.03.2014, 22:21 | |
|
Для ожидания нескольких потоков есть функция WaitForMultipleObjects.
Способ поиска потоков - мягко говоря, кривой (через обработчик ошибок). Я чисто для примера делал, чтобы не заморачиваться, делай в массиве лонгов и сразу передавай в Wait-функцию.
0
|
|
| 03.03.2014, 22:21 | |
|
Помогаю со студенческими работами здесь
40
Закончил ли свою работу animate, toggle
Как узнать что WinSock закончил загрузку файла? Как узнать, что клиет закончил отсылать пакеты? Как сделать, чтобы один поток не закончил работу, пока второй работает? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений.
. . .
|
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения
Продолжаю серию постов о дискретно-событийной модели рабочего. . .
|
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы
Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
|
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция
Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
|
|
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
|
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
|
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
|
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика
Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
|