[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1269
  • Репутация:126

    [+] [-]
ChkDskGui (PureBasic) Исходник + EXE, v4.2 (x86, x64)Скачать yadi.sk upload.eeвременная версия


Последний раз редактировалось: AZJIO (2023-01-25 16:21), всего редактировалось 43 раз(а)

[Цитировать]

    Joker-2013
  • 1039
  • Стаж: 8 лет 9 месяцев
  • Сообщений: 2053
  • Репутация:120

    [+] [-]
  • Откуда: из прошлого
AZJIO, Окно то сразу появилось... Но больше чем нужно и пустое...
А потом, через некоторое время, отобразились все разделы, разом....
Так тоже не хорошо, пользователь не понимает что идёт сканирование...

Я же предлагал отображать по одному и увеличивать окно... хотя так оно и за границы панели задач может уйти...
В общем, чем больше идей,тем становится хуже...
Хотя антивирус теперь молчит и то радует...

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1269
  • Репутация:126

    [+] [-]
Обновил тестовую версию.
Joker-2013, я изменил, теперь в потоке не GetDrives, которая опять же получала диски и вставляла в гуи, а используется добавление подисково, в том же режиме как это происходит при вставке флешки, то есть через Add_item_LV.
Но больше чем нужно и пустое
потому что наверно есть картридер, он на начальном этапе с помощью GetLogicalDrives_ учитывает и их, а добавляет без учёта, так как реальных дисков нет. Надо будет пересчитать этот момент, если нет ini то уменьшить окно до количества существующих.
zdoba, об этом я не подумал что будет вставлено 2 диска, надо будет посмотреть...

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1269
  • Репутация:126

    [+] [-]
Обновил тестовую
zdoba, скачай и проверь ещё раз, я добавил обработку маски отключенных, теперь должно работать для варианта подключения и отключения нескольких дисков

[Цитировать]

    zdoba
  • 138
  • Стаж: 9 лет 3 месяца
  • Сообщений: 357
  • Репутация:22

    [+] [-]
  • Откуда: Россия
Уже лучше! При подключении диска при запущенной программе появляются все диски, но при отключении исчезают не все. Один всё равно остаётся.

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1269
  • Репутация:126

    [+] [-]
Обновил тестовую.
Но больше чем нужно и пустое....
Сделал пересчёт окна. После загрузки всех дисков оно сделается под размер существующих дисков. Изначально высота учитывает картридеры, сетевые, CD-ROMы, в общем все диски и поэтому на начальном этапе окно больше. Если обращение мгновенно то это не должно быть видно.
Можно сделать как ты хотел, за каждым диском раздвигать окно. Но это уже не сегодня.
zdoba, я попробовал вытащить две флешки мгновенно, у меня одна не успевает обработаться, потому что приходит одно сообщение системы о извлечении диска. По идее сообщения должны кэшироваться, вставать в очередь и обрабатываться все. Если уж исправлять и эти баги, тогда придётся смириться с новым полным обсчётом дисков, то есть я должен заново обратится ко всем дисками, раскрутить те которые уснули и т.д. и после этого обновить окно, либо с нуля удалить и заполнить, либо сравнить два списка (только что полученный с листвью) и по результатам обновить листвью. Но это сравнимо с тем что перезапустить прогу. Можно добавить пункт меню "Перечитать диски", для этого редкого случая когда мы при утилите начинаем цеплять отцеплять диски. Тем более нам важно что при подсоединении диска они появились а уж отсоединение волнует меньше.
На сегодня всё, обновлений не будет.

[Цитировать]

    zdoba
  • 138
  • Стаж: 9 лет 3 месяца
  • Сообщений: 357
  • Репутация:22

    [+] [-]
  • Откуда: Россия
AZJIO, Да для меня это не критично. Просто "просигнализировал".

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1269
  • Репутация:126

    [+] [-]
zdoba, проверь тестовую ещё раз, я заменил Mask.i на Mask.q

[Цитировать]

    zdoba
  • 138
  • Стаж: 9 лет 3 месяца
  • Сообщений: 357
  • Репутация:22

    [+] [-]
  • Откуда: Россия
AZJIO, Неа. Всё равно один раздел остаётся (только теперь с другой буквой). Да плюн ты на это.

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1269
  • Репутация:126

    [+] [-]
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
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1269
  • Репутация:126

    [+] [-]
Joker-2013, обновил тестовую, проверь на предмет: количество дисков должно определиться правильно и окно появляется сразу. Я добавил в проверку типа дисков в рассчёт количества на этапе старта, тип диска Fixed, Rem, cd-rom должны быть в системе изначально в момент подключения, а значит это не заставит раскручивать диск, по крайней мере не должно. У меня подозрение что GetVolumeInformation принуждает раскручиваться, а она у нас только для инфы.

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1269
  • Репутация:126

    [+] [-]
Тестировал сегодня диск на 2k10_Live, сразу 2 раздела, не понравилось что первый диск он прокрутил в консоли за пределы окна вверх и назад я прокрутить не могу, полосы прокрутки нет, колесо не прокручивает. Успел увидеть что диск нормальный, а если бы отошёл, то остался бы в неведении. Так что лучше на каждый диск свой старт делать.
Joker-2013 я давал функцию запроса инфы дисков одним потоком, может всё же посмотришь, какая функция критична? Можно попробовать вообще индивидуально запускать одну WinAPI-функцию и смотреть скорость её возврата?
Просто у меня сейчас два направления проги, я пытаюсь понять откатить к старому и обновить, те вещи которые добавил во временной версии (маску с подключением нескольких дисков) или доделать временную, выявив причину.
Сконструировал пример для теста

[Цитировать]

    ChrisR
  • 20309
  • Стаж: 5 лет 2 месяца
  • Сообщений: 3
  • Репутация:3

    [+] [-]
Здравствуйте, мой первый пост здесь aa
с переводчиком, извините, если не читабельный.
Я немного поиграл с модулем MultiLanguages.pbi
Поддержка других языков в ChkdskGui.
Это очень просто и без добавления большого количества строк в исходный текст, все делается в модуле.
Это может быть сделано таким же образом и довольно легко в любой программе PB
ChkDskGui_v3.3_MultiLanguages_Source.7z (17Kb)
sendspace
tinyupload
Я позволил вам посмотреть и сравнить ChkDskGui.pb с ChkDskGui_Original.pb.
Будьте свободны продолжать, как вам угодно.
az

[Цитировать]

    ChrisR
  • 20309
  • Стаж: 5 лет 2 месяца
  • Сообщений: 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
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1269
  • Репутация:126

    [+] [-]
ChrisR, у меня тоже есть модуль автоматического перевода

[Цитировать]

    ChrisR
  • 20309
  • Стаж: 5 лет 2 месяца
  • Сообщений: 3
  • Репутация:3

    [+] [-]
Отлично, я ждал выхода PB версии ChKDskGui ab

Страница 18 из 34


Показать сообщения:    

Текущее время: 19-Апр 16:11

Часовой пояс: UTC + 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы можете скачивать файлы