HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Вопрос по экзешнику. (https://hlfx.ru/forum/showthread.php?threadid=1071)
Отправлено Ku2zoff 23-12-2007 в 16:33:
Вопрос по экзешнику.
Итак, у меня вопрос к кодерам и программистам: как написать небольшую прогу, которая с использованием графического интерфейса позволяет редактировать текстовики и ключи реестра. Например, запускаешь эту прогу, там строка, а напротив неё контекстное меню с возможностью выбора параметров, как лаунчер hlfx single. Если не трудно и не жалко, поделитесь кодом(только чтобы и реестр можно было править).
Заранее благодарю.
Отправлено Тренсфер 23-12-2007 в 16:43:
Да без проблем
Советую использовать Borland C++Builder, а то в студии там мучатся с ресурсами прийдётся. Билдер легче ,да и другой язык уить не прийдётся.
Там (ИМХО) один из самых продивинутых конструкторов форм. (если я не ошибаясь лаунчер фх сингла написан на Borland delphy, хотя возможно и ошибаюсь
)
Реестр?
C++ Source Code:
3 | TRegistry *reg = new TRegistry(KEY_ALL_ACCESS); |
6 | // выбираем нужный корень |
7 | reg->RootKey = HKEY_LOCAL_MACHINE; |
10 | reg->OpenKey("Software\\Sources.RU\\", true); |
13 | reg->DeleteValue("some_key"); |
15 | // записываем значения |
16 | reg->WriteString("name","my_text"); |
18 | // проверяем наличие ключа "vot" |
19 | if (KeyExists("vot")==false) |
22 | ShowMessage("А куда vot'а дели?"); |
А работу с текстовиками можно как и стандартную c++, как и билдеровскую если надо муго описать в кратце.
Добавлено 23-12-2007 в 19:43:
Однако учти: работает только в билдере 
Или так
C++ Source Code:
2 | TRegistry *Registry=new TRegistry; |
5 | Registry->RootKey=HKEY_CURRENT_USER; // Ветвь реестра |
6 | Registry->OpenKey("ant47\\Test",true); // Создать новую ветвь в реестре |
7 | Registry->WriteString("DATA","15 мая"); // Создание строкового раздела |
Вообщем всё на принципе класса TRegistry крутися
__________________
Хотелось бы, чтобы не только хотелось...
Отправлено Ku2zoff 23-12-2007 в 16:47:
Тренсфер чуть-чуть поподробнее плз. (и про текстовики, только чтоб формат можно было самому задавать, например .res или .cfg) А мне теперь придётся ставить С++ Буилдер, который у мну уже 2 года валяется на полке(много чего я перепробовал, до того как нашёл бузеровский компилятор)
Отправлено Тренсфер 23-12-2007 в 17:13:
Скачай на http://www.sources.ru/ "Borland C++ Builder FAQ"
Там много всяких полезностей в том числе работа и с бинарными файлами(представляешь какие возможнрости открываются
).
Добавлено 23-12-2007 в 20:13:
С кфг файлами просто работаем также как и с текстовыми. Вот пример создания файл сейва из книги про создание пасьянса на с++
C++ Source Code:
1 | AnsiString myfile="с:\\game.sol"; //есть в билдере такой тип данных как строки -очень удобно. |
2 | //мы можем создать с любым доступным разрешением ! |
4 | iFile=FileCreate(myfile); |
5 | Дальше проверяем создался ли файл и работаем с ним как с обычным текстовым, но нет смысла это описывать. |
Но вот если ты хочешь использовать уже Готовые .res (сделаные например в студии) то как текстовый открыть их не получится (точнее получится но ты ивудишь тоже самое что открыв его блокнотом). Если ты просто хочешь использовать файлы с этим расширением как текстовые -то пожалуйста.
Что бы понять принцип работы с окнами в билдере можно почитать например это: http://www.infiltration.ru/p/base.htm__________________
Хотелось бы, чтобы не только хотелось...
Отправлено Дядя Миша 25-12-2007 в 20:58:
code:
bool REG_GetValue( HKEY hKey, const char *SubKey, const char *Value, char *pBuffer)
{
dword dwBufLen = 4096;
long lRet;
if(lRet = RegOpenKeyEx( hKey, SubKey, 0, KEY_READ, &hKey) != ERROR_SUCCESS )
return false;
else
{
lRet = RegQueryValueEx( hKey, Value, NULL, NULL, (byte *)pBuffer, &dwBufLen);
if(lRet != ERROR_SUCCESS) return false;
RegCloseKey( hKey );
}
return true;
}
bool REG_SetValue( HKEY hKey, const char *SubKey, const char *Value, char *pBuffer )
{
dword dwBufLen = 4096;
long lRet;
if(lRet = RegOpenKeyEx(hKey, SubKey, 0, KEY_WRITE, &hKey) != ERROR_SUCCESS)
return false;
else
{
lRet = RegSetValueEx(hKey, Value, 0, REG_SZ, (byte *)pBuffer, dwBufLen );
if(lRet != ERROR_SUCCESS) return false;
RegCloseKey(hKey);
}
return true;
}
работа с реестром
Отправлено Government-Man 26-12-2007 в 14:52:
Люди! Не юзайте этот аццкий билдер! 
Отправлено Ku2zoff 27-12-2007 в 02:46:
>>Люди! Не юзайте этот аццкий билдер!
Да, мне как-то сподручней коды для студии.
Что так никто и не даст образец кода для работы с файлами? Ну типа как в лаунчере ХЛФХ Сингл?
Отправлено FiEctro 27-12-2007 в 09:36:
Ku2zoff А что там сложного ? Просто экзешник запускает ХЛ.ЕхЕ с опр параметрами , которые ты выбираешь через данный интерфейс
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Отправлено Дядя Миша 27-12-2007 в 16:02:
Ku2zoff в чем твоя проблема, хоть убей не пойму?
как окошки создавать чтоли?
Отправлено MSteam 28-12-2007 в 01:41:
А как передать параметры, которые были даны ланчеру, самой hl.ехе, которую мы через него запустим?
И еще: а можно hl.ехе включить внутрь ланчера?
Код для билдера тож сойдёт. В гугл что не найду, у меня работать отказываеться...
Добавлено 28-12-2007 в 03:41:
Тренсфер , твой код работает, спасибо=)
Отправлено Тренсфер 29-12-2007 в 14:15:
Я душу билдеру не продовал
Если честно у меня стоит всё и билдер и студия и визуал студия 2003 и визуал бейсик и дельфи... Всё это что бы не было программерского косоглазия т.е. что бы не было привыкания к конкретной среде разработки. Юзаю взависимости от назначения прилоения, от времени и.т.д. Бывают ситуации когда надо на студии тщательно отделать, а бывают что на станартное прописание окон времени да и надобности нет.
MSteam офицально нельзя, не офицально можно
Прийдётся машинный код редактировать (или даже отладчиком) и вписывать своё, как это делают многие вирусы. Но тут куча подводных камней: если попытаться добавить готовый код в начало -прийдётся пересчитывать все смещения в остальных, на этот могут уйти годы. Можно попытаться добавить этот код в конце а из начала сделать вызов или прыжок на него. Незнаю как тут насчёт авторских прав вальв, но это точно будет считаться взломом hl.ехе.
Цитата:
MSteam писал:
а можно hl.ехе включить внутрь ланчера?
одинаково сложно как и добавить код в сам hl.ехе так и добавить код из hl.ехе. Это по проведению будет одним и тем-же.
Цитата:
MSteam писал:
А как передать параметры, которые были даны ланчеру, самой hl.ехе, которую мы через него запустим?
Считать их в лаунчере и передать в функции запуска CreateProcess, но зачем ?__________________
Хотелось бы, чтобы не только хотелось...
Отправлено Дядя Миша 29-12-2007 в 14:41:
Цитата:
Всё это что бы не было программерского косоглазия
Чтоб не было косоглазия код надо в блокноте писать
Отправлено MSteam 30-12-2007 в 01:59:
Тренсфер, а кода для считывания и передавания нет?
Да мне как то все равно насчет прав, мне главное интересно - как его вызвать после добавления в конец моего ланчера?
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024