purebasic.info

PureBasic forum
Текущее время: Ср июл 18, 2018 7:53 am

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




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
СообщениеДобавлено: Пн окт 02, 2017 6:09 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 629
Благодарил (а): 66 раз.
Поблагодарили: 20 раз.
Пункты репутации: 5
Как передать своей программе выделенные файлы в тотале или проводнике?
Почему не все программы умеют это делать?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пн окт 02, 2017 6:50 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2278
Откуда: Russia — Belarus
Благодарил (а): 5 раз.
Поблагодарили: 72 раз.
Пункты репутации: 11
Именно выделенные? Drag & Drop не устраивает?

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пн окт 02, 2017 2:25 pm 
Не в сети
профессор

Зарегистрирован: Пт фев 20, 2009 12:57 pm
Сообщений: 1638
Откуда: Алматы
Благодарил (а): 14 раз.
Поблагодарили: 45 раз.
Пункты репутации: 5
http://www.purebasic.fr/english/viewtop ... 3d1107bdb0


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вт окт 03, 2017 6:12 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 629
Благодарил (а): 66 раз.
Поблагодарили: 20 раз.
Пункты репутации: 5
qpAHToMAS писал(а):
Именно выделенные? Drag & Drop не устраивает?

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

SereZa, нихренася там навороченно, да ещё не по русски
забрал, посмотрю, но сомнения уже грызут


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вт окт 03, 2017 7:20 am 
Не в сети
док
Аватар пользователя

Зарегистрирован: Вт ноя 22, 2016 7:59 am
Сообщений: 75
Откуда: Россия/Пятигорск
Благодарил (а): 0 раз.
Поблагодарили: 13 раз.
Пункты репутации: 0
В Тотале есть возможность создавать на панели инструментов кнопки для вызова программ. Чтобы передать программе строку с выделенными в Тотале файлами, нужно при настройке кнопки указать в качестве параметра %S


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вт окт 03, 2017 11:28 am 
Не в сети
профессор

Зарегистрирован: Пт фев 20, 2009 12:57 pm
Сообщений: 1638
Откуда: Алматы
Благодарил (а): 14 раз.
Поблагодарили: 45 раз.
Пункты репутации: 5
открыть с помощью - это через реестр делается. я так для ключей буховских делал. у нас там файл бин - вот привязываешь к расширению бин запуск нужного ехе. правда пришлось лепить костыли... название файла передавалось как параметр ехешнику, а поскольку программа уже запущена, то логика была такая:
если программа уже запущена, если есть параметр - путь до файла, то из второй копии передать в первую этот самый параметр и закрыться. а первая уже там делает что надо.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср окт 04, 2017 6:02 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 629
Благодарил (а): 66 раз.
Поблагодарили: 20 раз.
Пункты репутации: 5
на всякий случай
вот так выделяешь, выбираешь нужную прогу и она сразу все файлы открывает, а не по одному
немногие программы так умеют, и теперь понятно почему, такие сложности
а у нерусей я ни чего не понял
Изображение


Вложения:
Буфер обмена02.png [27.87 KiB]
Скачиваний: 0
Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср окт 04, 2017 2:59 pm 
Не в сети
профессор

Зарегистрирован: Пт фев 20, 2009 12:57 pm
Сообщений: 1638
Откуда: Алматы
Благодарил (а): 14 раз.
Поблагодарили: 45 раз.
Пункты репутации: 5
ты смотрел как xml работает? то есть там нет четкого понятия "покажи мне это", как в случае с массивом. там будет показывать все друг за другом пока не попадется то, что надо. к сожалению 7 или 8 с 10 у меня нет, у меня старый ХР... а в нем другая история - обычный класс окошка SysListView32.

теперь что касается реестра.
Код:
1
2
3
4
5
6
If error = 0 And RegCreateKey("HKEY_CLASSES_ROOT\bin_auto_file\shell\Срок годности\command",".")
                 commpar$ = Chr(34) + where$ + "MNP.exe" + Chr(34) + " " + Chr(34) + "%1" + Chr(34)
                 RegSetValue("HKEY_CLASSES_ROOT\bin_auto_file\shell\Срок годности\command", "", commpar$,#REG_SZ,".")
               Else
                 error = 1
               EndIf


тут теперь надо самому разобраться что к чему :) bin_auto_file по идее должен быть каким-то образом связан с расширением файла bin. точно уже не помню, повидимому в bin стояла ссылка на bin_auto_file. "Срок годности" - это пункт в меню, который будет виден при клике правой кнопкой мышки на файле с расширением bin. на всех других расширениях его не будет. commpar$ - путь до моей программы, а "%1" - он в реестре так и будет написан %1, но это означает передачу в качестве параметра в мою программу полного пути до файла. то есть в программе еще надо будет предусмотреть обработку входящего параметра, чтобы получить этот самый путь до файла. так-же если программа уже запущена, то надо сделать логику, как я писал выше. вторая копия программы получила параметр - путь до файла, но увидев, что первый экземпляр программы запущен - то просто передала из себя в запущенную, а сама закрылась.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср окт 04, 2017 4:36 pm 
Не в сети
студент

Зарегистрирован: Вт июл 16, 2013 3:48 pm
Сообщений: 8
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Пункты репутации: 0
Как-то давно в этой теме
viewtopic.php?f=5&t=3323&p=51764#p51764
я привел ссылку на решение подобной задачи на Autoit
Кодом этим я пользуюсь много лет (по горячей клавише закидывает путь до выделенного файла в буфер обмена)

Сейчас взялся и адаптировал в общих чертах на PB с помощью COMatePLUS:

Код:
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
 
IncludePath "..\"
XIncludeFile "COMatePLUS.pbi"
 
OpenConsole()
 
 
Delay(8000) ; задержка - в это время необходимо выделить файлы в нужной папке
 
Define.i hwnd, count
hwnd = GetForegroundWindow_() ; получаем идентификатор активного\в фокусе окна
 
 
Define.COMateObject objShell
 
objShell = COMate_CreateObject("Shell.Application")
 
Define.COMateEnumObject items
items=objShell\CreateEnumeration("Windows")
 
 
Procedure EnumSelectFiles(folders.COMateObject)
 
  Define.COMateEnumObject itemsselected
  Define.COMateObject object1
 
  count=folders\GetIntegerProperty("document\SelectedItems\Count")
  Debug count ; выводим кодичество выделенных файлов
  PrintN(Str(count))
 
  itemsselected=folders\CreateEnumeration("document\SelectedItems")
 
 
  object1=itemsselected\GetNextObject()
 
  While object1
    file.s= object1\GetStringProperty("path")
    Debug file ; выводим файлы
    PrintN(file)
   
    object1\Release()
    object1 = itemsselected\GetNextObject()    
  Wend  
   
  itemsselected\release()
EndProcedure
 
 
If items
  Define.COMateObject object  
  object=items\GetNextObject()
 
  While object    
    If hwnd = object\GetIntegerProperty("hwnd") ; сравниваем идентификаторы папок и активного окна
      folder.s= object\GetStringProperty("LocationURL")
      Debug URLDecoder(folder) ; выводим путь до папки, декодируя url
        PrintN(folder)
      EnumSelectFiles(object)
      object\release()
      Break
    EndIf    
   
    object\Release()
    object = items\GetNextObject()
  Wend
   
  items\release()  
EndIf
 
objShell\release()  
 
 
Delay(30000)
 



После запуска нужно активировать окно нужной папки и выделить файлы, после чего будет выведен путь до папки, количество и пути до выделенных файлов


P.S.
Привет MrF :D
viewtopic.php?f=15&t=3816&start=150#p83544


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

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


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7


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

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB