AZJIO
- Стаж: 6 лет 9 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
ChkDskGui (PureBasic)
Исходник + EXE, v4.2 (x86, x64)Скачать yadi.sk upload.eeвременная версия
Последний раз редактировалось: AZJIO (2024-11-07 09:05), всего редактировалось 44 раз(а)
|
AZJIO
- Стаж: 6 лет 9 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
Обновил тестовую версию. Joker-2013, я изменил, теперь в потоке не GetDrives, которая опять же получала диски и вставляла в гуи, а используется добавление подисково, в том же режиме как это происходит при вставке флешки, то есть через Add_item_LV.Но больше чем нужно и пустое потому что наверно есть картридер, он на начальном этапе с помощью GetLogicalDrives_ учитывает и их, а добавляет без учёта, так как реальных дисков нет. Надо будет пересчитать этот момент, если нет ini то уменьшить окно до количества существующих. zdoba, об этом я не подумал что будет вставлено 2 диска, надо будет посмотреть...
|
AZJIO
- Стаж: 6 лет 9 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
Обновил тестовую zdoba, скачай и проверь ещё раз, я добавил обработку маски отключенных, теперь должно работать для варианта подключения и отключения нескольких дисков
|
zdoba
- Стаж: 9 лет
- Сообщений: 357
- Репутация:22[+] [-]
- Откуда: Россия
|
Уже лучше! При подключении диска при запущенной программе появляются все диски, но при отключении исчезают не все. Один всё равно остаётся.
|
AZJIO
- Стаж: 6 лет 9 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
Обновил тестовую.Но больше чем нужно и пустое.... Сделал пересчёт окна. После загрузки всех дисков оно сделается под размер существующих дисков. Изначально высота учитывает картридеры, сетевые, CD-ROMы, в общем все диски и поэтому на начальном этапе окно больше. Если обращение мгновенно то это не должно быть видно. Можно сделать как ты хотел, за каждым диском раздвигать окно. Но это уже не сегодня. zdoba, я попробовал вытащить две флешки мгновенно, у меня одна не успевает обработаться, потому что приходит одно сообщение системы о извлечении диска. По идее сообщения должны кэшироваться, вставать в очередь и обрабатываться все. Если уж исправлять и эти баги, тогда придётся смириться с новым полным обсчётом дисков, то есть я должен заново обратится ко всем дисками, раскрутить те которые уснули и т.д. и после этого обновить окно, либо с нуля удалить и заполнить, либо сравнить два списка (только что полученный с листвью) и по результатам обновить листвью. Но это сравнимо с тем что перезапустить прогу. Можно добавить пункт меню "Перечитать диски", для этого редкого случая когда мы при утилите начинаем цеплять отцеплять диски. Тем более нам важно что при подсоединении диска они появились а уж отсоединение волнует меньше. На сегодня всё, обновлений не будет.
|
AZJIO
- Стаж: 6 лет 9 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
zdoba, проверь тестовую ещё раз, я заменил Mask.i на Mask.q
|
AZJIO
- Стаж: 6 лет 9 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
Joker-2013, обновил тестовую, но не радует ситуация. У меня диски определяются быстро и при появлении окна оно быстро дергается за доли секунды. Ситуацию спасает только ini-файл, с ним размер задан изначально.с точки зрения интереса мне не понятно почему не срабатывает один диск? Функция отсоединения диска возвращает маску типа 0010010000001, где 1 это как бы флаг буквы диска ABCDEFG, напротив какой буквы стоит 1 те диски были отключены и я их удаляю из листвью. И тут не может быть разночтений, пришло событие диск может иметь несколько разделов и эти разделы выражаются через маску. Я было подумал что ширина числа недостаточна для умещения 26 дисков, и поэтому попробовал тип "q" Quad, четверное слово, 8 байт, максимальное. Хотя ранее я тестировал флаги возвращённые GetLogicalDrives в интегрер в x64 тоже 8 байт, а в x32 - 4 байт, и это работало для Z, то есть не было обрезки по ширине. Но на x32 могла бы быть. 4 байт - 32 бита должно хватить вполне для 26 битов. zdoba, на всякий случай проверь ещё, я обновил, заменив на Mask.l (Long), у меня всегда, когда на x64 проблема с интегрер я меняю на лонг и всё работает. Последний раз было в плаге TextA для Notepad++ на x64 не работало меню, сменил "i" на "l", как обычно сразу заработало.
|
AZJIO
- Стаж: 6 лет 9 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
Тестировал сегодня диск на 2k10_Live, сразу 2 раздела, не понравилось что первый диск он прокрутил в консоли за пределы окна вверх и назад я прокрутить не могу, полосы прокрутки нет, колесо не прокручивает. Успел увидеть что диск нормальный, а если бы отошёл, то остался бы в неведении. Так что лучше на каждый диск свой старт делать. Joker-2013 я давал функцию запроса инфы дисков одним потоком, может всё же посмотришь, какая функция критична? Можно попробовать вообще индивидуально запускать одну WinAPI-функцию и смотреть скорость её возврата? Просто у меня сейчас два направления проги, я пытаюсь понять откатить к старому и обновить, те вещи которые добавил во временной версии (маску с подключением нескольких дисков) или доделать временную, выявив причину. Сконструировал пример для теста
|
ChrisR
- Стаж: 5 лет 9 месяцев
- Сообщений: 3
- Репутация:3[+] [-]
|
Здравствуйте, мой первый пост здесь с переводчиком, извините, если не читабельный. Я немного поиграл с модулем MultiLanguages.pbi Поддержка других языков в ChkdskGui. Это очень просто и без добавления большого количества строк в исходный текст, все делается в модуле. Это может быть сделано таким же образом и довольно легко в любой программе PB ChkDskGui_v3.3_MultiLanguages_Source.7z (17Kb) sendspace tinyupload Я позволил вам посмотреть и сравнить ChkDskGui.pb с ChkDskGui_Original.pb. Будьте свободны продолжать, как вам угодно.
|
ChrisR
- Стаж: 5 лет 9 месяцев
- Сообщений: 3
- Репутация:3[+] [-]
|
Легкий в использовании пример модуля MultiLanguages.pbi (PureBasic) MultiLanguages_HelloWorld.7zДополнительная информация; ----------------------------------------------------------------------------- ; Simple Multi Languages Hello World Exemple ; ; Create "Russian.pref" file (UTF8 + BOM) in the same foler with ; [Example] ; HelloQuestion = Передавай привет ; HelloReply = Здравствуйте, мир! ; ----------------------------------------------------------------------------- EnableExplicit ; Include MultiLanguages Module and UseModule = Language::GetUserLanguage() -> GetUserLanguage() XIncludeFile "MultiLanguages.pbi" UseModule Language Enumeration Window #Window_0 EndEnumeration Enumeration Gadgets #Button_1 EndEnumeration Define iEvent.i Declare Open_Window_0(X = 0, Y = 0, Width = 160, Height = 80) Procedure Open_Window_0(X = 0, Y = 0, Width = 160, Height = 80) If OpenWindow(#Window_0, X, Y, Width, Height, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) ButtonGadget(#Button_1, 20, 20, 120, 40, Get("Example","HelloQuestion")) ; Get HelloQuestion value EndIf EndProcedure ;- START ; SubFolder for Language Files (ex: sLangFolder = "Lang") or "" to put it next to the exe, in the same folder sLangFolder = "" ; Get User Locale Default Language Define.s LocalUserDefault = GetUserLanguage() ; For Testing other Languagues ;LocalUserDefault = GetUserLanguage($0419) ; Russian ;LocalUserDefault = GetUserLanguage($0409) ; English ; Load MultiLanguages in Map If sLangFolder <> "" And Left(sLangFolder,1) <>"\" : sLangFolder + "\" :EndIf If FileSize(sLangFolder + LocalUserDefault + ".pref") > 0 Load(?English,LocalUserDefault + ".pref") Else Load(?English) EndIf Open_Window_0() Repeat iEvent = WaitWindowEvent() Select iEvent Case #PB_Event_Menu Select EventMenu() EndSelect Case #PB_Event_Gadget Select EventGadget() Case #Button_1 ;Say Hello MessageRequester("", Get("Example","HelloReply")) ; Get HelloReply value EndSelect Case #PB_Event_CloseWindow End EndSelect ForEver ; MultiLanguages below DataSection English: ; =================================================== Data.s "_GROUP_", "Example" ; =================================================== Data.s "HelloQuestion", "Say Hello" Data.s "HelloReply", "Hello World!" ; =================================================== Data.s "_END_", "" ; =================================================== EndDataSection
|
AZJIO
- Стаж: 6 лет 9 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
|
ChrisR
- Стаж: 5 лет 9 месяцев
- Сообщений: 3
- Репутация:3[+] [-]
|
Отлично, я ждал выхода PB версии ChKDskGui
|
Страница 18 из 34
Текущее время: 27-Ноя 23:29
Часовой пояс: UTC + 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы к сообщениям Вы можете скачивать файлы
|
|