AZJIO
- Стаж: 6 лет 9 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
ChkDskGui (PureBasic)
Исходник + EXE, v4.2 (x86, x64)Скачать yadi.sk upload.eeвременная версия
Последний раз редактировалось: AZJIO (2024-11-07 09:05), всего редактировалось 44 раз(а)
|
nikzzzz
- Стаж: 9 лет 10 месяцев
- Сообщений: 3114
- Репутация:127[+] [-]
|
AZJIO,53840Можно ещё задействовать WM_DEVICECHANGE, чтобы обновлять список при подключении USB-съёмных носителей. В WinPe (возможно не во всех) не работает, лучше с интервалом 1-2 секунды опрашивать диски и если они изменились, обновлять.
|
AZJIO
- Стаж: 6 лет 9 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
nikzzzz Наверно не будет работать там, где при вставке флешки она автоматом не подключается, то есть на старых сборках XP да ещё для внешнего жёсткого диска (не флешки). Если эксплорер увидел подключенное устройство, получается что функция работает, вроде как высокая вероятность работы.
|
Joker-2013
- Стаж: 9 лет 5 месяцев
- Сообщений: 2053
- Репутация:120[+] [-]
- Откуда: из прошлого
|
AZJIO, У меня есть процедура детекта, работала во всех пешках... Ну кроме одной, сильно урезанной, я там добавил библиотеку и всё пошло... В принципе, ту процедуру и использую...53845лучше с интервалом 1-2 секунды опрашивать диски и если они изменились, обновлять. В контексте данной утилиты, детект и не к чему.... Выбираем раздел, происходит событие, проверяем на наличие выбранный раздел, и если его нет, удаляем в списке.
|
AZJIO
- Стаж: 6 лет 9 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
Joker-2013 Суть же не в проверке наличия, а в том что если открыта прога и ты вставляешь флешку для проверки, а она не появляется в списке автоматически, хотя должна, как это происходит в проводнике.
|
nikzzzz
- Стаж: 9 лет 10 месяцев
- Сообщений: 3114
- Репутация:127[+] [-]
|
53848 Если эксплорер увидел подключенное устройство, получается что функция работает, вроде как высокая вероятность работы. Нет, проблема возникла начиная с семерочных сборок, и от этого не зависит. Событие WM_DEVICECHANGE почему-то не отрабатывается, хотя в полноценной системе все нормально. По всей видимости в WinPe монтирование новых устройств происходит по другому.53849В контексте данной утилиты, детект и не к чему.... Ну, например внешний HDD проверить, да и в общем, ChkDsk не самоцель, чисто для обучения, да и полезные решения в будущем не помешают.
|
Joker-2013
- Стаж: 9 лет 5 месяцев
- Сообщений: 2053
- Репутация:120[+] [-]
- Откуда: из прошлого
|
53851да и полезные решения в будущем не помешают Это да... У меня процедурка отлично работает везде...
|
nikzzzz
- Стаж: 9 лет 10 месяцев
- Сообщений: 3114
- Репутация:127[+] [-]
|
AZJIO, Еще рекомендую поправить HelpImport "user32.lib" OemToCharBuffA(*Buff,*Buff1,SizeBuff) EndImport Procedure.s ReadProgramStringOem(iPid) Protected Ret$="" Protected SizeBuff=AvailableProgramOutput(iPid) If SizeBuff>0 Protected *Buff=AllocateMemory(SizeBuff) ReadProgramData(iPid,*Buff,SizeBuff) OemToCharBuffA(*Buff,*Buff,SizeBuff) Ret$=PeekS(*Buff,SizeBuff,#PB_Ascii) FreeMemory(*Buff) EndIf ProcedureReturn Ret$ EndProcedure Procedure HelpChkdsk() Protected Prog = RunProgram("chkdsk.exe", "/?", "", #PB_Program_Open | #PB_Program_Read | #PB_Program_Hide) Protected Output$ = "" If Prog While ProgramRunning(Prog) Output$ + ReadProgramStringOem(Prog) Wend CloseProgram(Prog) ; Close the connection to the program EndIf MessageRequester("Справка", Output$) EndProcedure OemA2Ansi(Str$) не нужен.
|
AZJIO
- Стаж: 6 лет 9 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
nikzzzz Посмотрел вариант ini, там ReadPreferenceString не имеет ни файла ни группы, как я понял файл один открытый, а группы методом Next, пока не будет найдена. По поводу перемещения окон тоже не вижу функций по работе с внешним окном.
|
nikzzzz
- Стаж: 9 лет 10 месяцев
- Сообщений: 3114
- Репутация:127[+] [-]
|
53854По поводу перемещения окон тоже не вижу функций по работе с внешним окном. Посмотри исходник моей утилиты.
|
Отправлено: 15-Май-2018 17:13
(спустя 2 часа 1 минута)
AZJIO
- Стаж: 6 лет 9 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
nikzzzz При выполненииhwnd = GetConsoleWindow() выводит 0 а если будет 2 консоли? нужно наверно PID использовать? шапку обновил, новый скрин, новые задачи.
|
nikzzzz
- Стаж: 9 лет 10 месяцев
- Сообщений: 3114
- Репутация:127[+] [-]
|
AZJIO,53858если будет 2 консоли? нужно наверно PID использовать? Утилиту я привел только как пример работы с окнами, она использует хэндл окна консоли, из которого она запущена, и соответственно работает только с ним.
|
nikzzzz
- Стаж: 9 лет 10 месяцев
- Сообщений: 3114
- Репутация:127[+] [-]
|
AZJIO, Да, и еще в процедурах лучше объявлять локальные переменные с помощью Protected (аналог Local в Autoit), Define просто определяет переменную, это поможет избежать многих ошибок.
|
AZJIO
- Стаж: 6 лет 9 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
nikzzzz Тест показывает что вызов функции не изменяет переменную объявленную вне, а в описании как то непонятно. Ну да, Protected даже в описании указано как Local. Но с Define я тоже брал сложные примеры, которые вряд ли могут быть написаны новичками.Declare variable_visibility_test() Define.i var = 5 variable_visibility_test() Debug var Procedure variable_visibility_test() Define.i var = 6 EndProcedure такой ответ нашёлЯ думаю, что у вас проблема с порядком #include #define виден во всех строчках, что ниже определения #include просто подставляет текст включаемого файла вместо этой строчки. Соотвественно, .h с #define должен включаться перед .h, его использующим. Как я ранее читал в AutoIt3 2 области глобальная, в которой хоть Local используй, хоть ничего, всё равно она в корне и будет глобальной. И локальная область - внутри функций с Local. А в других языках по крайне мере 4 области, область файла, область всех файлов (тут наверно имеется ввиду Define), область функций-процедур и область циклов (счётчик), естественно под-область видить все над-области любого уровня, а над-области не видят ближайшую под-область.
|
Страница 7 из 34
Текущее время: 28-Ноя 23:47
Часовой пояс: UTC + 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы к сообщениям Вы можете скачивать файлы
|
|