ShellExecute ve WinExec çalışmıyor [FARKLI]

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Jire
Üye
Mesajlar: 167
Kayıt: 07 Eki 2007 01:20

ShellExecute ve WinExec çalışmıyor [FARKLI]

Mesaj gönderen Jire »

Evet bi tane program var shellexecute le veya winexec yle çalışmıyor açıldığında form çıkmadan hata veriyor ve kapanıyor. ama windows explorer ile klasörden açtığım zaman açılıyor.

sw_show shownormal neredeyse hepsini denedim olmadı yardım ederseniz sevinirim.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
verdiği hata mesajı anlamlı bir mesaj mı?
belki programın parametre ile çalışması gerekiyordur.
çalıştırmaya çalıştığınız programı görmeden bişey demek biraz zor gibi görünüyor.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Re: ShellExecute ve WinExec çalışmıyor [FARKLI]

Mesaj gönderen ikutluay »

Jire yazdı:Evet bi tane program var shellexecute le veya winexec yle çalışmıyor açıldığında form çıkmadan hata veriyor ve kapanıyor. ama windows explorer ile klasörden açtığım zaman açılıyor.

sw_show shownormal neredeyse hepsini denedim olmadı yardım ederseniz sevinirim.
bazı programlar açılıştışta exe adını komut satırını parametreleri kontrol edip otomatik çıkış yapabilirler.
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

ShellExecute ile çalıştırmanı ve çalışma klasörü olarak programın bulunduğu yolu ayrıca vermen gerekiyor olabilir. Benzeri bir iş için yazdığım kod vardı.

Kod: Tümünü seç

function Calistir(const DosyaAdi: String;const Param:String='';WorkDir:String=''): DWord;
var _param,_workdir:PChar;
begin
  if Trim(Param)='' then _param:=nil else _param:=PChar(Param);
  if Trim(Workdir)='' then begin
    if DirectoryExists(DosyaAdi) then WorkDir:=DosyaAdi
    else WorkDir:=ExtractFilePath(DosyaAdi);
  end;
  _workdir:=PChar(WorkDir);
  if Trim(DosyaAdi)<>'' then
   Result:=ShellExecute(Application.Handle, 'open', PChar(DosyaAdi), _param, _workdir, SW_NORMAL);
end;
Bunu Calistir('c:\dene.exe'); gibi bir kodla çalıştırmayı dene.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Akin_Delphi
Üye
Mesajlar: 163
Kayıt: 06 Nis 2006 12:22

Mesaj gönderen Akin_Delphi »

Bir ekleme de benden: Parametre olarak geçtiğiniz yol içerisindeki boşluk karakterleri (örneğin C:\ProgramFiles\ içerisindeki boşluk karakteri de bir takım sorunlara yol açabiliyor.

Bir de benim kişisel tecrübemde, eğer ShellExecute'a parametre olarak geçilen handle eğer bir form handle'ı değilse de sorun oluyor.

Örneğin ShellExecute'ı bir kanal (thread) içerisinden çağırısanız ve kanal'ın handle'ını parametre olarak geçerseniz çalışmama ihtimali çok yüksek.

Saygılar ve Başarılar
Jire
Üye
Mesajlar: 167
Kayıt: 07 Eki 2007 01:20

Mesaj gönderen Jire »

Yardımlarınız için teşekkürler.

edit:sonunda çalıştırdım.program sadece kendi klasöründen çalıştırılabildiği için böyle yaptım oldu :) .

ShellExecute(Application.Handle, 'open', PChar(ExtractFileName(SettingsForm.Sc2.Text)), '', PChar(ExtractFilePath(SettingsForm.Sc2.Text)), SW_NORMAL);
Cevapla