ArÅŸiv Anasayfa API(Application Programming Interface)
Sayfalar: 1
Program Çalıştırmak (WinExec) Gönderen: FetihlerFatihi Tarih: 11 May 2006 19:46:10
: Belirtilmemiş
Bu yazı yazarın Delphi’nin .NET uyumlu versiyonunu konu ettiği kitabının Api fonksiyonları adlı bölümün bir kısmıdır. http://www.seckin.com.tr/urun.aspx?productID=6451

Program Çalıştırmak
Delphi projeleri dahilinde bilgisayara kurulu olan herhangi bir programı çalıştırmak için WinExec() adlı API fonksiyo¬nundan yararlanabilirsiniz. WinExec() fonksiyonu 2 paramet¬reye sahiptir. İlk parametrede çalıştırılacak program dosyasının adı verilmekte ve 2. paramet¬rede ise programa ait pencerenin ilk şekli belirtilmektedir.

Çalışma anında WinExec() fonksi¬yonu sayesinde Not Defteri programının(Notepad.exe) çalışmasını sağlamak için forma bir düğme yerleştirdim ve bu düğmenin Click() yordamını aşağıdaki gibi düzenledim. Deklarasyon yapmadan WinExec() fonksiyonunu bu şekilde kullanabilmek için Borland.Vcl.Windows’un koda dahil edilmesi gerekir.



Çalıştırılan programa ait pencere ilk ekrana getirildiği zaman ekranı kaplaması isteniyorsa WinExec() fonksiyonuna 2. parametre olarak 3 değeri verilmelidir. 2. parametre olarak 6 verilirse programa ait pencere simge durumuna küçültülür, 9 verilirse pencere orijinal boyutları ile ekrana getirilir.

WinExec() fonksiyonu kendisine 1. parametre olarak verilen program dosyası ile ilgili olarak geriye sayısal bir değer göndermektedir. Çalıştırılmak istenen prog¬ram dosyası bulunamazsa geriye 2 gönderilmektedir.

Belirtilen sürücü veya klasör bulunmazsa WinExec() fonksiyonu geriye 3 değerini gönderir. Belirti¬len programı çalıştırmak için yeterli bellek yoksa geriye 8 gönderilir. WinExec() fonk¬siyonun geriye gönderdiği değeri yakalamak için yukarıda verdiğim kodu aşağıdaki gibi değiş¬tirdim.



Delphi projesi dahilinde çalıştırılacak programı çalışma anında belirleyebil¬mek için forma bir OpenFileDialog nesnesi yerleştirdim ve yukarıda verdiğim kodu aşağıdaki gibi düzenledim.


WinExec() fonksiyonunu aşağıdaki gibi kullanıp Denetim Masası penceresini ekrana getire¬bi¬lirsiniz. WinExec() fonksiyonuna 2. parametre olarak 9 yerine “sw_ShowNormal” sabit bilgisini kullanabilirsiniz.

:
begin
   WinExec('C:\Windows\System32\Control.exe', sw_ShowNormal);
end;

Bildiğiniz gibi Denetim Masası penceresinde sistemle ilgili programları temsil eden simge veya seçenekler bulunmaktadır. Denetim Masası penceresini ekrana getirmedeki amacınız Yazıcılar penceresini açıp yazıcılar ile ilgili ayarlama yapmaksa WinExec() fonksiyonunu aşağıdaki gibi kullanabilirsiniz. Bu şekilde düzenlenen WinExec() fonksiyonu sayesinde Denetim Masası penceresi ekrana getirilmeden direk Yazıcılar penceresi açılır.

:
begin
   WinExec('C:\Windows\System32\Control.exe PRINTERS', 9);
end;

Denetim Masasındaki bazı uygulamalar CPL uzantılı dosyalar şeklinde gelmektedir. Örneğin “Tarih ve Saat Özellikleri” penceresini ekrana getirmek için TIMEDATE.CPL adlı dosyayı “Control.exe” programı ile açmak gerekmektedir. Bu işlemin nasıl yapıldığını aşağıda görebilirsiz.

:
begin
  WinExec('C:\Windows\System32\Control.exe TIMEDATE.CPL', 9);
end;

Delphi projeleri dahilinde DOS penceresi açmak istiyorsanız WinExec() fonksiyonunu aşaıdaki gibi kullanabilirsiniz.

:
begin
  WinExec('Command.com', 9);
end;

WinExec() fonksiyonunu System.Runtime.InteropServices’den yararlanarak çalıştırmak istemiş olsaydım bu fonksiyonu aşağıdaki gibi deklare ederdim. Fonksiyonları deklare eder¬ken parametrelere istediğiniz adı verebilirsiniz.