нравится
Личная панель  
Наши услуги  
 
Хочешь
- сайт без рекламы?
- прямые ссылки?
- общение и конкурсы?
Хочешь
- качать без проблем с летитбит?
 
Категории программ  
Софт хиты  
Наш опрос  
 
Чего вам хотелось бы видеть на сайте?

Софт для iOS
Софт для Android
Софт для Windows
Игры для iOS
Игры для Android
Игры для Windows
Новости IT
Фильмы
Музыку

 


Ответить
 Хороший менеджер типов фалов - искать в нете или писать самому?
#1 thexhs | 15 декабря 2008 00:02

Активный дример
  • 68

Репутация: 30
Группа: Посетители
Сообщений: 810
C нами с: 11.11.2008
Очки: 2006
Нужна нормальная программа для управления типами файлов - значек назначить, контекстное меню поправить, список прог для открытия назначить...
Штаные средства Windows неудобны и медленны (и при том реализация их в 95 Виндовсе намного удобней того что сейчас в XP творится), часто аналогичную функцию можно видеть прикрученой к различным твикерам, но там она слишком аскетична и ограничена...

Некоторое время ковырялся в реестре, пытаясь разобратся как Windows это делает, в принципе теперь познаний хватает для написания аналогичной программы, вот только велосипед изобретать что то не хочется...

Кто знает хорошую программу для этого дела? Ибо часто после каждой установки программ приходится наводить порядок в типах файлов, но делать это через Свойства папки/Типы файлов терпения нехватает - тормозит слишком при чтении из реестра... Работать в REGEDIT тоже не слишком удобно...
  Перейти в начало страницы  
#41 thexhs | 20 января 2009 23:45

Активный дример
  • 68

Репутация: 30
Группа: Посетители
Сообщений: 810
C нами с: 11.11.2008
Очки: 2006
Список специализованных функций АПИ, которые читают только данные определенного типа

function RegSetString(RootKey: HKEY; Name: string; Value: string): boolean;
function RegSetMultiString(RootKey: HKEY; Name: string; Value: string): boolean;
function RegSetExpandString(RootKey: HKEY; Name: string; Value: string): boolean;
function RegSetDWORD(RootKey: HKEY; Name: string; Value: Cardinal): boolean;
function RegSetBinary(RootKey: HKEY; Name: string; Value: array of Byte): boolean;
function RegGetString(RootKey: HKEY; Name: string; var Value: string): boolean;
function RegGetMultiString(RootKey: HKEY; Name: string; var Value: string): boolean;
function RegGetExpandString(RootKey: HKEY; Name: string; var Value: string): boolean;
function RegGetDWORD(RootKey: HKEY; Name: string; var Value: Cardinal): boolean;
function RegGetBinary(RootKey: HKEY; Name: string; var Value: string): boolean;
function RegGetValueType(RootKey: HKEY; Name: string; var Value: Cardinal): boolean;
function RegValueExists(RootKey: HKEY; Name: string): boolean;
function RegKeyExists
  Перейти в начало страницы  
#42 thexhs | 21 января 2009 00:08

Активный дример
  • 68

Репутация: 30
Группа: Посетители
Сообщений: 810
C нами с: 11.11.2008
Очки: 2006
AlexSlipknot19, Погуглив немного:
Ошибка E2065 Unsatisfied forward or external declaration - похоже Дельфя не знает о существовании такой функции, требует подключить който модуль...
И по Ctrl+Клик дельфя тоже не находит функцию (с извесныеми компилятору именами, Ctrl+Клик делает переход в место где оно определено)
Получается что для использования этих функций нужно подключить определнный модуль через Uses

Нашел и сам модуль, правда в исходниках, я так понял надо его к каждому проэкту, использующему список функций из комента 41, подключать, похоже в АПИ они не определены, а просто оболочка есть, которая делает работу с АПИ проще...

http://www.delphisources.ru/pages/faq/base/registry_api.html
  Перейти в начало страницы  
#43 thexhs | 21 января 2009 00:11

Активный дример
  • 68

Репутация: 30
Группа: Посетители
Сообщений: 810
C нами с: 11.11.2008
Очки: 2006
А для чтения данных, остается одна единственная всеядная функция RegQueryValue...
  Перейти в начало страницы  
#44 666666joker | 21 января 2009 00:11

Будущий дример
  • 17

Репутация: 0
Группа: Посетители
Сообщений: 6
C нами с: 18.12.2008
Очки: 247
Цитата thexhs
Твики не помешают, буду благодарен...
Наверно буду писать самостоятельно, кажется тема серьезно еще не поднималась кем то...
А если через дельфи писать, то что лучше использовать TRegistry или WinAPI?
  Перейти в начало страницы  
#45 AlexSlipknot | 21 января 2009 00:19

Активный дример
  • 68

Репутация: 1809
Группа: Посетители
Сообщений: 902
C нами с: 29.10.2008
Очки: 7549
thexhs, Именно с этой станички я и писал. Не знаю, ничего не могу понять... Все правильно, но ничего не работает....
З.Ы.: Если у тебя есть АСЬКА, то милости прошу. 454483876. Так будет немножечко быстрее.

--------------------
Slipknot Corp.

  Перейти в начало страницы  
#46 thexhs | 21 января 2009 03:10

Активный дример
  • 68

Репутация: 30
Группа: Посетители
Сообщений: 810
C нами с: 11.11.2008
Очки: 2006
Уже намечается кое-какой прогресс - программа умеет считывать с реестра часть нужных данных (а для версии 0.01 много и не надо), осталось толко научить ее сохранять изменения и версиия 0.01 будет готова.

Пока что выглядит внешне оно так:


test
  Перейти в начало страницы  
#47 InquisiTOR | 21 января 2009 07:43

Только зашел
  • 0

Репутация: --
Группа: Гости
Сообщений: 0
C нами с: --
Очки:
thexhs, у меня так ^_^
Первая версия, так сказать (0.1):
А ниже версия 0.2...
test
test
  Перейти в начало страницы  
#48 InquisiTOR | 21 января 2009 07:50

Только зашел
  • 0

Репутация: --
Группа: Гости
Сообщений: 0
C нами с: --
Очки:
Я тут подумал... Может скооперируемся и вместе продолжим работу над прогой? =) Или каждый сам по себе?
  Перейти в начало страницы  
#49 thexhs | 21 января 2009 16:00

Активный дример
  • 68

Репутация: 30
Группа: Посетители
Сообщений: 810
C нами с: 11.11.2008
Очки: 2006
InquisiTOR, Я б и не против, но я в С# по 100 бальной шкале на 0.5 разве что тяну (наклепал когда то ритуальных Hello word, компилил чем то из штатного состава Net framework)... Можно конечно занятся самообразованием, но это затянет время разработки

А вот на Дельфях и в Билдере кое что могу (правда давно не практиковался) ...
То что сейчас пишу на Дельфи - является так сказать пробой пера, ибо никаго серьезного софта раньше не писал.
Планируется смена языка, или на Билдер (там уже начал класс строить для этого дела, но тогда с реестром не умел) или на канонический С++

А вообще, как средство разработки Дельфи (подозреваю что и Билдер - он же тоже на VCL)не очень удобен - проблемы с типами данных (API работает с AnsiChar а VCL с AnsiString), и ограниченные возможности работы с компонентами того же VCL (приходится часто писать громоздкие процедуры - 15 строк на определение индекса выбраной записи в ListBox к примеру)

Тоесть мне в плане кооперации мешает "языковый барьер"...
  Перейти в начало страницы  
#50 InquisiTOR | 21 января 2009 16:18

Только зашел
  • 0

Репутация: --
Группа: Гости
Сообщений: 0
C нами с: --
Очки:
thexhs, нуууу... =) как говорится, настоящему программисту не составит труда выучить другой язык... Я знаю и С++ и C#, вот дельфи не очень... Так что предлагай =)
  Перейти в начало страницы  
#51 AlexSlipknot | 21 января 2009 16:44

Активный дример
  • 68

Репутация: 1809
Группа: Посетители
Сообщений: 902
C нами с: 29.10.2008
Очки: 7549
thexhs, напиши пожалуйста конкретный пример RegQueryValue или лучше RegQueryValueEx , а то я ж целый день убью, пока все нормально напишу... lol

--------------------
Slipknot Corp.

  Перейти в начало страницы  
#52 alpex | 21 января 2009 17:34

Общительный дример
  • 51

Репутация: 134
Группа: Посетители
Сообщений: 361
C нами с: 15.09.2008
Очки: 1768
thexhs, тебе б создать блог типа "Мои маленкие секреты на Делфи" или "Борланд: То, о чем вы не знели и боялись спросить" - отбоя бы небыло...

--------------------
Простите все кто мне не мил,
Простите, что гляжу по-волчьи.
Я слишком долго всех любил.
Спасибо. Отучили. Сволочи...
  Перейти в начало страницы  
#53 thexhs | 21 января 2009 18:01

Активный дример
  • 68

Репутация: 30
Группа: Посетители
Сообщений: 810
C нами с: 11.11.2008
Очки: 2006
AlexSlipknot19, Вот этот код ДОЛЖЕН работать, он читает регистрационное имя пользователя винды...

procedure TForm1.Button1Click(Sender: TObject);
var
Handle1 : HKEY;
BufferPC1 : PAnsiChar;
BufferR1: array[0..1000] of char;
Size : Integer;
Str : PAnsiChar;
begin
BufferPC1 := BufferR1;
Size := sizeof(BufferR1);
Str := 'SOFTWAREMicrosoftWindows NTCurrentVersionRegisteredOwner';
if (RegOpenKey(HKEY_LOCAL_MACHINE,nil,Handle1)=ERROR_SUCCESS) then
begin
if (RegQueryValue(Handle1, Str, BufferPC1, Size)=ERROR_SUCCESS) then
begin
Edit1.Text := StrPas(BufferPC1);
end;
end;
RegCloseKey(Handle1);
end;

Но почему то не работает, хотя абсолютно аналогичные фрагметы с моей проги работают. Как выяснилось ошибка именно в RegQueryValue, оно не считывает, ибо ключ не находит... странно. Может с веткой HKEY_LOCAL_MACHINE свои секреты, я только с HKEY_CLASSES_ROOT работал, сейчас переориентирую на мои задачи, пусть кое что по типам фалов считает
  Перейти в начало страницы  
#54 thexhs | 21 января 2009 18:13

Активный дример
  • 68

Репутация: 30
Группа: Посетители
Сообщений: 810
C нами с: 11.11.2008
Очки: 2006
AlexSlipknot19, вот этот РАБОТАЕТ:

procedure TForm1.Button1Click(Sender: TObject);
var
Handle1 : HKEY;
BufferPC1 : PAnsiChar;
BufferR1: array[0..1000] of char;
Size : Integer;
Str : PAnsiChar;
begin
BufferPC1 := BufferR1;
Size := sizeof(BufferR1);
Str := '._sln60';
if (RegOpenKey(HKEY_CLASSES_ROOT,nil,Handle1)=ERROR_SUCCESS) then
begin
if (RegQueryValue(Handle1, Str, BufferPC1, Size)=ERROR_SUCCESS) then
begin
Edit1.Text := StrPas(BufferPC1);
end;
end;
RegCloseKey(Handle1);
end;

читает описание типа файла с реестра ._sln60, тоесть с веткой HKEY_CLASSES_ROOT без проблем... странно
  Перейти в начало страницы  
#55 AlexSlipknot | 21 января 2009 18:49

Активный дример
  • 68

Репутация: 1809
Группа: Посетители
Сообщений: 902
C нами с: 29.10.2008
Очки: 7549
thexhs, спасибо. Буду пробовать, но немного позже.

--------------------
Slipknot Corp.

  Перейти в начало страницы  
#56 AlexSlipknot | 22 января 2009 18:13

Активный дример
  • 68

Репутация: 1809
Группа: Посетители
Сообщений: 902
C нами с: 29.10.2008
Очки: 7549
thexhs, все дело в том, что 'SOFTWAREMicrosoftWindows NTCurrentVersionRegisteredOwner'- это не ветка. Ветка - это'SOFTWAREMicrosoftWindows NTCurrentVersion' , а RegisteredOwner - лишь один из параметров ветки. А вот как его прочитать... В Registry то я знаю как, а вот АПИ...

--------------------
Slipknot Corp.

  Перейти в начало страницы  
#57 thexhs | 22 января 2009 18:27

Активный дример
  • 68

Репутация: 30
Группа: Посетители
Сообщений: 810
C нами с: 11.11.2008
Очки: 2006
AlexSlipknot19, я пробовал и как ветку, и оставить ветку одельно, а ключ в параметрах передать - не работает ни так ни так, а вот с HKEY_CLASSES_ROOT и всеми ключами/ветками внутри проблем нету... мне то для моей проги кроме HKCR ничего и не надо, но как с HKLM читать, х зна - что то не так делаю...
  Перейти в начало страницы  
#58 AlexSlipknot | 22 января 2009 18:35

Активный дример
  • 68

Репутация: 1809
Группа: Посетители
Сообщений: 902
C нами с: 29.10.2008
Очки: 7549
thexhs, попробуй так
begin
Size := sizeof(BufferR1);
Str := 'SOFTWARETestTesting';
if (RegOpenKey(HKEY_LOCAL_MACHINE,nil,Handle1)=ERROR_SUCCESS) then
begin
if (RegQueryValue(Handle1, PChar(Str), PChar(BufferPC1), Size)=ERROR_SUCCESS) then
begin
Edit1.Text := StrPas(BufferPC1);
end;
end;
begin
RegCloseKey(Handle1);
end;

--------------------
Slipknot Corp.

  Перейти в начало страницы  
#59 InquisiTOR | 22 января 2009 18:39

Только зашел
  • 0

Репутация: --
Группа: Гости
Сообщений: 0
C нами с: --
Очки:
thexhs, а вот так:
procedure TForm1.Button1Click(Sender: TObject);
var
Handle1 : HKEY;
BufferPC1 : PAnsiChar;
BufferR1: array[0..1000] of char;
Size : Integer;
Str : PAnsiChar;
begi
nBufferPC1 := BufferR1;
Size := sizeof(BufferR1);
Str := 'SOFTWAREMicrosoftWindowsNTCurrentVersion';
if (RegOpenKey(HKEY_LOCAL_MACHINE,'RegisteredOwner',Handle1)=ERROR_SUCCESS) the
nbegi
nif (RegQueryValue(Handle1, Str, BufferPC1, Size)=ERROR_SUCCESS) the
nbegi
nEdit1.Text := StrPas(BufferPC1);
end;
end;
RegCloseKey(Handle1);
end;

  Перейти в начало страницы  
#60 thexhs | 22 января 2009 18:46

Активный дример
  • 68

Репутация: 30
Группа: Посетители
Сообщений: 810
C нами с: 11.11.2008
Очки: 2006
InquisiTOR, тоже почему то не работал... я для отладки команду Beep использовал, на этапе открытия ключа все норм, а вот чтение значения - неработает в HKLM, но спокойно в HKCR...
  Перейти в начало страницы  
 
 
 
Ответить Быстрый ответ
 
 

  Сейчас: 23 мая 2024 08:02


Новое на форуме  
Топ в разделе за месяц  

.
Новости магазинов  
   
© DREAMPROGS 2004 - 2018.
Связь с администрацией. По вем вопросам. Не забудьте указать свой e-mail.
Сервер предоставлен компанией Host-UA: Украинский хостинг провайдер
    uaRating  
    MyCounter - Ваш счётчик