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

    motorboy
  • 41869
  • Стаж: 8 дней
  • Сообщений: 10
  • Репутация:1

    [+] [-]
Простой лаунчер для запуска портативных программ.
Поддерживает Drag&Drop. Позволяет запускать программы от имени Администратора и от имени Системы с правами TrustedInstaller.
Если запускать программу удерживая клавишу Shift она запустится от имени Администратора если удерживать CTRL+Shift запустится от имени Системы.
Для скрытия и показа окна лаунчера используйте комбинацию клавиш CTRL+пробел.
Позволяет добавлять программы перетаскиванием из проводника Windows. Если вы перетащите файл на правую панель, программа добавится в текущую выделенную категорию.
Если перетащите на левую панель, программа добавится в ту категорию на которую вы её бросите.
Также чтобы сменить категорию перетащите программы из правой панели на категорию в левую панель.
Категории можно сортировать перетаскиванием. Программы сортируется автоматически по алфавиту.
Также вы можете добавлять системные утилиты Windows. Но это можно делать только вручную. Выберите "Добавить программу" и для например "Панели управления" впишите "Control". Утилита сама найдёт нужный файл и запустит его.
Если есть идеи что можно добавить в лаунчер - пишите в комментариях. Постараюсь сделать все на что хватит знаний.
Ссылка для скачивания https://drive.google.com/file/d/19wA_Ie3hNti85DUuSM...w?usp=drive_link
Скриншоты


Последний раз редактировалось: motorboy (2026-03-08 02:55), всего редактировалось 6 раз(а)

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

    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


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

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


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

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

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


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