[Quote]

    puhpol
  • 2
  • Longevity: 10 years
  • Posts: 891
  • REPUTATION:75

    [+] [-]
EasyBOOTICE v1.4- Очень удобная программа для редактирования файлов BCD, GRLDR, Menu.lst.
Программа проста, просто перетащите файл в нужное окно программы.
Откроется окно BootIce для редактирования файла.
Окно утилиты сохраняет свою позицию в файл конфигурации.
В файле конфигурации можно "включить" режим: "Поверх всех окон"
Кино:

Новая версия 1.4
Добавлена х64
При двойном клике на кнопки, открывается соответствующее окно BootICE
Решена проблема с перетаскиванием, при включенном UAC и запуском от имени Администратора
Благодарю nikzzzz за помощь!
Файл подписан самопальным сертификатом, что бы UAC писал корректные данные, установите Sert.cer в систему (не обязательно)
Attachments

v1.4 Fix4



Last edited by puhpol on 2017-01-27 18:45; edited 1 time in total

[Quote]

    Joker-2013
  • 1039
  • Longevity: 9 years 4 months
  • Posts: 2053
  • REPUTATION:120

    [+] [-]
  • Location: из прошлого
nikzzzz, AZJIO,
сорри что вмешиваюсь, но попробуйте вместо
RunWait('"BootIce.exe"'
использовать
ShellExecuteWait('"BootIce.exe"'
работает и без админских прав, и drag&drop в порядке
Ну, не знаю... У меня всё равно требует права Администратора...
ShellExecute_(0, "Open", GetExePath()+"BootIce.exe", "/edit_bcd /easymode /file="+Chr(34)+File+Chr(34), "", #SW_SHOWNORMAL)
Попробуйте сами... Исходник в комплекте.
Портативный пьюрик можно скачать тут


Last edited by Joker-2013 on 2018-04-10 12:24; edited 2 times in total

[Quote]

    nikzzzz
  • 215
  • Longevity: 9 years 9 months
  • Posts: 3114
  • REPUTATION:127

    [+] [-]
Joker-2013,
52660У меня всё равно требует права Администратора..
Может надо в манифесте прописать
level="asInvoker"

[Quote]

    Joker-2013
  • 1039
  • Longevity: 9 years 4 months
  • Posts: 2053
  • REPUTATION:120

    [+] [-]
  • Location: из прошлого
nikzzzz, в манифесте чего? Бутайса или моей утили?

[Quote]

    nikzzzz
  • 215
  • Longevity: 9 years 9 months
  • Posts: 3114
  • REPUTATION:127

    [+] [-]
Joker-2013,
В твоей.

[Quote]

    Joker-2013
  • 1039
  • Longevity: 9 years 4 months
  • Posts: 2053
  • REPUTATION:120

    [+] [-]
  • Location: из прошлого
nikzzzz,
Лучше помоги мне реализовать функцию перетаскивания, нормальную...
Тут стали обсуждать, но тема заглохла...
Если бы не было проблем с перетаскиванием, я бы написал еще несколько проектов на пьюрике...

[Quote]

    nikzzzz
  • 215
  • Longevity: 9 years 9 months
  • Posts: 3114
  • REPUTATION:127

    [+] [-]
Joker-2013,
Я как-то делал такую функцию на Autoit, когда возникли проблемы на Win8, вроде проблемы исчезли.
Сделал два аналога на пурике.

вариант с Callback, тот, что использовал на Autoit

Procedure WndProc(hwnd, uMsg, wParam, lParam)
OperationResult.i = #PB_ProcessPureBasicEvents
Select uMsg
Case #WM_DROPFILES
*DroppedFilesArea = wParam
NumberOfCharactersDropped.i = DragQueryFile_(*DroppedFilesArea , $FFFFFFFF, ReturnedFileName.s, 0)
For CharacterIndex.i = 0 To NumberOfCharactersDropped.i - 1
CharacterBuffer.s = Space(#MAX_PATH)
DragQueryFile_(*DroppedFilesArea , CharacterIndex.i, CharacterBuffer.s, #MAX_PATH)
GetCursorPos_(p.POINT)
PbGadgetId.i = GetDlgCtrlID_(WindowFromPoint_(p\x + p\y << 32))
AddGadgetItem(PbGadgetId.i, -1, CharacterBuffer.s)
Next
DragFinish_(*DroppedFilesArea)
EndSelect
ProcedureReturn OperationResult.i
EndProcedure
OpenWindow(0, 0, 0, 200, 200, "Drag & Drop", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
EditorGadget(2, 10, 10, 180, 180)
DragAcceptFiles_(WindowID(0), 1)
SetWindowCallback(@WndProc())
Repeat
Select WaitWindowEvent ()
Case #PB_Event_CloseWindow
Quit = 1
EndSelect
Until Quit = 1

вариант без Callback

OpenWindow(0, 0, 0, 200, 200, "Drag & Drop", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
EditorGadget(2, 10, 10, 180, 180)
DragAcceptFiles_(WindowID(0), 1)
Repeat
Event = WaitWindowEvent()
Select Event
Case #WM_DROPFILES
*DroppedFilesArea = EventwParam()
NumberOfCharactersDropped.i = DragQueryFile_(*DroppedFilesArea , $FFFFFFFF, ReturnedFileName.s, 0)
For CharacterIndex.i = 0 To NumberOfCharactersDropped.i - 1
CharacterBuffer.s = Space(#MAX_PATH)
DragQueryFile_(*DroppedFilesArea , CharacterIndex.i, CharacterBuffer.s, #MAX_PATH)
GetCursorPos_(p.POINT)
PbGadgetId.i = GetDlgCtrlID_(WindowFromPoint_(p\x + p\y << 32))
AddGadgetItem(PbGadgetId.i, -1, CharacterBuffer.s)
Next
DragFinish_(*DroppedFilesArea)
EndSelect
Until Event = #PB_Event_CloseWindow

[Quote]

    Joker-2013
  • 1039
  • Longevity: 9 years 4 months
  • Posts: 2053
  • REPUTATION:120

    [+] [-]
  • Location: из прошлого
nikzzzz, Второй вариант:

но что можно заметить, если не в объект тащить, а в окно, то кружочек не перечеркнутый...
В манифесте прописан запуск от имени Администратора, UAC - включен
Вариант первый:

Прогресс есть, но...
Похоже, ты где то не дожал....
То есть оба проекта работают сейчас одинаково.
Функция перетаскивания работает на окне, но заблокирована на гаджете...

[Quote]

    nikzzzz
  • 215
  • Longevity: 9 years 9 months
  • Posts: 3114
  • REPUTATION:127

    [+] [-]
Joker-2013,
Не знаю, надо смотреть, у меня проблем нет.
Вообще-то первый вариант предпочтительнее.
К стати, кому не сложно,протестируйте три тестовых скомпилированных скрипта.

[Quote]

    Joker-2013
  • 1039
  • Longevity: 9 years 4 months
  • Posts: 2053
  • REPUTATION:120

    [+] [-]
  • Location: из прошлого
52675протестируйте три тестовых скомпилированных скрипта.
Так они у тебя, без завышения прав манифестом.
Третий пример славливает, но не отображает в окне путь...

[Quote]

    nikzzzz
  • 215
  • Longevity: 9 years 9 months
  • Posts: 3114
  • REPUTATION:127

    [+] [-]
52674Функция перетаскивания работает на окне, но заблокирована на гаджете...
Попробуй этот вариант.
OpenWindow(0, 0, 0, 200, 200, "Drag & Drop", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
EditorGadget(4, 10, 10, 180, 70,#PB_Editor_ReadOnly)
EditorGadget(5, 10, 100, 180, 70,#PB_Editor_ReadOnly)
DragAcceptFiles_(GadgetID(4), 1)
DragAcceptFiles_(GadgetID(5), 1)
Repeat
Event = WaitWindowEvent()
Select Event
Case #WM_DROPFILES
*DroppedFilesArea = EventwParam()
NumberOfCharactersDropped.i = DragQueryFile_(*DroppedFilesArea , $FFFFFFFF, ReturnedFileName.s, 0)
For CharacterIndex.i = 0 To NumberOfCharactersDropped.i - 1
CharacterBuffer.s = Space(#MAX_PATH)
DragQueryFile_(*DroppedFilesArea , CharacterIndex.i, CharacterBuffer.s, #MAX_PATH)
GetCursorPos_(p.POINT)
PbGadgetId.i = GetDlgCtrlID_(WindowFromPoint_(p\x + p\y << 32))
AddGadgetItem(PbGadgetId.i, -1, CharacterBuffer.s)
Next
DragFinish_(*DroppedFilesArea)
EndSelect
Until Event = #PB_Event_CloseWindow

[Quote]

    Joker-2013
  • 1039
  • Longevity: 9 years 4 months
  • Posts: 2053
  • REPUTATION:120

    [+] [-]
  • Location: из прошлого
nikzzzz,

[Quote]

    nikzzzz
  • 215
  • Longevity: 9 years 9 months
  • Posts: 3114
  • REPUTATION:127

    [+] [-]
Joker-2013,
Еще вариант
Global lpOldWndProc
Procedure WndProc(hwnd, uMsg, wParam, lParam)
Select uMsg
Case #WM_DROPFILES
*DroppedFilesArea = wParam
NumberOfCharactersDropped.i = DragQueryFile_(*DroppedFilesArea , $FFFFFFFF, ReturnedFileName.s, 0)
For CharacterIndex.i = 0 To NumberOfCharactersDropped.i - 1
CharacterBuffer.s = Space(#MAX_PATH)
DragQueryFile_(*DroppedFilesArea , CharacterIndex.i, CharacterBuffer.s, #MAX_PATH)
Select hwnd
Case GadgetID(4)
SetGadgetText(4, GetGadgetText(4) + CharacterBuffer.s + Chr(10))
Case GadgetID(5)
AddGadgetItem(5, -1, CharacterBuffer.s)
EndSelect
Next
DragFinish_(*DroppedFilesArea)
EndSelect
ProcedureReturn CallWindowProc_(lpOldWndProc, hWnd, uMsg, wParam, lParam)
EndProcedure
OpenWindow(0, 0, 0, 400, 400, "Drag & Drop", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
TextGadget(4, 10, 10, 380, 180,"",#PB_Text_Border )
EditorGadget(5, 10, 200, 380, 180)
DragAcceptFiles_(GadgetID(4), 1)
DragAcceptFiles_(GadgetID(5), 1)
lpOldWndProc = SetWindowLongPtr_(GadgetID(4), #GWL_WNDPROC, @WndProc())
SetWindowLongPtr_(GadgetID(5), #GWL_WNDPROC, @WndProc())
Repeat
eventz=WaitWindowEvent ()
Select eventz
Case #PB_Event_CloseWindow
Quit = 1
EndSelect
Until Quit = 1
SetWindowLongPtr_(GadgetID(4), #GWL_WNDPROC, lpOldWndProc)
SetWindowLongPtr_(GadgetID(5), #GWL_WNDPROC, lpOldWndProc)

[Quote]

    Joker-2013
  • 1039
  • Longevity: 9 years 4 months
  • Posts: 2053
  • REPUTATION:120

    [+] [-]
  • Location: из прошлого
nikzzzz,

[Quote]

    AZJIO
  • 17953
  • Longevity: 6 years 8 months
  • Posts: 1321
  • REPUTATION:127

    [+] [-]
Если бы не было проблем с перетаскиванием, я бы написал еще несколько проектов на пьюрике...
В таких случаях я добавляю кнопку выбора папки/файла. Так как в этих случаях проблема нудного ручного поиска пути, то тут есть 2 варианта, указать по умолчанию путь наиболее вероятного варианта. Либо перед умолчальным проверить буфер обмена, если в нём существующий путь, то выкинуть диалог типа "Обнаружен путь в буфере обмена, открыть его?". Ну и третий вариант в своей проге с повышенными правами перетащить курсор захвата содержимого из окна с пониженными правами, как это делает Au3Info.exe из комплекта AutoIt3.

Page 1 of 5


Display posts:    

Current time is: 10-Nov 04:09

All times are UTC + 3


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum