Архив исходников программ, модулей и компонентов на Delphi


Начальная страница

Поиск по базе



Операционная система
Настройка приложения
Взаимодействия приложений
Файлы и директории
Строки и символы
Математика
Базы данных
Интернет и сеть
Мультимедиа
Аппаратная часть
VCL
Другие разделы [0]
 

Количество записей в базе - 537
Сегодня добавлено – 0

Управление приложением



Вернуться к списку функций
 Запуск программ из консольного приложения

 Прислал: Сергеев Юрий (Набережные Челны) ( 29 августа 2004 г. )
©  Registr
 Описание:
Вообщем-то идея не нова, видел я множество программ запускающие
из себя другие приложения, но все они весят около полутонны. Всё это
от того, что подключаються модули Form.pas, SysUtils.pas и прочие
астероиды. Программа использует только Windows.pas и ShellAPI.pas,
которые весят немного и часто используются для работы с файлами. Из
модуля SysUtils.pas взяты только необходимые две функции для
преобразования типа данных. В результате приложение весит всего 14
кило, что вполне приемлемо для консольного приложения. Внешний
файл запускается с помощью системного интерпретатора командной
строки, путь к которому содержиться в переменной окружения
ComSpec. Работает в любой версии Windows.

 Зависимости:
Windows, ShellAPI

 Ограничения:
Delphi 7 (в дргих не проверял), Windows - без ограничений

 Исходный текст:
{ **** UBPFD *********** by http://kladovka.net.ru/delphibase/ ****
>> Запуск программ из консольного приложения

Вообщем-то идея не нова, видел я множество программ запускающие
из себя другие приложения, но все они весят около полутонны. Всё это
от того, что подключаються модули Form.pas, SysUtils.pas и прочие
астероиды. Программа использует только Windows.pas и ShellAPI.pas,
которые весят немного и часто используются для работы с файлами. Из
модуля SysUtils.pas взяты только необходимые две функции для
преобразования типа данных. В результате приложение весит всего 14
кило, что вполне приемлемо для консольного приложения. Внешний
файл запускается с помощью системного интерпретатора командной
строки, путь к которому содержиться в переменной окружения
ComSpec. Работает в любой версии Windows.

Зависимости: Windows, ShellAPI
Автор:       Сергеев Юрий, root@rintecs.chelny.ru, Набережные Челны
Copyright:   Registr
Дата:        29 августа 2004 г.
***************************************************************** }

program RunFile;

uses Windows,ShellAPI;

//Первая функция из SysUtils необходимая для преобразования типа данных
function StrLCopy(Dest: PChar; const Source: PChar; MaxLen: Cardinal): PChar; assembler;
asm
        PUSH EDI
        PUSH ESI
        PUSH EBX
        MOV ESI,EAX
        MOV EDI,EDX
        MOV EBX,ECX
        XOR AL,AL
        TEST ECX,ECX
        JZ @@1
        REPNE SCASB
        JNE @@1
        INC ECX
@@1: SUB EBX,ECX
        MOV EDI,ESI
        MOV ESI,EDX
        MOV EDX,EDI
        MOV ECX,EBX
        SHR ECX,2
        REP MOVSD
        MOV ECX,EBX
        AND ECX,3
        REP MOVSB
        STOSB
        MOV EAX,EDX
        POP EBX
        POP ESI
        POP EDI
end;

//Вторая функция из SysUtils необходимая для преобразования типа данных
function StrPCopy(Dest: PChar; const Source: string): PChar;
begin
  Result := StrLCopy(Dest, PChar(Source), Length(Source));
end;

//В константу FileName получаем полный путь к запускаемому файлу
Function RunExtFile(const FileName: String): boolean;
var
szFile: array[0..MAX_PATH] of Char;
szCmd : String;
begin

//Передаём данные из константы FileName типа String в массив szFile типа Char
    StrPCopy(szFile,FileName);
  begin
//Запускаем интерпретатор командной строки и получаем ценность переменной
//окружения ComSpec
      szCmd:= '/c call ' + '"'+szFile+'"' + ' >> NUL';
     if (GetEnvironmentVariable('ComSpec',szFile, MAX_PATH) <> 0) and
        (ShellExecute(0,Nil,szFile,PChar(szCmd),Nil,SW_HIDE) > 32) Then
          begin
             Result:= True;
             Exit;
          end;
  end;
     Result:= False;
end;

 Пример использования:
begin
   RunExtFile('C:\Windows\Dialer.exe');
   Halt;
end.


Вернуться к списку функций

Наверх ▲    

http://sportcity74.ru/ большие надувные мячи большие надувные.