Uruchamianie innych formatow jako plik wykonywalny (EXE)
mgx8
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
Łukasze, mylicie sie, tutaj chodzi zupełnie o co innego ;)
Rozwiązanie jest dobre.
a jeszcze prościej bedzie tak:
ShellExecute(0, 'open', SCIEZKADOPLIKUZDOWOLNYMROZSZERZENIEM,
,
, SW_SHOW);Ja tym uruchamialem pliki z rozszerzeniem .tmp :D
a po co? :D, tyle, że taką procedurą, nawet w menedżerze zadań, będzie pisało, że program ma rozszerzenie np. jpg :D
Można zrobić tak:
:)