Форум программистов, компьютерный форум, киберфорум
Pure Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
40 / 0 / 0
Регистрация: 20.03.2016
Сообщений: 23

Перетаскивание в проектах с включенным UAC и запуском от имени Администратора

18.02.2018, 19:20. Показов 2508. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В проектах на PureBasic, перетаскивание в окно, не работает, если включен UAC и приложение запускаем от имени Администратора...
Поискал на бескрайних просторах интернета, реализацию на WinAPI, но к сожалению - безрезультатно.
Поделитесь готовым решением, пожалуйста.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.02.2018, 19:20
Ответы с готовыми решениями:

Запуск программы от имени администратора (uac)
Необходимо, чтобы программа запускалась от имени администратора (часть данных складывается на С). То бишь, необходимо чтобы при запуске...

Запуск приложений от имени администратора (UAC)
Здравствуйте. Помогите со скриптом. Надо чтобы при нажали "нет" снова появился запрос. Пока не будет нажато "да". If...

Запуск программ от имени администратора и настройка UAC
После этого появляется запрос на разрешение изменений. Это не очень удобно. Можно этого как-то избежать, не меняя уровень UAC (контроль...

13
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
19.02.2018, 09:49
Цитата Сообщение от Joker-2013 Посмотреть сообщение
перетаскивание в окно, не работает
НЕ совсем так. Перетаскивание не работает, например, из приложения, запущенного с обычными правами, в приложение, запущенное с полными правами. Оба приложения должны быть запущены с полными правами.
Понятно почему так происходит — в противном случае любой ограниченный процесс может перерасти в полноправный.
WinAPI ни чем не поможет, это ограничение UAC.
0
40 / 0 / 0
Регистрация: 20.03.2016
Сообщений: 23
19.02.2018, 09:58  [ТС]
Pro_grammer, Спасибо за ответы, но в AutoPlay Media Studio Lua есть код и всё везде работает...
Для AutoIT тоже код имеется...
Многие же приложения корректно себя ведут...
Конечно, встречаются и такие, что тоже перетаскивание не работает...
Про уровень прав, я знаю... Но всё же.
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
19.02.2018, 10:44
Цитата Сообщение от Joker-2013 Посмотреть сообщение
Многие же приложения корректно себя ведут
Надо код смотреть. Тут дело скорее всего не в способе перетаскивания, а каким то образом предоставляются соответствующие права приложению.
0
40 / 0 / 0
Регистрация: 20.03.2016
Сообщений: 23
19.02.2018, 10:54  [ТС]
Pro_grammer, Пример реализации на LUA.
Проверенный годами... Работает при любых условиях.
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
19.02.2018, 11:37
Цитата Сообщение от Joker-2013 Посмотреть сообщение
реализации на LUA.
Ну вот, как и ожидалось там используют ChangeWindowMessageFilterEx с нужными параметрами, которая дает права по перетаскиванию.
Нужно перевести на Пурик этот код
Code
1
2
3
4
5
6
7
8
9
10
11
12
Window.DragDropEnable = function (hWnd)
    if User32:GetProcAddress_("ChangeWindowMessageFilterEx") then -- for Windows 7 and above
        User32.ChangeWindowMessageFilterEx(hWnd, 0x233,  1, 0);
        User32.ChangeWindowMessageFilterEx(hWnd, 0x004A, 1, 0);
        User32.ChangeWindowMessageFilterEx(hWnd, 0x0049, 1, 0);
    else
        if User32:GetProcAddress_("ChangeWindowMessageFilter") then -- for Windows Vista, Windows Server 2008
            User32.ChangeWindowMessageFilter(0x233,  1);
            User32.ChangeWindowMessageFilter(0x004A, 1);
            User32.ChangeWindowMessageFilter(0x0049, 1);
        end
end
В принципе не сложно, подключить библиотеку User32.dll, и вызвать с параметрами, которые в коде, всё стандартно.
Я бы помог, да пока нет времени.
0
40 / 0 / 0
Регистрация: 20.03.2016
Сообщений: 23
19.02.2018, 11:49  [ТС]
Pro_grammer, Я всё таки надеюсь на вашу помощь.
Есть уже несколько мелких проектов, заброшенных, так как не работает перетаскивание.
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
19.02.2018, 15:07
К сожалению (а может и к счастью) у меня нет такого, что бы в моей программе не работал drag and drop, может UAC отключен, а может я всегда крутой Админ .
По этому сам проверить не могу, т.к. не вижу разницы и работает всегда.
Могу только сказать, что все CallFunctionFast(*ChangeWindowMessageFil terEx...) возвращают True, а значит что то там срабатывает.
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
hWnd = OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
       EnableWindowDrop(0,  #PB_Drop_Files , #PB_Drag_Copy)
 
If OSVersion() >= #PB_OS_Windows_7
  If OpenLibrary(0, "USER32.DLL")
         *ChangeWindowMessageFilterEx = GetFunction(0, "ChangeWindowMessageFilterEx")
         If *ChangeWindowMessageFilterEx
             CallFunctionFast(*ChangeWindowMessageFilterEx, hWND, $233,  1, 0)
             CallFunctionFast(*ChangeWindowMessageFilterEx, hWND, $004A, 1, 0)
             CallFunctionFast(*ChangeWindowMessageFilterEx, hWND, $0049, 1, 0)
          EndIf
      CloseLibrary(0)
  EndIf
EndIf
 
  
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_WindowDrop 
        If EventDropType() = #PB_Drop_Files
           MessageRequester ("Путь к файлу: ", EventDropFiles())
        EndIf
        
      Case #PB_Event_CloseWindow
        End
    EndSelect
  ForEver
Проверяйте, потаскайте файлы в эту программу.
0
40 / 0 / 0
Регистрация: 20.03.2016
Сообщений: 23
19.02.2018, 16:27  [ТС]
Pro_grammer, Проверил, легче не стало..
Кружочек перечеркнутый показывает....
(если в манифесте прописан запуск от имени Администратора или запустить от имени его же)
UAC легко включается, если у вас не XP
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
19.02.2018, 16:59
Цитата Сообщение от Joker-2013 Посмотреть сообщение
если в манифесте прописан запуск от имени Администратора или запустить от имени его же
В этом смысле! Т.е. у вас программа уже работает с правами админа? Тогда смысл какой ей привилегии повышать?
Надо наверно той программе, из которой не получается копировать, искать hWND гаджета, с которого копируете и его подставлять в функцию ChangeWindowMessageFilterEx
0
40 / 0 / 0
Регистрация: 20.03.2016
Сообщений: 23
19.02.2018, 17:18  [ТС]
Pro_grammer, Так тут обратная ситуация...
Моська лает на слона...
Прога запущена от имени Администратора, а файл тащим от Пользователя.
Вот она и сопротивляется, мол куда ты со своими обрезанными правами лезешь...
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
19.02.2018, 20:28
Попробуйте ещё эту функцию, может сработает
PureBasic
1
2
3
ChangeWindowMessageFilter_(#WM_DROPFILES,#MSGFLT_ADD);
ChangeWindowMessageFilter_(#WM_COPYDATA,#MSGFLT_ADD);
ChangeWindowMessageFilter_($0049,#MSGFLT_ADD);
Вставить заместо этого
PureBasic
1
2
3
4
5
6
7
8
9
If OpenLibrary(0, "USER32.DLL")
         *ChangeWindowMessageFilterEx = GetFunction(0, "ChangeWindowMessageFilterEx")
         If *ChangeWindowMessageFilterEx
             CallFunctionFast(*ChangeWindowMessageFilterEx, hWND, $233,  1, 0)
             CallFunctionFast(*ChangeWindowMessageFilterEx, hWND, $004A, 1, 0)
             CallFunctionFast(*ChangeWindowMessageFilterEx, hWND, $0049, 1, 0)
          EndIf
      CloseLibrary(0)
  EndIf
0
40 / 0 / 0
Регистрация: 20.03.2016
Сообщений: 23
19.02.2018, 21:04  [ТС]
Ничего не выходит...
Так вообще перетаскивание у меня не работает...
0
40 / 0 / 0
Регистрация: 20.03.2016
Сообщений: 23
11.04.2018, 12:56  [ТС]
Pro_grammer, код рабочий, только захват Drag&Drop нужно было писать на API а не использовать встроенный....
Рабочий, самый простой вариант:
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
If OSVersion() >= #PB_OS_Windows_Vista
  ChangeWindowMessageFilter_(#WM_DROPFILES,#MSGFLT_ADD)
  ChangeWindowMessageFilter_(#WM_COPYDATA,#MSGFLT_ADD)
  ChangeWindowMessageFilter_($0049,#MSGFLT_ADD)
EndIf
 
If OpenWindow(1, 200, 200, 400, 400, "Drag & Drop", #PB_Window_SystemMenu)
  DragAcceptFiles_(WindowID(1),#True)
  Repeat
    Event = WaitWindowEvent()
    If Event = #WM_DROPFILES
      Buffer = AllocateMemory(300)
      DragQueryFile_(EventwParam(),0,Buffer,300)
      tempStr.s = PeekS(Buffer)
      FreeMemory(Buffer)
      MessageRequester("", tempStr.s)
    EndIf
  Until Event = #PB_Event_CloseWindow
EndIf
Правда Фред не рекомендует использовать EventwParam() и нет множественного выбора.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.04.2018, 12:56
Помогаю со студенческими работами здесь

Надо ли запускать программы от имени администратора под учетной админа с выключенным UAC?
Доброго здоровья. 1.подскажите надо ли запускать программы от имени администратора под учетной админа с выключенным UAC?помимо тех...

Закрепить программу на панели задач с запуском от имени Администратора
Как известно можно закрепить программу на панели задач Windows 7/8/... при помощи такого скрипта: mshta.exe vbscript:Execute("dim...

Права администратора и UAC
Привет, установил десятку (сборка 10240) После установки всё работало, но не было вроде как прав полных, т.е. запрашивал доступ к...

Перезапуск процесса с правами администратора (UAC)
Доброго времени суток. Столкнулся с проблемой при решении задачи. Мне необходимо создать файл в некотором каталоге. Путь к каталогу...

Запуск от администратора без вызова UAC
привет всем , у меня проблема : моему файлу ничего нельзя делать в директории Program files. можно его как-то запустить от имени...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru