Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Запуск из приложения внешних программ




Функции запуска являются функциями API Windows и находятся в модуле ShellAPI. Если функция возвращает значение меньшее или равное 32, то это указывает на ошибку при выполнении. Отсутствие аргумента при обращении к функции указывается константой Nil.

ShellExecute(W:HWnd,S1,S2,S3,S4;R):THandle ‑ позволяет выполнить лю­бое приложение Windows, распечатать файл или открыть папку:

W ‑ родительское окно запускаемого приложения (свойство Handle);

S1 ‑ строка с командой: Open (выполнение командной строки S2, если по расширению файла S2 Windows не может запустить программу обработки этого файла), Print (печать документа Word под именем S2), Explore (вывод проводником содержимого папки S2);

S2 ‑ имя открываемого (выполняемого) файла, распечатываемого докумен­та или выводимой папки;

S3 ‑ параметры приложения (для открываемого документа S3=Nil);

S4 ‑ имя умалчиваемого каталога;

R ‑ режим открытия, задаваемый константами: SW_Hide (окно скрыто): SW_Minimize (окно сворачивается), SW_Maximize (окно развертывается); SW_Restore (окно восстанавливается, активизируется и отображается); SW_Show или SW_ShowMaximized или SW_ShowMinimized (окно акти­ви­зи­руется и отображается с текущими размерами или в развернутом или в свернутом виде, соответственно), SW_ShowMinNoActivate (отображается в свернутом виде без активизации), SW_ShowNA (отображает окно с текущими размерами без активизации), SW_ShowNoActivate (отображает окно с его последними размерами без активизации), SW_ShowNormal (отображение окна в первоначальном виде).

Примеры:

ShellExecute(Handle,Nil,'D: \Vb.dot',Nil,Nil,SW_Restore); //запуск Word

ShellExecute(Handle,’Print’,'D:\Vb.dot',Nil,Nil,SW_Restore); //печать Vb.dot

ShellExecute(Handle,'Open','Calc',Nil,Nil,SW_Restore); //запуск калькулятора

ShellExecute(Handle,'Open','C:\Far\far.exe',Nil,Nil,SW_Show);//запуск Far.exe

ShellExecute(Handle,'Explore','D:\Plehev',Nil,Nil,SW_Restore); //папка Plehev

FindExecutable(S1,S2,S3):THandle ‑ функция формирует полное имя вы­пол­няемой программы (S3), которая обрабатывает файл (S1) из умал­чи­ваемого каталога S2.

Пример определения имени программы обработки файла Vb.dot:

Var Np:Array [0..254] Of Char;...

FindExecutable('D:\Plehev\Vb.dot',Nil,Np);//имя программы обработки в Np

//можно вызвать функцию и так: FindExecutable('Vb.dot','D:\Plehev',Np);

Label1.Caption:=Np;//вывод: c:\Program Files\Microsoft Office\Winword.exe

WinExec(S,R):Integer ‑ позволяет выполнить командную строку S. Второй параметр аналогичен последнему параметру R функции ShellExecute.

Пример: WinExec('C:\\Far\far.exe',SW_Show); //запуск Far.exe

Специальные процедуры и функции

Assert(E:Boolean[;S]) ‑ проверка истинности условия E при отладке прог­раммы. Если это условие ложно, то работа программы прекращается, генерируется исключение EAssertionFailed (п. 1.6.2) и выводится окно об ошибке с сообщением S, с именем программного файла и номером строки с этой процедурой. Процедура работает только при включенной директиве {$C+} (п.1.3.5.2). После отладки программы директива отключается{$C‑}.

Пример: Assert(Ukaz=Nil,’Нет значения адреса’);

ExceptAddr:Pointer ‑ возвращает адрес сгенерированного исключения. Ес­ли его нет, то возвращается Nil.

Halt[(N:Integer)] ‑ аварийное завершение программы с кодом N.

Hi/Lo (X):byte ‑ возвращает старший/младший байт аргумента X типов Integer, Word.

High/Low (X) ‑ возвращает наибольшее/наименьшее значение пере­мен­ной или типа X.

MaxIntValue/MinIntValue(D:Array Of Integer):Integer ‑ возвращает мак­си­маль­ное/минимальное значение массива целых чисел.

MaxValue/MinValue (D:Array Of Double):Double ‑ возвращает максималь­ное/минимальное значение массива вещественных чисел.

ParamCount ‑ возвращает число аргументов в командной строке.

ParamStr(N:Integer):String ‑ возвращает N‑й аргумент командной строки. При N=0 возвращается имя исполняемого файла с путем.

SizeOf(X) ‑ возвращает число байт, занимаемых аргументом или типом X.

Swap(X) ‑ производит перестановку старших и младших байт аргумента X типа Integer или Word.

UpCase(C:char):Chаr ‑ преобразует латинскую букву в прописную.

Сообщения Windows

PostMessage(Handle:HWnd;Msg,wParam:Word;lParam:LongInt):LongInt ‑ по­сылка сообщения Msg с дополнительными параметрами wParam и lParam окну с дескриптором Handle на обработку. Функция ставит сообще­ние в очередь на обработку сообщений Windows и возвращает управление, не дожидаясь завершения обработки сообщения. При успешном завер­ше­нии фукция возвращает ненулевое значение, иначе - возвращается ноль.

SendMessage(Handle:Hwnd;Msg, wParam:Word;lParam:LongInt):LongInt ‑ функция аналогична функции PostMessage, но ожидает завершения обработки сообщения (п.2.3.3.1).

Вопросы для самопроверки и контроля

Вопросы для самопроверки

1. Каково назначение функции ShellExecute?

2. Каково назначение функции InputBox?

Контрольные вопросы

2. Что возвращает функция ParamCount?

3. Каково назначение функции Application.MessageBox?

4. Каково назначение функции ParamStr?

Файлы

Типы файлов

При работе с файлами имеются три подхода: стандартный, ис­поль­зую­щий стандартные подпрограммы Паскаля (файлы Паскаля), объектный и использующий функции Windows (файлы Windows).

В первом подходе выделяются три типа файлов: типизированные, текстовые и не типизированные.

Общий порядок работы с файлами в любом подходе следующий: открытие файла, обработка и закрытие его.

При стандартном подходе перед открытием файла следует объявить файловую переменную (в описаниях процедур она обозначена буквой F), которая используется в процедурах обработки файла, для ссылки на обрабатываемый файл.

Файлы Паскаля

Любые файлы

Нижеперечисленные функции используются в стандартном подходе. AssignFile(F;S) ‑ связывание имени файла S с файловой переменной F.

CloseFile(F) ‑ закрытие открытого файла F.

Eof(F):Boolean ‑ возвращает True при достижении конца файла.

Erase(F) ‑ удаляет с диска файл F.

FilePos(F):longint ‑ возвращает текущую позицию в нетекстовом файле F. Началу файла соответствует позиция 0.

FileSize(F):Integer ‑ возвращает текущий размер нетекстового файла.

IOResult:Integer ‑ возвращает код ошибки в последней выполненной опе­ра­ции ввода/вывода: 0 ‑ ошибок нет, 2 ‑ нет файла, 3 - ошибка в имени фай­ла, 4 ‑ много открытых файлов, 5 ‑ файл недоступен, 100 ‑ конец файла, 101 ‑ диск переполнен, 106 ‑ ошибка ввода‑вывода. Используется при ди­рективе компилятора {$I‑} (п.1.3.5.2).

Пример контроля операции открытия файла с помощью IOResult:

Var F: File of Byte; Begin AssignFile(F, ParamStr(1));

{$I‑}{отключение автоконтроля}Reset(F);{$I+}{включение автоконтроля}

If IOResult>0 Then Begin ShowMessage(‘Ошибка открытия’);Exit; End;End.

Rename(F;S) ‑ изменяет имя внешнего файла F на S.

Reset(F[;N:Word]) ‑ открывает существующий файл. N ‑ длина записи не‑ типизированного файла (128).

ReWrite(F[;N:Word]) ‑ создает и открывает новый файл F. N ‑ длина записи не типизированного файла (128). Если файл уже существует, то он уничтожается без предупреждения.

Truncate(F) ‑ усекает нетекстовый файл F на текущей позиции.

Типизированные файлы

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...