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

    motorboy
  • 41869
  • Стаж: 9 дней
  • Сообщений: 11
  • Репутация:2

    [+] [-]
Простой лаунчер для запуска портативных программ.
Поддерживает Drag&Drop. Позволяет запускать программы от имени Администратора и от имени Системы с правами TrustedInstaller.
Если запускать программу удерживая клавишу Shift она запустится от имени администратора если удерживать CTRL+Shift запустится от имени системы.
Позволяет добавлять программы перетаскиванием из проводника Windows. Если вы перетащите файл на правую панель, программа добавится в текущую выделенную категорию.
Если перетащите на левую панель, программа добавится в ту категорию на которую вы её бросите.
Также чтобы сменить категорию перетащите программы из правой панели на категорию в левую панель.
Категории можно сортировать перетаскиванием. Программы сортируется автоматически по алфавиту.
Также вы можете добавлять системные утилиты Windows. Но это можно делать только вручную. Выберите "Добавить программу" и для например "Панели управления" впишите "Control". Утилита сама найдёт нужный файл и запустить его.
Для показа окна лаунчера используйте комбинацию клавиш CTRL+пробел или выберите горячую клавишу в настройках.
Другие клавиши:
CTRL+F - делает активной строку поиска.
Стрелка вправо\влево делают активными соответственно правую и левую панель.
Клавиши вверх\вниз - перемещение по списку групп\программ.
ENTER - запуск текущей выделенной программы.
DEL - удалить текущую выделенную программу.
CTRL+D - дублировать текущую выделенную программу (если нужно добавить одну и ту же прогу в разные группы).
Если есть идеи что можно добавить в лаунчер - пишите в комментариях. Постараюсь сделать все на что хватит знаний.
Версия 1.1
Добавлена возможность запуска программ одним щелчком мыши.
Добавлена возможность запуска программ без ключей.
Добавлено сворачивание лаунчера в трей и горячая клавиша для показа окна (по умолчанию CTRL+пробел но можно изменить в настройках).
Добавлена возможность добавления нескольких файлов перетаскиванием из проводника Windows.
Добавлена возможность изменить размер шрифта для панелей. Позже попробую сделать изменение размера иконок.
Ссылка для скачивания v1.1
https://drive.google.com/file/d/1A38i7A9Y6xIoPa-yNv...w?usp=drive_link
https://disk.yandex.ru/d/GWQmaZANAqOsXQ
Скриншоты


Последний раз редактировалось: motorboy (Сегодня, в 21:49), всего редактировалось 11 раз(а)

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

    AZJIO
  • 17953
  • Стаж: 8 лет
  • Сообщений: 1356
  • Репутация:127

    [+] [-]
motorboy, вот ещё пример со списком, с привязкой данных к пункту

code

;- TOP
EnableExplicit
;- ● Structure
Structure prog
  path.s
  name.s
  idxImage.i
  size.q
  *p
EndStructure
;- ● Define
Define ListIcon_ID, hImgList
Define hIcon, i, idx, tmp, tmp$
Define item.LVITEM
Define *p
Define NewList ProgName()
Define NewList prog.prog()
;- List
*p = AddElement(prog()) : prog()\p = *p : prog()\path = "C:\Program Files\7-Zip\7zFM.exe"
*p = AddElement(prog()) : prog()\p = *p : prog()\path = "C:\Program Files\AIMP\AIMP.exe"
*p = AddElement(prog()) : prog()\p = *p : prog()\path = "C:\Program Files\WinRAR\WinRAR.exe"
*p = AddElement(prog()) : prog()\p = *p : prog()\path = "C:\Windows\System32\notepad.exe"
*p = AddElement(prog()) : prog()\p = *p : prog()\path = "C:\Windows\System32\calc.exe"
*p = AddElement(prog()) : prog()\p = *p : prog()\path = "C:\Program Files\Internet Explorer\iexplore.exe"
*p = AddElement(prog()) : prog()\p = *p : prog()\path = "C:\Program Files\Everything\Everything.exe"
*p = AddElement(prog()) : prog()\p = *p : prog()\path = "C:\Program Files\WinMerge\WinMergeU.exe"
*p = AddElement(prog()) : prog()\p = *p : prog()\path = "C:\Program Files (x86)\K-Lite Codec Pack\MPC-HC64\mpc-hc64.exe"
*p = AddElement(prog()) : prog()\p = *p : prog()\path = "C:\Program Files (x86)\Resource Hacker\ResourceHacker.exe"
*p = AddElement(prog()) : prog()\p = *p : prog()\path = "C:\Program Files (x86)\Scanner\Scanner.exe"
*p = AddElement(prog()) : prog()\p = *p : prog()\path = "C:\Program Files (x86)\HxD\HxD.exe"
*p = AddElement(prog()) : prog()\p = *p : prog()\path = "C:\Program Files (x86)\QTranslate\QTranslate.exe"
*p = AddElement(prog()) : prog()\p = *p : prog()\path = "C:\Program Files (x86)\HTML Help Workshop\hhw.exe"
*p = AddElement(prog()) : prog()\p = *p : prog()\path = "C:\Program Files (x86)\FastStone Image Viewer\FSViewer.exe"
*p = AddElement(prog()) : prog()\p = *p : prog()\path = "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
;-┌──GUI──┐
If OpenWindow(0, 0, 0, 300, 350, "Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ListIcon_ID = ListIconGadget(#PB_Any, 5, 5, 290, 340, "Файлы", 200, #PB_ListIcon_FullRowSelect | #LVS_NOCOLUMNHEADER)
  hImgList = ImageList_Create_(32, 32, #ILC_COLOR32 | #ILC_MASK, 1, 1)
  SendMessage_(GadgetID(ListIcon_ID), #LVM_SETIMAGELIST, #LVSIL_SMALL, hImgList)
  ; Добавляем данные
  ForEach prog()
  Next
  i = 0
  SendMessage_(GadgetID(ListIcon_ID), #WM_SETREDRAW, 0, 0)
  ForEach prog()
    If FileSize(prog()\path) > 100
      hIcon = 0
      ExtractIconEx_(prog()\path, 0, @hIcon, 0, 1)
      If hIcon
        tmp = ImageList_AddIcon_(hImgList, hIcon)
        DestroyIcon_(hIcon) ; Иконку уже в ImageList, оригинал можно удалить
        If tmp <> -1
          prog()\idxImage = i
          item\mask = #LVIF_IMAGE
          item\iItem = i
          item\iImage = i
          tmp$ = GetFilePart(prog()\path, #PB_FileSystem_NoExtension)
          AddGadgetItem(ListIcon_ID, i, tmp$)
          SendMessage_(GadgetID(ListIcon_ID), #LVM_SETITEM, 0, @item)
          SetGadgetItemData(ListIcon_ID, i, prog()\p)
          i + 1
        EndIf
      EndIf
    Else
      DeleteElement(prog()) ; удалить несуществующий путь из списка
    EndIf
  Next
  SendMessage_(GadgetID(ListIcon_ID), #WM_SETREDRAW, 1, 0)
;-┌──Loop──┐
  Repeat
    Select WaitWindowEvent()
;- ├ Gadget
      Case #PB_Event_Gadget
        Select EventGadget()
          Case ListIcon_ID
            If EventType()  = #PB_EventType_LeftClick
              idx = GetGadgetState(ListIcon_ID)
              If idx <> -1
                *p = GetGadgetItemData(ListIcon_ID, idx)
                ChangeCurrentElement(prog() , *p)
                RunProgram(prog()\path)
              EndIf
            EndIf
        EndSelect
;- ├ Close
      Case #PB_Event_CloseWindow
        CloseWindow(0)
        ImageList_Destroy_(hImgList)
        End
    EndSelect
  ForEver
;-└──Loop──┘
EndIf

Информация от Ander_73


Дружище, такие "простыни" кода лучше сворачивать под спойлер.

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

    motorboy
  • 41869
  • Стаж: 9 дней
  • Сообщений: 11
  • Репутация:2

    [+] [-]
AZJIO Спасибо за помощь!
Скоро выложу новую версию в которой реализовал то о чем просили, а потом займусь размером иконок, Hover меню, и фильтром показа программ на разных версиях винды.

Страница 3 из 3


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

Текущее время: 10-Мар 23:42

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


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