purebasic.info

PureBasic forum
Текущее время: Вс июл 22, 2018 2:19 am

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




Начать новую тему Ответить на тему  [ Сообщений: 73 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Сб апр 02, 2011 2:19 pm 
Не в сети
док

Зарегистрирован: Чт мар 03, 2011 7:38 am
Сообщений: 108
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
kvitaliy писал(а):
Весь смысл кода в том, что-бы внести соответствующее изменение в реестр. Собственно это и без программирования можно провернуть в редакторе реестра, код только упрощает и ускоряет действие.

Вот-вот) Мне нужно было и услышать этот СМЫСЛ (изменение в реестр) для Вас наверно это элементарные вещи, но для меня нет

haav писал(а):
Морока-это когда плохо знаешь язык програмирования, на котором пишешь. Плюс к этому нет даже упоминания о твоей проблеме, и сколько не спрашивай в твоем топе писать будешь ты один. Правда есть бонус: 2-3 нерабочих примера в сети на другом языке программирования, о котором ты вообще никогда не слыхал.

Вы о чем??? :?:

Пётр писал(а):
В контекстное меню пункт можно добавить через реестр или DLL.
Какой вариант используется?

через реестр) но это не у меня используется, Вы меня не правильно поняли. Я просто хотел разобрать код программки который выложил kvitaliy, и я чтоб было для меня больше понятней привел свой пример с более меньшей задачей, просто допустим:
Как программно через реестр добавить в конектсное меню Винды свой MenuItem, которая хотя бы запустила просто "Диспетчер задач"? А если посложней, то передала моей программе какуюнибудь информацию???


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс апр 03, 2011 8:42 pm 
Не в сети
профессор

Зарегистрирован: Ср янв 14, 2009 4:12 pm
Сообщений: 2002
Благодарил (а): 12 раз.
Поблагодарили: 101 раз.
Пункты репутации: 43
Bill Kaulitz писал(а):
Как программно через реестр добавить в конектсное меню Винды свой MenuItem

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    ;*****************   Создаем в контекстном меню ПАПКИ, пункт "Реестр" ************************ 
If Not  RegKeyExists("HKEY_CLASSES_ROOT\Directory\shell\Реестр\command", ".")
  RegCreateKey("HKEY_CLASSES_ROOT\Directory\shell\Реестр\command", ".")
EndIf
RegCreateKeyValue("HKEY_CLASSES_ROOT\Directory\shell\Реестр\command", "", "regedit", #REG_SZ, ".")
 
    ;*****************   Создаем в контекстном меню ФАЙЛА, пункт "Открыть блокнотом" ************************
   
If Not  RegKeyExists("HKEY_CLASSES_ROOT\*\Shell\NOTEPAD.EXE\command", ".")
  RegCreateKey("HKEY_CLASSES_ROOT\*\Shell\NOTEPAD.EXE\command", ".")
EndIf
  RegCreateKeyValue("HKEY_CLASSES_ROOT\*\Shell\NOTEPAD.EXE", "", "Открыть блокнотом", #REG_SZ, ".")
  RegCreateKeyValue("HKEY_CLASSES_ROOT\*\Shell\NOTEPAD.EXE\Command", "", "NOTEPAD.EXE %1", #REG_SZ, ".")
 
    ; ******************  Добавление командной строки (cmd) для контекстного меню ПАПКИ   *************************
   
If Not  RegKeyExists("HKEY_CLASSES_ROOT\Folder\shell\Command Prompt\Command", ".")
  RegCreateKey("HKEY_CLASSES_ROOT\Folder\shell\Command Prompt\Command", ".")
EndIf
  RegCreateKeyValue("HKEY_CLASSES_ROOT\Folder\shell\Command Prompt", "", "Open cmd", #REG_SZ, ".")
  RegCreateKeyValue("HKEY_CLASSES_ROOT\Folder\shell\Command Prompt\Command", "", "Cmd.exe /k pushd %L", #REG_SZ, ".")
 


Нужна библиотека droopy

_________________
Всё должно быть просто, настолько просто, насколько возможно, но не проще. (c) Альберт Эйнштейн
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн апр 04, 2011 9:56 am 
Не в сети
док

Зарегистрирован: Чт мар 03, 2011 7:38 am
Сообщений: 108
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
Код:
1
RegCreateKey("HKEY_CLASSES_ROOT\Directory\shell\Реестр\command", ".")


Вот этот код работает.

:idea: Но если я пытаюсь создать КЛЮЧ(раздел) в директории "HKEY_LOCAL_MACHINE", то он у меня не отображается в реестре и что странно если я проверяю созданный КЛЮЧ программно при помощи команды RegKeyExists(), то резултат проверки говорит что такой КЛЮЧ есть, хотя в реестре его не видно.
:idea: И еще странней, это то что, когда я вручную создаю КЛЮЧ в реестре и программно вывожу список ключей директории командой RegListSubKey(), то мои вручную созданные ключи в список не входят. Их словно нет.

Это все выглядело бы как будто есть ДВА РЕЕСТРА, если бы не то что в других директориях, например в "HKEY_CLASSES_ROOT" все нормально работает и ключи создаются.

:idea: В чем загвоздка? :idea:

Установлено:
Windows 7 x64
PureBasic 4.51 (Windows - x86)
с библиотекой Droopy_86


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн апр 04, 2011 12:48 pm 
Не в сети
профессор

Зарегистрирован: Ср янв 14, 2009 4:12 pm
Сообщений: 2002
Благодарил (а): 12 раз.
Поблагодарили: 101 раз.
Пункты репутации: 43
Bill Kaulitz писал(а):
хотя в реестре его не видно

Может реестр обновить надо, F5 нажми

_________________
Всё должно быть просто, настолько просто, насколько возможно, но не проще. (c) Альберт Эйнштейн
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн апр 04, 2011 2:38 pm 
Не в сети
док

Зарегистрирован: Чт мар 03, 2011 7:38 am
Сообщений: 108
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
pablov писал(а):
Может реестр обновить надо, F5 нажми

Конечно же я обновил.)
Можно было бы догадатся что не в этом проблема из этого пункта
Bill Kaulitz писал(а):
:idea: И еще странней, это то что, когда я вручную создаю КЛЮЧ в реестре и программно вывожу список ключей директории командой RegListSubKey(), то мои вручную созданные ключи в список не входят. Их словно нет.


Что же делать :?:


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн апр 04, 2011 6:22 pm 
Не в сети
профессор

Зарегистрирован: Ср янв 14, 2009 4:12 pm
Сообщений: 2002
Благодарил (а): 12 раз.
Поблагодарили: 101 раз.
Пункты репутации: 43
Проверил дома на win7 x32
Код:
1
2
3
4
RegCreateKey("HKEY_LOCAL_MACHINE\SOFTWARE\Test",".")  
RegCreateKey("HKEY_CURRENT_USER\Software\Test",".")
RegCreateKey("HKEY_USERS\.DEFAULT\Control Panel\Test",".")
RegCreateKey("HKEY_CURRENT_CONFIG\Test",".")


Все работает, разделы создаются и отображаются
Может у тебя Droopy кривит?
Попробуй API функцией создай раздел
RegCreateKey_(#HKEY_LOCAL_MACHINE, "SOFTWARE\Test", @hResult)
И запиши в него
RegSetValueEx_(hResult, "Key", 0, #REG_SZ, "Test", Len("Test"))

_________________
Всё должно быть просто, настолько просто, насколько возможно, но не проще. (c) Альберт Эйнштейн
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн апр 04, 2011 8:08 pm 
Не в сети
док

Зарегистрирован: Чт мар 03, 2011 7:38 am
Сообщений: 108
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
Дело в битности :(
Попробовал скомпилировать в Пюре х64, все заработало, и команды Друпи и команды ВинАпи.

Как-то странно что именно директория HKEY_LOCAL_MACHINE находится в какой то зависимости от разрядности системы :( В остальных директориях я могу что угодно делать вне зависимости от разрядности.*

Может быть это можно как то обойти это? Хочу сделать универсальный вариант на 32 и 64 :?:
_____________________________________________________________
* - У меня есть мнение, что существуют две директории HKEY_LOCAL_MACHINE - одна для 32, другая для 64, это объяснило бы то, что как я писал выше, программмно я создавал КЛЮЧ и программно этот КЛЮЧ находил, но в реестре я его не видел. Видимо существует еще директория, куда и записывались ключи реестра 32х разрядной проги)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн апр 04, 2011 8:21 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11206
Благодарил (а): 4 раз.
Поблагодарили: 421 раз.
Bill Kaulitz писал(а):
Хочу сделать универсальный вариант на 32 и 64

Сделай отдельный модуль для x64, который будет писать в реестр.
Если система 64 бита, то пиши через этот модуль.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн апр 04, 2011 8:22 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6327
Благодарил (а): 19 раз.
Поблагодарили: 189 раз.
Пункты репутации: 48
Bill Kaulitz писал(а):
программмно я создавал КЛЮЧ и программно этот КЛЮЧ находил, но в реестре я его не видел

А что на него смотреть то? Он работает главное или нет? Если работает, то не вижу повода парится из за его невидимости. Пусть парятся тот, кто пишет редактор реестра.

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт апр 05, 2011 12:58 pm 
Не в сети
док

Зарегистрирован: Чт мар 03, 2011 7:38 am
Сообщений: 108
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
kvitaliy писал(а):
А что на него смотреть то? Он работает главное или нет? Если работает, то не вижу повода парится из за его невидимости. Пусть парятся тот, кто пишет редактор реестра.

Не работает :(


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

Зарегистрирован: Чт мар 03, 2011 7:38 am
Сообщений: 108
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
Подскажите как можно сделать типо функции у Винды "Расположение файла"?
Чтобы указанный путь открывался в Эксплорере с выделенным нужным файлом???


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт апр 05, 2011 5:21 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11206
Благодарил (а): 4 раз.
Поблагодарили: 421 раз.
Bill Kaulitz писал(а):
типо функции у Винды "Расположение файла"
В ХРюше такого нет.
Bill Kaulitz писал(а):
Чтобы указанный путь открывался в Эксплорере с выделенным нужным файлом
Открывай папку, содержащую файл.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт апр 05, 2011 5:26 pm 
Не в сети
док

Зарегистрирован: Чт мар 03, 2011 7:38 am
Сообщений: 108
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
Спасибо Пётр

А как можно узнать расположение программы, то есть путь к моей программе. (Как программе узнать где она находится?)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт апр 05, 2011 5:37 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11206
Благодарил (а): 4 раз.
Поблагодарили: 421 раз.
Bill Kaulitz писал(а):
путь к моей программе

Код:
1
Debug ProgramFilename()


_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт апр 05, 2011 5:43 pm 
Не в сети
док

Зарегистрирован: Чт мар 03, 2011 7:38 am
Сообщений: 108
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
Круто)

Пётр писал(а):
Открывай папку, содержащую файл.

Как?


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 73 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

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


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

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


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

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