purebasic.info

PureBasic forum
Текущее время: Сб окт 20, 2018 2:18 pm

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




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Отметить файл в проводнике
СообщениеДобавлено: Вт авг 09, 2016 1:22 pm 
Не в сети
профессор

Зарегистрирован: Вс авг 31, 2014 12:11 am
Сообщений: 433
Благодарил (а): 50 раз.
Поблагодарили: 20 раз.
Пункты репутации: 10
Вопрос незначительный, но всё же.
Наверняка многие знают, что explorer в windows можно открыть так:
Код:
1
RunProgram("explorer.exe", "/select, C:\TASTE\z.txt", "")


Так вот теперь, если одна его копия уже открыта таким способом, то как можно подсветить другой, находящийся в этой же папке, файл не закрывая сам explorer? Есть ли такая API?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Отметить файл в проводнике
СообщениеДобавлено: Вт авг 09, 2016 2:55 pm 
Не в сети
док

Зарегистрирован: Пн авг 13, 2012 3:19 pm
Сообщений: 80
Благодарил (а): 7 раз.
Поблагодарили: 9 раз.
Пункты репутации: 0
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Prototype ProtoSHOpenFolderAndSelectItems(pidlFolder, cidl, apidl = 0, dwFlags = 0)
Global SHOpenFolderAndSelectItems.ProtoSHOpenFolderAndSelectItems
 
If OpenLibrary(0, "shell32.dll")
  SHOpenFolderAndSelectItems = GetFunction(0, "SHOpenFolderAndSelectItems")
EndIf
 
Procedure BrowseToFile(FileName$)
  CoInitialize_(#Null)
 
  Define *pidl.ITEMIDLIST = ILCreateFromPath_(FileName$)
  If *pidl
    Define Result = SHOpenFolderAndSelectItems(*pidl, 0)
    ILFree_(*pidl)
   
    ProcedureReturn Result
  Else
    ProcedureReturn #E_FAIL
  EndIf
EndProcedure
 
BrowseToFile("D:\Soft\PureBasic_Demo_x64.zip")
Delay(2000)
BrowseToFile("D:\Soft\PureBasic_Demo_x64.exe")



Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Отметить файл в проводнике
СообщениеДобавлено: Вт авг 09, 2016 5:38 pm 
Не в сети
профессор

Зарегистрирован: Вс авг 31, 2014 12:11 am
Сообщений: 433
Благодарил (а): 50 раз.
Поблагодарили: 20 раз.
Пункты репутации: 10
pwd, ОГРОМНОЕ СПАСИБО! То что нужно.
Извините, а библиотеку по окончании закрывать не обязательно? PB сам закроет?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Отметить файл в проводнике
СообщениеДобавлено: Вт авг 09, 2016 9:23 pm 
Не в сети
док

Зарегистрирован: Пн авг 13, 2012 3:19 pm
Сообщений: 80
Благодарил (а): 7 раз.
Поблагодарили: 9 раз.
Пункты репутации: 0
Закроет, при завершении работы приложения.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Отметить файл в проводнике
СообщениеДобавлено: Ср авг 10, 2016 4:44 pm 
Не в сети
профессор

Зарегистрирован: Вс авг 31, 2014 12:11 am
Сообщений: 433
Благодарил (а): 50 раз.
Поблагодарили: 20 раз.
Пункты репутации: 10
pwd, простите за наглость. Ещё только один момент.
Проект делался без unicode (в "Настройках компилятора...") и "Формат файла -> Кодировка: Простой текст". К сожалению так Ваш код не работает. *pidl всегда равен нулю. Если возможно, пожалуйста исправьте. Если кто-то другой знает, пожалуйста подскажите (это к слову о том, что в данном посте обращение непосредственно к pwd).
Смотел эту тему (код в сообщении kvitaliy). Пытался приурочить, но подозреваю что это совсем не то.
Очень не хотелось бы неоправданно включать unicode. В строке будут только англ. буквы, точка, тире и цифры.

Добавлено:
Наверняка это возможно. Ведь ранее в той теме kvitaliy писал:
Цитата:
комбинация PokeS() и PeekS() может использоваться, чтобы выполнить преобразование между различными поддерживаемыми способами кодировок (Ascii, UTF8 и Unicode).

то есть поместить искомую строку в память PokeS() и прочитать её оттуда PeekS() в требуемой кодировке.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Отметить файл в проводнике
СообщениеДобавлено: Ср авг 10, 2016 6:14 pm 
Не в сети
профессор

Зарегистрирован: Вс июн 10, 2012 8:18 am
Сообщений: 1294
Благодарил (а): 60 раз.
Поблагодарили: 49 раз.
Пункты репутации: 14
Код:
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
Prototype ProtoSHOpenFolderAndSelectItems(pidlFolder, cidl, apidl = 0, dwFlags = 0)
Global SHOpenFolderAndSelectItems.ProtoSHOpenFolderAndSelectItems
 
Prototype ILCreateFromPath(Path)
Global ILCreateFromPathA.ILCreateFromPath
 
 
If OpenLibrary(0, "shell32.dll")
  SHOpenFolderAndSelectItems = GetFunction(0, "SHOpenFolderAndSelectItems")
 
  ILCreateFromPathA = GetFunction(0, "ILCreateFromPathA")
 
EndIf
 
 
Procedure BrowseToFile(FileName$)
  CoInitialize_(#Null)
 
  Define *pidl.ITEMIDLIST = ILCreateFromPathA(@FileName$)
  Debug ILCreateFromPath_(FileName$)
 
  If *pidl
    Define Result = SHOpenFolderAndSelectItems(*pidl, 0)
    ILFree_(*pidl)
   
    ProcedureReturn Result
  Else
    ProcedureReturn #E_FAIL
  EndIf
EndProcedure



Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Отметить файл в проводнике
СообщениеДобавлено: Ср авг 10, 2016 8:13 pm 
Не в сети
профессор

Зарегистрирован: Вс авг 31, 2014 12:11 am
Сообщений: 433
Благодарил (а): 50 раз.
Поблагодарили: 20 раз.
Пункты репутации: 10
MrF, работает !!! :D
Большое спасибо! В очередной раз выручили.
Также спасибо модераторам и всем причастным за этот дружественный форум!
И конечно же отдельное спасибо pwd за первоначальный код. Предоставленный Вами метод МНОГО лучше этого
Код:
1
"explorer.exe", "/select, ..."


Лучше от него вовсе отказаться. Почитал здесь, если кому интересно.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Отметить файл в проводнике
СообщениеДобавлено: Ср авг 10, 2016 11:42 pm 
Не в сети
профессор

Зарегистрирован: Вс июн 10, 2012 8:18 am
Сообщений: 1294
Благодарил (а): 60 раз.
Поблагодарили: 49 раз.
Пункты репутации: 14
knower писал(а):
Лучше от него вовсе отказаться. Почитал здесь, если кому интересно.

Да не, нормально все. Там просто у людей VB_ГОЛОВНОГО_МОЗГА, отсюда и неприязнь ко всему где нет объектов. В общем не слушай их :D


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

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


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

Сейчас этот форум просматривают: Bing [Bot] и гости: 7


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

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