HLFX.Ru Forum
Показать все 13 сообщений этой темы на одной странице

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:

Talking Вопрос по экзешнику.

Итак, у меня вопрос к кодерам и программистам: как написать небольшую прогу, которая с использованием графического интерфейса позволяет редактировать текстовики и ключи реестра. Например, запускаешь эту прогу, там строка, а напротив неё контекстное меню с возможностью выбора параметров, как лаунчер hlfx single. Если не трудно и не жалко, поделитесь кодом(только чтобы и реестр можно было править).

Заранее благодарю.


Отправлено Тренсфер 23-12-2007 в 16:43:

Да без проблем Советую использовать Borland C++Builder, а то в студии там мучатся с ресурсами прийдётся. Билдер легче ,да и другой язык уить не прийдётся.
Там (ИМХО) один из самых продивинутых конструкторов форм. (если я не ошибаясь лаунчер фх сингла написан на Borland delphy, хотя возможно и ошибаюсь )
Реестр?

C++ Source Code:
1
#include <registry.hpp>
2
...
3
TRegistry *reg = new TRegistry(KEY_ALL_ACCESS);
4
if (reg) // если всё ОК
5
{
6
  // выбираем нужный корень
7
  reg->RootKey = HKEY_LOCAL_MACHINE;
8
 
9
  // открываем секцию
10
  reg->OpenKey("Software\\Sources.RU\\", true);
11
 
12
  // удаляем ключ
13
  reg->DeleteValue("some_key");
14
 
15
  // записываем значения
16
  reg->WriteString("name","my_text");
17
 
18
  // проверяем наличие ключа "vot"
19
  if (KeyExists("vot")==false)
20
  {
21
    // ругаемся
22
    ShowMessage("А куда vot'а дели?");
23
  }
24
 
25
  // закрываем секцию
26
  reg->CloseKey();
27
}
28
 
29
delete reg;
30
 

А работу с текстовиками можно как и стандартную c++, как и билдеровскую если надо муго описать в кратце.

Добавлено 23-12-2007 в 19:43:

Однако учти: работает только в билдере
Или так
C++ Source Code:
1
#include <Registry.hpp>
2
TRegistry *Registry=new TRegistry;
3
try
4
{
5
  Registry->RootKey=HKEY_CURRENT_USER; // Ветвь реестра
6
  Registry->OpenKey("ant47\\Test",true); // Создать новую ветвь в реестре
7
  Registry->WriteString("DATA","15 мая"); // Создание строкового раздела
8
}
9
__finally
10
{
11
  delete Registry;
12
}

Вообщем всё на принципе класса 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
//мы можем создать с любым доступным разрешением !
3
int iFile;
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:

Тренсфер, а кода для считывания и передавания нет?

Да мне как то все равно насчет прав, мне главное интересно - как его вызвать после добавления в конец моего ланчера?


Временная зона GMT. Текущее время 23:26.
Показать все 13 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024