svcsvc - Небольшой ActiveX с несколькими полезными методами.
Автор: Александр Орефков. orefkov@ezmail.ru
Установка: положите например в system32, и зарегистрируйте regsvr32 svcsvc.dll
ProgID: "Svcsvc.Service"

Версия 1.0.0.10 (kms)
[*] Получение номера версии сделано автоматически из ресурсов модуля

Версия 1.0.0.9 (metaeditor)
[-] (metaeditor) SelectFile: снято ограничение на количество выбираемых файлов
    http://www.1cpp.ru/forum/YaBB.pl?num=1169063750/21#21

Версия 1.0.0.8 (kms)
[+] Сортировка списка фильтра значений (FilterValue, флаг 256)
[+] Автоширина списка фильтра значений (FilterValue, флаг 512)
[+] Добавлены пиктограммы из SelectDlg для отображения в списках
    формат задания значений списка: НомерПиктограммы#Значение|ДополнительныеДанные,
    т.е. символ '#' разделяет номер пиктограммы и значение, а '|' - значение и данные
[+] Добавлен метод SetImageList для задания произвольного списка пиктограмм
    формат задания пиктограмм: строка с путями к пиктограммам, по одному на каждой строке

[-] Указание флага FilterValue 16 больше не препятствует возврату дополнительных значений
    (заданных через разделитель "|" в списке)
[-] Устранена потеря GDI объектов при каждом вызове FilterValue
[-] Устранен нежелательный селект текста при вызове FilterValue с флагом 32
    http://www.1cpp.ru/forum/YaBB.pl?num=1166186697/104#104

Версия 1.0.0.7 (kms)
Тестовый вариант сортировки и автоширины фильтра значений

Версия 1.0.0.6 (metaeditor)
Исправлена проблема при выборе элементов справочников с установленным флажком "быстрый выбор"
http://www.1cpp.ru/forum/YaBB.pl?num=1166186697/47#47

Версия 1.0.0.5
Добавлены методы:
GetWindowText(WH,IsList) - получить текст окна
WH
	необязательный, по умолчанию 0
	хендл окна у которого нужно получить текст
	если 0 или неуказан - используется текущий фокус
IsList
	необязательный, по умолчанию false
	если true тогда передаваемый хендл считается 
	комбобоксом или листбоксом и возвращается его содержимое
	разделенное разделителем строк \r\n
 

SetWindowText(WH,Text) - установить текст окна 
WH
	необязательный, по умолчанию 0
	хендл окна которому нужно установить текст
	если 0 или неуказан - используется текущий фокус
Text
	текст который необходимо установить
 
Свойство Version - текущая версия библиотеки

метод FilterValue - новый флаг 128 
В этом случае повторяется функционал скрипта "Выбрать из списка.vbs"
тоесть список заполняется из активного комбобокса или листбокса

пример:
Set Svc = CreateObject("Svcsvc.Service")
Svc.FilterValue("",1 + 128,"",0,0,1)


=============================================================
=============================================================
=============================================================


Свойства компоненты:
-------------------------------------------------------------
Version - число, текущая версия библиотеки в виде (1005, 1006 ...).


Методы компоненты:
-------------------------------------------------------------
AnsiToOEM(ByVal Ansi As String) As String
Преобразовывает строку из кодировки ANSI в OEM

-------------------------------------------------------------
OEMToAnsi(ByVal OEM As String) As String
Преобразовывает строку из кодировки OEM в ANSI

-------------------------------------------------------------
SelectFile(ByVal ForSave As boolean, ByVal StartFileName As String, ByVal Filter As String, ByVal MultiSelect As boolean=False) As String
Открыть диалог выбора файла.
ForSave
	true для диалога "Сохранить", false для диалога "Открыть"
StartFileName
	Начальное имя файла. При указании с путем диалог откроется в заданной папке.
Filter
	Фильтр файлов. Представляет собой строку с описаниями фильтров и их масками,
	разделенные символом "|". Например:
	"Файлы метаданных|*.md|Текстовые файлы (*.txt)|*.txt|Все файлы|*"
MultiSel
	true для выбора нескольких файлов, false для выбора одного файла.
	Необязательный параметр. По умолчанию False.

Возвращает: при нажатии "Отмена" пустую строку,
при нажатии OK пути к выбранным файлам, разделенные vbCrLf

-------------------------------------------------------------
SelectFolder(ByVal Caption As String, ByVal StartFolder As String="", ByVal Flags As Long=0,ByVal Root="") As String
Открыть стандартный диалог выбора папки.
Caption
	Текст подсказки
StartFolder
	Стартовый каталог. Необязательный параметр.
Flags
	Опции диалога. Необязательный параметр. По умолчанию 0.
	&H1    - возвращать только объекты файловой системы
	&H10   - поле ввода
	&H1000 - искать компьютеры
	&H2000 - искать принтеры
	&H4000 - включать файлы

Root
	Необязательный параметр. Если задан, то для выбора будут открыты только папки,
	начиная с заданной.
Возвращает: путь к выбранной папке или пустую строку.

-------------------------------------------------------------
FileA2O(ByVal Path As String)
Преобразовать файл из кодировки ANSI в OEM

-------------------------------------------------------------
FileO2A(ByVal Path As String)
Преобразовать файл из кодировки OEM в ANSI

-------------------------------------------------------------
GetWindowText(WH,IsList)
Получить текст окна.
WH
	необязательный, по умолчанию 0
	хендл окна у которого нужно получить текст
	если 0 или неуказан - используется текущий фокус
IsList
	необязательный, по умолчанию false
	если true тогда передаваемый хендл считается 
	комбобоксом или листбоксом и возвращается его содержимое
	разделенное разделителем строк \r\n
 

-------------------------------------------------------------
SetWindowText(WH,Text)
Установить текст окна.
WH
	необязательный, по умолчанию 0
	хендл окна которому нужно установить текст
	если 0 или неуказан - используется текущий фокус
Text
	текст который необходимо установить

		
-------------------------------------------------------------
SelectValue(ByVal Values As String,ByVal Caption As String,ByVal Mark As boolean=False) As String
Выбрать значение из списка.
Values
	Строка со значениями для выбора. Каждое значение должно располагаться на отдельной
	строке (разделены переводом строк). При отметке нескольких значений
	в конце каждого значения можно указать "|c" (латинская). В этом случае
	значение изначально будет отмечено.
Caption
	Заголовок окна для выбора.
Mark
	true для пометки нескольких значений, false для выбора одного значения.
	Необязательный параметр. По умолчанию False.

Возвращает строку с выбранным значением. При пометке нескольких значений
возвращает все помеченные значения, разделенные vbCrLf.
Диалог для выбора значений изменяемого размера.

-------------------------------------------------------------
SelectInTree(ByVal Values As String,ByVal Caption As String,ByVal Mark As boolean=False, ByVal OnlyItems As boolean=True) As String
Выбрать значение из дерева значений.
Values
Строка со значениями, каждое из которых размещено в отдельной строке
(разделены переводом строк). Для задания вложенных значений используется символ
табуляции в начале строки. Например:
"Папка1
	Значение1
	Значение2
	Значение3
	ПодПапка1_1
		Значение1_1
		Значение1_2
Папка2
	Значение2_1
	Значение2_2
Значение3"
После каждого значения через символ | можно указать модификаторы.
c или C (от Checked) - значение изначально будет омечено
e или E (от Expanded)- узел изначально будет "развернут".

Caption: Заголовок окна.
Mark:	true для отметки нескольких значений, false для выбора одного значения.
	Необязательный параметр. По умолчанию False
OnlyItems: не обязательный параметр. Действует только при выборе одного значения.
	true - выбирать только значения, не имеющие потомков,
	false - выбирать любое значение.
	По умолчанию - true.
Возвращает:
при отмене пустую строку,
при выборе полный путь к выбранному значению, разделенный "\".
Например, "Папка1\ПодПапка1_1\Значение1_2"
При пометке нескольких значений возвращает полные пути к
каждому выбранному значению, разделенные vbCrLf.
Например:
"Папка1
Папка1\Значение1
Папка1\Значение2
Папка1\ПодПапка1_1\Значение1_1
Значение3"


-------------------------------------------------------------
PopupMenu(ByVal Values As String,ByVal ShowIn As short=0, X As Long =0,Y As Long=0) As String
Показать контекстное меню.
Values: строка со значениями, каждое из которых размещено в отдельной строке
(разделены переводом строк). Для задания вложенных значений используется символ
табуляции в начале строки. Например:
"Папка1
	Значение1
	Значение2
	Значение3
	ПодПапка1_1
		Значение1_1
		Значение1_2
Папка2
	Значение2_1
	Значение2_2
Значение3"
Кроме того, в каждом значении можно через символ "|" указать флаг
и идентификатор пункта меню.
Флаги могут быть:
c или C (от Checked) - пункт меню будет с галочкой.
d или D (от Disabled) - пункт будет недоступен.
Например:
"НекийПункт|c|Command1"

ShowIn: вариант "привязки меню".
0 - меню будет выведено в текущем расположении указателя мыши.
1 - меню будет выведено в текущем расположении курсора.
Любое другое значение - меню будет выведено в указанных координатах.
Необязательный параметр. По умолчанию 0.
X, Y: координаты для вывода меню. Необязательные параметры.

Возвращает строку с выбранным пунктом меню. Если для него задан
идентификатор, то будет возвращен он.

-------------------------------------------------------------
FilterValue(ByVal Values As String, ByVal Flags As Short=0,	ByVal Caption As String="", ByVal X As Long=0, ByVal Y As Long=0, ByVal W As Long=0, ByVal H As Long=0) As String
Открывает окошко выбора из списка с фильтрацией.
Те по мере ввода текста список для выбора уменьшается.

Values
	Строка со значениями для выбора, каждое из которых расположено
	на отдельной строке (разделены vbCrLf).
Flags
	Различные флаги. Может быть суммой следующих значений:
1	- Фильтровать по вхождению подстрок. Если флаг не указан,
	значения будут фильтроваться с начала строки.
2	- Вывести окно в позиции мыши.
4	- Вывести окно в позиции курсора
8	- Вывести окно в указанных координатах
16	- Допускать ввод своих значений. В этом случае функция возвратит
	то, что пользователь набрал в окне ввода. Иначе будет возвращен
	выбранный пункт списка.
32	- Использовать заголовок. В этом случае список выбора выведется
	с указанным заголовком.
64	- Использовать заголовок в качестве начального значения фильтра.
	В этом случае список выбора выведется уже отфильтрованным по данному значению.
128	- Попытаться заполнить список из активного комбобокса или листбокса
256	- Сортировка списка
512	- Автоширина окна (автоматически при изменении списка ширина окна подстраивается
	по текущей самой длинной строке)
Необязательный параметр. По умолчанию 0.

Caption
	Заголовок для списка в случае, если установлен флаг 32.
	Необязательный параметр. По умолчанию ""
X, Y
	Координаты вывода списка, если установлен флаг 8.
	Не обязательные параметры, по умолчанию 0.
	
W, H
	Ширина и высота списка
	Не обязательные параметры, 
	Если не указаны или равны 0, то задаётся ширина и высота по умолчанию.
	Если W (ширина) = 1, тогда при создании окна задается автоширина списка
	по самой длинной переданной строке

-------------------------------------------------------------
SetImageList(ByVal Values As String) As String
Устанавливает список пиктограмм для последующего использования совместно с FilterValue

Values
	Строка - список с путями к пиктограммам, каждый путь должен быть расположен
	на отдельной строке (разделитель vbCrLf).

Возвращает:
	Список пиктограмм, которые загрузить не удалось (пустая строка в случае успеха)
