Имя: Пароль:
1C
1С v8
Иконки файлов
, , ,
0 Phil_McLaren
 
12.04.13
08:00
Добра!
Нужно программно получать иконки файлов. Ограничений по расширению нет, файл в доступе будет (пользователь перетаскивает на форму).
В 77 был метод АтрибутыФайла, но альтернативы ему в 82 не вижу
В shell32.dll есть shgetfileinfo, но идеи, как его вызвать, нет - vbscript не подходит, поскольку Script Host не тянет подключение библиотек
Подключение любого рода компонент (в т.ч. самописных) не вариант.

Буду рад идеям и наводкам
1 1Сергей
 
12.04.13
08:05
>>В 77 был метод АтрибутыФайла...

И что, он иконки вытягивал?
2 Wobland
 
12.04.13
08:10
альтернатива атрибутам файла в восьмёрке - объект типа файл
3 Phil_McLaren
 
12.04.13
08:43
(1) сколь я помню, один из параметров заполнялся иконкой
(2) а вот он как раз этого не делает

так или иначе, не вижу чем получить иконку

по факту на форме есть таблица с файлами, и очень было бы здорово дать каждому из них значок ради вящей визуализации
4 Wobland
 
12.04.13
08:47
(3) я вообще не помню и не могу помнить. но мой СП против иконок.
имею мнение, что это затраты на это баловство не окупятся причинённой пользой
5 Phil_McLaren
 
12.04.13
08:54
(4) не могу поспорить, практическая ценность невелика
тут уже спортивный интерес присутствует
6 Wobland
 
12.04.13
09:04
7 Phil_McLaren
 
12.04.13
09:08
да, тоже это находил. для вызова ExtractIcon нужно использовать shell32, так что даже сторонний подобный код в ScriptHost не вызвать
COM бы какой-нибудь, вызвать метод и получить ico, хэндл иконки в файле найти нетрудно
8 Wobland
 
12.04.13
09:08
Как использовать функцию SHGetFileInfo для получения значков, связанных с файлами
http://support.microsoft.com/kb/319350
но это C#
9 Wobland
 
12.04.13
09:10
а это джава
FileSystemView.getFileSystemView().getSystemIcon(new File(arg[0]))
а джавовский код я умею исполнять ;)
10 Wobland
 
12.04.13
09:13
вроде без этого не взлетит: import java.io.File;
источник: http://www.sql.ru/forum/actualthread.aspx?tid=198362
не знаю, короче..
11 Cube
 
12.04.13
09:22
ПиктограммыФайлов.png из какой-то последней конфы от 1С (БП 3.0, кажется): http://storage2.static.itmages.ru/i/13/0412/h_1365744054_6917769_d41d8cd98f.png
Остальные, если сильно захочешь, дорисуешь сам :)
12 Wobland
 
12.04.13
09:29
(11) весь цимес в том, чтобы спрашивать у конкретной ОС, а не давать что-то "предопределённое". впрочем, моя позиция может отличаться от авторской ;)
13 Phil_McLaren
 
12.04.13
10:50
(8), встречал такие примеры. собственно, если бы мог c# код припаять безболезненно к проекту (т.е. без компонент и регистрации библиотек в системе), то сам бы написал
(9) а вызвать подходящий код на яве возможно будет под Script Host`ом? я в этой же работе использую vbscript, соответственно без лишних файлов и прочего получаю результат
(10) давай подумаем)
(11,12) да... надо динамически получать
14 Wobland
 
12.04.13
11:15
(13)    обMSScriptControl=Новый COMОбъект("MSScriptControl.ScriptControl");
   обMSScriptControl.language="javascript";
   Старт=обMSScriptControl.eval("new Date().getTime()");

на работе я занят работой, а эта задача требует уже отвлечения от работы. и вечером в пятницу мне довольно лениво будет что-то думать. так что, извини, не сегодня ;)
15 Phil_McLaren
 
12.04.13
11:16
(14) конечно, спасибо, что уделил внимание)
я напомню в понедельник, если еще будет актуально ;)
16 masenshi
 
12.04.13
11:36
(0) декомпилятор на 1С
17 Phil_McLaren
 
16.04.13
08:43
итак... ап!

желание перехитрить систему все еще велико)
возможные пути видны те же - vbscript, jscript, powershell
гугл уже вспотел от моих поисков, так что тут нужны свежие идеи -)
18 IamAlexy
 
16.04.13
08:44
нафейхоа?

из типовой возьми коллекцию с типовыми наиболее часто употребимыми иконками файлов..
19 Phil_McLaren
 
16.04.13
08:51
(18) как я уже говорил, по существу это просто challenge своего рода) профанацию типа предложенной я всегда успею реализовать, тем более что это все так, фишка, к функционалу отношения не имеет