zoukankan      html  css  js  c++  java
  • Executing and Running Applications and Files from Delphi Code

    How many times have you wanted to execute some program from your Delphi application?

    Let's say we have a database application that uses some external backup utility. The back up utility takes parameters from your application, archives data, while your program waits until backup finishes.

    On the other hand, have you ever needed to open documents presented in a file listbox, just by double clicking on them, without opening the associated program first?

    Finally, imagine a link-labelin your program that will take the user to your home page (by executing the Internet Explorer). Moreover, what do you say about sending an e-mail directly from your Delphi application through default Windows e-mail client program (like MS Outlook Express).

    ShellExecute

    To launch an application or execute a file in Win32 environment we will use the ShellExecute Windows API function. Check out the help on ShellExecute for full description of parameters and error codes returned. As you will see we can open any type of document from our program without knowing which program is associated with it (this link is defined in the Windows Registry).

    Let's see some shell action! Be sure to add ShellApito your Unit's uses clause.

    Run Notepad

     uses ShellApi; ... ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL) ; 

    Open SomeText.txt with Notepad

     ShellExecute(Handle,'open', 'c:\windows\notepad.exe','c:\SomeText.txt', nil, SW_SHOWNORMAL) ; 

    Display the contents of the "DelphiDownload" folder

     ShellExecute(Handle,'open', 'c:\DelphiDownload', nil, nil, SW_SHOWNORMAL) ; 

    Execute a file according to its extension.

     ShellExecute(Handle, 'open', 'c:\MyDocuments\Letter.doc',nil,nil,SW_SHOWNORMAL) ; 

    Here's how to Find an application associated with an extension

    Open web site or a *.htm file with the default web explorer

     ShellExecute(Handle, 'open', 'http://delphi.about.com',nil,nil, SW_SHOWNORMAL) ; 

    Here's how to Open a Web Browser in a new window

    Send an e-mail with the subject and the message body

     var em_subject, em_body, em_mail : string; begin em_subject := 'This is the subject line'; em_body := 'Message body text goes here'; em_mail := 'mailto:delphi.guide@about.com?subject=' + em_subject + '&body=' + em_body ; ShellExecute(Handle,'open', PChar(em_mail), nil, nil, SW_SHOWNORMAL) ; end; 

    Here's how to send an email with the attachment

    Execute a program and wait until it has finished. The following example uses the ShellExecuteEx API function.

     // Execute the Windows Calculator and pop up // a message when the Calc is terminated. uses ShellApi; ... var SEInfo: TShellExecuteInfo; ExitCode: DWORD; ExecuteFile, ParamString, StartInString: string; begin ExecuteFile:='c:\Windows\Calc.exe'; FillChar(SEInfo, SizeOf(SEInfo), 0) ; SEInfo.cbSize := SizeOf(TShellExecuteInfo) ; with SEInfo do begin fMask := SEE_MASK_NOCLOSEPROCESS; Wnd := Application.Handle; lpFile := PChar(ExecuteFile) ; { ParamString can contain the application parameters. } // lpParameters := PChar(ParamString) ; { StartInString specifies the name of the working directory. If ommited, the current directory is used. } // lpDirectory := PChar(StartInString) ; nShow := SW_SHOWNORMAL; end; if ShellExecuteEx(@SEInfo) then begin repeat Application.ProcessMessages; GetExitCodeProcess(SEInfo.hProcess, ExitCode) ; until (ExitCode <> STILL_ACTIVE) or Application.Terminated; ShowMessage('Calculator terminated') ; end else ShowMessage('Error starting Calc!') ; end; 
  • 相关阅读:
    9月16日 星期二 晴
    谁能联系到小爱
    初学者请教Reporting Service达人,小女给能够进来看一眼的好心人抱拳一拜
    9月19日 多云
    iPhone开发教程之Core Data 常见问题的总结
    移动终端开发必备知识
    Core Data 教程(3): 入门指南
    【转载】APK反破解之四:Android代码动态加载技术
    REST是什么
    (转载)设计师必备工具推荐(上)【译】
  • 原文地址:https://www.cnblogs.com/MaxWoods/p/2290827.html
Copyright © 2011-2022 走看看