Delphi-programmeringsspråket ger ett snabbt sätt att skriva, kompilera, paketera och distribuera applikationer över plattformar. Även om Delphi skapar ett grafiskt användargränssnitt kan det vara tider du vill köra ett program från din Delphi-kod. Låt oss säga att du har en databasapplikation som använder ett externt verktyg för säkerhetskopiering. Säkerhetskopieringsverktyget tar parametrar från applikationen och arkiverar data, medan ditt program väntar tills säkerhetskopian är klar.
Du kanske vill öppna dokument som visas i en fillista genom att dubbelklicka på dem utan att öppna det tillhörande programmet först. Föreställ dig en länketikett i ditt program som tar användaren till din hemsida. Vad säger du om att skicka ett e-postmeddelande direkt från din Delphi-applikation via standardprogrammet för e-postklienten i Windows?
För att starta en applikation eller köra en fil i en Win32-miljö använder du ShellExecute Windows API-funktionen. Kolla in hjälp på ShellExecute för en fullständig beskrivning av parametrar och felkoder som returneras. Du kan öppna alla dokument utan att veta vilket program som är associerat med det-länken definieras i Windows-registret.
Här är några skalexempel.
använder ShellApi;
...
ShellExecute (Handtag, 'öppen',
'c: \ Windows \ notepad.exe', nil, nil, SW_SHOWNORMAL);
ShellExecute (handtag, 'öppna',
'C: \ windows \ notepad.exe',
'c: \ SomeText.txt', noll, SW_SHOWNORMAL);
ShellExecute (handtag, 'öppna',
'c: \ DelphiDownload', nil, nil, SW_SHOWNORMAL);
ShellExecute (Handtag, 'öppen',
'c: \ MyDocuments \ Letter.doc', nil, nil, SW_SHOWNORMAL);
Så här hittar du en applikation associerad med en anknytning.
ShellExecute (Handtag, 'öppen',
'http: //delphi.about.com', nil, nil, SW_SHOWNORMAL);
var em_subject, em_body, em_mail: string;
Börja
em_subject: = 'Detta är ämnesraden';
em_body: = 'Text på meddelandekroppen går hit';
em_mail: = 'mailto: [email protected]? subject =' +
em_subject + '& body =' + em_body;
ShellExecute (handtag, 'öppna',
PChar (e-post), noll, noll, SW_SHOWNORMAL);
slutet;
Så här skickar du ett e-postmeddelande med bilagan.
Följande exempel använder ShellExecuteEx API-funktionen.
// Kör Windows-kalkylatorn och pop-up
// ett meddelande när Calc avslutas.
använder ShellApi;
...
var
SEInfo: TShellExecuteInfo;
ExitCode: DWORD;
ExecuteFile, ParamString, StartInString: string;
Börja
ExecuteFile: = 'C: \ Windows \ calc.exe';
FillChar (SEInfo, SizeOf (SEInfo), 0);
SEInfo.cbSize: = SizeOf (TShellExecuteInfo);
med SEInfo börjar
fMask: = SEE_MASK_NOCLOSEPROCESS;
Wnd: = Application.Handle;
lpFile: = PChar (ExecuteFile);
ParamString kan innehålla
applikationsparametrar.
// lpParametrar: = PChar (ParamString);
StartInString anger
namnet på arbetskatalogen.
Om utelämnad används den aktuella katalogen.
// lpDirectory: = PChar (StartInString);
nShow: = SW_SHOWNORMAL;
slutet;
om ShellExecuteEx (@SEInfo) börjar
upprepa
Application.ProcessMessages;
GetExitCodeProcess (SEInfo.hProcess, ExitCode);
tills (ExitCode STILL_ACTIVE) eller
Application.Terminated;
ShowMessage ('Kalkylator avslutad');
slutet
annat ShowMessage ('Fel vid start av Calc!');
slutet;