Harici uygulamaları çalıştırma: ShellExecute ve ShellExecuteEx
Bir Delphi programından nasıl harici bir program çalıştırabilirim?
Delphi programlama dili, çapraz platform uygulamaları yazmak, derlemek, paketlemek ve dağıtmak için hızlı bir yol sağlar. Delphi bir grafik kullanıcı arayüzü oluştursa da, Delphi kodunuzdan bir program yürütmek istediğiniz zamanlar olmayabilir. Harici bir yedekleme programı kullanan bir veritabanı uygulamanız olduğunu varsayalım. Yedekleme yardımcı programı, uygulamadan parametreleri alır ve verilerinizi yedekler, programınız yedeklenene kadar bekler.
Belki bir dosya listesi kutusunda sunulan belgeleri, önce ilgili programı açmadan çift tıklatarak açmak istersiniz. Programınızda kullanıcıyı ana sayfanıza götüren bir bağlantı etiketi düşünün. Varsayılan Windows e-posta istemci programı aracılığıyla doğrudan Delphi uygulamasından bir e-posta göndermeyle ilgili de olabilir.
- Tarayıcımı yerel bir HTML sayfasıyla nasıl açarım?
- Bir sitede nasıl gezilir, yani bir Delphi uygulamasıyla harici bir HTML sayfası nasıl açılır?
- Delphi programımı harici program sonlandırılana kadar nasıl bekletebilirim?
- Dokümanı oluşturan uygulamayı açıkça başlatmadan, programımın içinden belgeleri yazdırabilir miyim, örneğin: Word’ü başlatmadan bir Word belgesi basabilir misiniz?
Sadece harici bir uygulama çalıştırmak veya kayıtlı bir dosyayı açmak, bir klasör açmak, bir dosyayı yazdırmak ve benzerleri için … çeşitli işlevler mevcuttur.
Çoğu durumda, Windows API işlevi ShellExecute kullanılır.
Bir dereceye kadar kontrol verir ve aynı zamanda çok karmaşık değildir. Birkaç örnek:
uses alanına ShellApi eklemeyi unutmayın...
uses ShellApi;
Bir uygulamayı başlat:
ShellExecute(Handle, ‘open’, PChar(‘c:\test\app.exe’), nil, nil, SW_SHOW);
NotePad’i başlatın ve bir dosya yükleyin : (Tam yolunu belirtmeniz gerekmez, sistem notepad.exe yi bulur) :
ShellExecute(Handle, ‘open’, PChar(‘notepad’), PChar(‘c:\test\readme.txt’), nil, SW_SHOW);
Bir belge yazdırın:
ShellExecute(Handle, ‘print’, PChar(‘c:\test\test.doc’), nil, nil, SW_SHOW);
Not: Muhtemelen Word programının penceresini çok kısa bir sürede göreceksiniz, ancak otomatik olarak kapanacaktır.
Yerel veya uzak yani netten bir HTML sayfası açın:
ShellExecute(Handle, ‘open’, PChar(‘http://www.festra.com/’), nil, nil, SW_SHOW);
Herhangi bir tür kayıtlı veri ile yapabilirsiniz, örneğin;
- Metin dosyası:
ShellExecute(Handle, ‘open’, PChar(‘c:\test\readme.txt’), nil, nil, SW_SHOW);
- HTML Yardım Dosyası :
ShellExecute(Handle, ‘open’, PChar(‘c:\windows\help\calc.chm’), nil, nil, SW_SHOW);
- Windows Gezgini ile bir klasörü açın:
ShellExecute(Handle, ‘explore’, PChar(‘c:\windows)’, nil, nil, SW_SHOW);
- Bir DOS komutunu çalıştırın ve hemen geri dönün:
ShellExecute(Handle, ‘open’, PChar(‘command.com’), PChar(‘/c copy file1.txt file2.txt’), nil, SW_SHOW);
- Bir DOS komutunu çalıştırın ve DOS penceresini açık tutun :
ShellExecute(Handle, ‘open’, PChar(‘command.com’), PChar(‘/k dir’), nil, SW_SHOW);
Delphi örnek projeler ve kaynak kodlara buradan erişebilirsiniz.