Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2008, 19:22   #1
Volkogriz
Форумчанин
 
Аватар для Volkogriz
 
Регистрация: 11.10.2007
Сообщений: 384
Вопрос Поиск

Доброе время суток!
помогите плиз!
Дело в том что, Программа должна устанавливать дополнительные модули игры!
Но эта игра не устанавливается стандартным способом а просто идёт в архиве и каждый распаковав суёт её куда захочет!
в общем постоянного место жительства папки нет!
Возможно ли такое при запуски программы начинался поиск папки на диске после поиска когда папка найдена начиналось копирование файлов в эту папку с игрой но только если папка нашлась а ни создавать её!?
И ещё игра не регистрируется в реестре!
Не количеством плюсов измеряется репутация человека...!
Volkogriz вне форума Ответить с цитированием
Старый 20.04.2008, 09:15   #2
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Сделать это возможно. Только нужно ли? Не легче просто дать пользователю выбрать куда устанавливать дополнительные модули игры?
FaTaL вне форума Ответить с цитированием
Старый 20.04.2008, 12:44   #3
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

Цитата:
И ещё игра не регистрируется в реестре!
А почему бы не создать ключ с адресом той папки (при запуске проги-игры)
А та что устанавливает модули просто считет этот ключ и всё.

вариант 2

Если не хотите использовать реестр, то программно определите папку Windows и создайте там txt файл, содержимое - путь к папке.
А та что устанавливает модули просто найдёт файл и считает адрес из файла.
Всё гениальное - просто!
Air вне форума Ответить с цитированием
Старый 20.04.2008, 15:59   #4
Volkogriz
Форумчанин
 
Аватар для Volkogriz
 
Регистрация: 11.10.2007
Сообщений: 384
По умолчанию

Всем доброго времени суток!
Я сейчас вам попытаюсь объяснить суть проблемы!
Это сетевая игра Lineage II многие с ней знакомы наверняка!
Суть проблемы такая!
Я пробовал писать обновления в InnoSetup я её более или менее знаю!
Но люди играют в эту игру разного возраста и начиная от 30 лет мне пишут что ани немогут установить обновления так как каму племянник
каму сын установил игру и ани незнают где находиться папка с игрой а запускают саму игру с ярлычка!
Я уже пытался описывать поиск с ярлычка но люди среднего возраста у которых интересы другие всё равно не понимают!
Вот мне и пришла в голову идея написать программку которая будит искать папку с игрой находить в ней для сравнения указанные файлы и только после того как она убедилась что эта именно та папка устанавливать дополнительные или исправленные компоненты игры!
Мне кажется это не так сложно осуществить!
Но у меня не фига не выходит и я решил оборотиться к вам за помощью!
помогите пожалуйста и если нетрудно маленький примерчик который будит манипулировать с одним фай-ликам чтоб мне разобраться!
Заранее благодарен!
С уважением Volkogriz!
Не количеством плюсов измеряется репутация человека...!
Volkogriz вне форума Ответить с цитированием
Старый 20.04.2008, 17:32   #5
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

Хм...
Вы программируете на Delphi? думаю да, раз уж написали сюда.

Я так понимаю, у Вас есть копия игры и её просто даёте тому кто попросит.
Так вот, напишите что-то вроде инсталлера.

Задачи инсталлера:
1 - Спросить у пользователя куда он хочет установить игру.
после того как укажет путь...
2 - создать ключ в реестре с этим путём.
3 - скопировать игру в папку, указанную пользователем.
4 - (и всякая переферия) создать ярлык на рабочем столе, запустить игру и т.д. ...
И соответственно в проге обновления ссылаться на тот ключ.
Мне кажется это рациональный выход из сложившийся ситуации.

P.S. а тому кому даёте игру, скажите что запускать "Старт.ехе" (или в ReadMe.txt написать)
Всё гениальное - просто!
Air вне форума Ответить с цитированием
Старый 22.04.2008, 10:59   #6
Volkogriz
Форумчанин
 
Аватар для Volkogriz
 
Регистрация: 11.10.2007
Сообщений: 384
По умолчанию

Спасибо всем огромное!
Я ришил проблему так!
Если каму интересно!
Пользователь запускает программу => потом запускает игру => программа находит путь к игре, например, по имени процесса => после этого "убивает" процесс и выполняет необходимые действия. Чтобы не повторять все эти действия каждый раз, сохраняем полученный путь в файле/реестре.!
Вот код:
Код:
uses
  PsAPI;

function IsRunning(const ProcessName: string; var ProcessPath: string): Boolean;
var
  Processes: array[0..1023] of DWORD;
  cbNeeded, cbProcesses, hProcess, hMod: DWORD;
  ProcessFileName: array [0..MAX_PATH - 1] of Char;
  i: Integer;
begin
  Result := False;
  if not EnumProcesses(@Processes, SizeOf(Processes), cbNeeded) then
    Exit;
  cbProcesses := cbNeeded div SizeOf(cbProcesses);
  for i := 0 to cbProcesses - 1 do
  begin
    hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, False, Processes[i]);
    if hProcess <> 0 then
    begin
      if EnumProcessModules(hProcess, @hMod, SizeOf(hMod), cbNeeded) then
        GetModuleFileNameEx(hProcess, hMod, ProcessFileName, SizeOf(ProcessFileName));
      CloseHandle(hProcess);
      if AnsiSameText(ExtractFileName(ProcessFileName), ProcessName) then
      begin
        ProcessPath := ExtractFilePath(ProcessFileName);
        Result := True;
        Break;
      end;
    end;
  end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  Path : string;
begin
  if IsRunning('notepad.exe', Path) then
  begin
    Self.Caption := Path;
    Timer1.Enabled := False;
  end;
end;
Кто столкноться с такой праблемой думаю паможит!
С уважением Volkogriz!
Не количеством плюсов измеряется репутация человека...!
Volkogriz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск в бд KAKTYC SQL, базы данных 3 25.07.2008 13:21
поиск Азамат Microsoft Office Excel 7 18.06.2008 13:44
ПОИСК В БД HOMER БД в Delphi 2 20.12.2007 21:41
Поиск по FTP Averss PHP 4 04.09.2007 20:37
Поиск Andr Microsoft Office Excel 2 18.07.2007 11:49