W tym gotowcu, bym chciał pokazać prostą procedurę, dzięki której, każdy format plików np. bin, można uruchomić jako plik wykonywalny (EXE)





Do wykonania takiego wystarczy, tylko znajomość rejestru Windows, oraz obsługa rejestru w Delphi no i oczywiście, trzeba jeszcze umieć uruchamiać program w Delphi ;)

Najpierw, do sekcji Uses, trzeba dopisać Registry;

uses Registry;


Skoro jest to gotowiec, więc podaję Procedurę, na uruchomienie pliku wykonywalnego, który może mieć, nawet rozszerzenie JPEG.

 
Procedure OpenApplication(Filename : String);
 


W parametrze, trzeba podać tylko ścieżkę do programu.

A to cała procedura

 
Procedure OpenApplication(Filename : String);
var
  Reg: TRegistry; // Zmienna rejestru
  OldValue: String; // Zmienna w której będziemy przechowywać starą metodę, otwierania danego pliku
begin
  Reg:= TRegistry.Create; // Stworzenie zmiennej
  Reg.RootKey := HKEY_CLASSES_ROOT; // Otwieranie gałęzi
  Reg.OpenKey(ExtractFileExt(Filename), True); // Otwieranie klucza, z rozszerzeniem uruchamianego programu
  OldValue:=Reg.ReadString(''); // Odczytywanie metody otwierania tego pliku
  Reg.WriteString('', 'exefile'); // Zapisywanie metody, uruchamiania plików EXE
  CreateProcess(nil, pchar(Filename), nil, nil, False, 0, nil, nil, StartupInfo, ProcessInfo); // Tworzenie procesu
  ProcessHandle := OpenProcess(PROCESS_ALL_ACCESS, False, PID); // Otwieranie procesu
  SetPriorityClass(ProcessInfo.hProcess, NORMAL_PRIORITY_CLASS); // Ustalenie priorytetu
  TerminateProcess(ProcessHandle,0); // Zakończenie, procesu uruchamiania
  CloseHandle(ProcessHandle); // Zamykanie uchwytu
  Reg.WriteString('', OldValue); // Przywrócenie, starej metody, uruchamiania pliku
  Reg.Free; // Zwolnienie z pamięć
end;
 


No i to wszystko, to pierwszy mój artykuł na 4p, myślę, że nie ostatni. Pozdrawiam, mgx8

Kategoria: Delphi » Gotowce

4 komentarze

Avatar: jakubkrol
Napisany 2010-10-03 11:34 przez jakubkrol

Łukasze, mylicie sie, tutaj chodzi zupełnie o co innego ;)
Rozwiązanie jest dobre.

Brak avatara
Napisany 2008-09-29 12:46 przez lukaszguzik

a jeszcze prościej bedzie tak:
ShellExecute(0, 'open', SCIEZKADOPLIKUZDOWOLNYMROZSZERZENIEM, '', '', SW_SHOW);
Ja tym uruchamialem pliki z rozszerzeniem .tmp :D

Brak avatara
Napisany 2008-06-07 12:14 przez mgx8

a po co? :D, tyle, że taką procedurą, nawet w menedżerze zadań, będzie pisało, że program ma rozszerzenie np. jpg :D

Avatar: lukasz1235
Napisany 2008-06-05 12:31 przez lukasz1235

Można zrobić tak:
1) Do zmiennej wczytać nazwę pliku.
2) Zamienić rozszerzenie na exe
3) Uruchomić plik (normalnie - ShellExecute)
4) Przywrócić nazwę pliku
:)

4programmers.net