Serviste exe çalıştırmak

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
emrgln
Üye
Mesajlar: 50
Kayıt: 03 May 2013 04:58

Serviste exe çalıştırmak

Mesaj gönderen emrgln »

Merhaba değerli arkadaşlar,

Windows servis çalışırken herhangi bir exe dosyanın açılmasını nasıl sağlayabiliriz.

Saygılarımla
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: Serviste exe çalıştırmak

Mesaj gönderen brs »

emrgln yazdı:Merhaba değerli arkadaşlar,

Windows servis çalışırken herhangi bir exe dosyanın açılmasını nasıl sağlayabiliriz.

Saygılarımla

"Windows servis çalışırken" derken windows açıldığında otomatik program başlatmaktan mı bahsediyorsunuz.
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
mythofatih
Üye
Mesajlar: 25
Kayıt: 22 Ağu 2015 06:18

Re: Serviste exe çalıştırmak

Mesaj gönderen mythofatih »

Merhaba. Windows da bir servis yazdık. Servis belirli zamanlarda işlem yapmakta. Ama yapılan işlemin hatalı olduğunda kullanıcıyı bilgilendirmemiz gerekiyor. Bunun için form create etmeye çalıştık fakat başarılı olamadık. Shelexecute ile exe çalıştırmaya çalıştık .Yine başarılı olamadık. Acaba bir çözümü veya faklı bir yolu var mı? Teşekkür ederim. Kolay gelsin herkese.
Kullanıcı avatarı
emrgln
Üye
Mesajlar: 50
Kayıt: 03 May 2013 04:58

Re: Serviste exe çalıştırmak

Mesaj gönderen emrgln »

hayır kastettiğim o değil. servis çalışırken belli bir koşul oluştuğunda başka bir exe dosyanın çalıştırılmasından bahsediyorum. Veya soruyu şöyle de cevaplayabilirseniz işimi görür. servise ait bir formu kullanıcı ekranında gösterebilir miyiz?
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2381
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: Serviste exe çalıştırmak

Mesaj gönderen freeman35 »

bu windows servis mantığına pek uymuyor. W. serivisindeki esas amaç gui arabirimi olmadan, ve kullanıcı loginine gerek kalmadan sistemde işlemler yaptırmak, mesela bir db replication işlemi, ne kullanıcıya nede gui ye ihtiyaç var. Senin bahsettiğin system tray de çalışacak bir uygulama. Şuda iş görebilir, illaki win service olacaksa, bir yere log tutar, ayrıca bir gui application bu log a bakım parse eder yada işler.
Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: Serviste exe çalıştırmak

Mesaj gönderen mkysoft »

Eğer bir windows service open dialog gibi bir pencere açmaya çalışırsa kullanıcıya bir servisin isteği olduğuna dair uyarı geliyor bazen. @freeman35'in dediği gibi windows servislerde form olmaz. Aslında Windows unit'i hiç olmaz. Bir ara windows unit'ini ekleyince derleme hatası da veriyordu servis uygulamasında.
Windows servis bir exe açsın kullanıcı bu uygulamayla etkileşime geçsin derseniz, normalde windows servis ayrı bir kullanıcı ile çalışır, oturum açan kullanıcının şifresini bilemeyeceğinde uygulamayı çalıştıramaz.
Şunu deneyebilirsiniz, belki çalışır: windows servisi oturum açan kullanıcı ile çalıştırın, oturum açıkken exe'yi çağırın.

Normalde windows servislerle arka planda form olmayan console uygulamaları, java dosyaları çalıştırabilirsiniz, ShellExecute komutuna bakınız.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Serviste exe çalıştırmak

Mesaj gönderen sabanakman »

Vaktim olup da bu konuda araştırma yapamadım maalesef ama bana da lazım olan bir mesele bu. Bir kaç örnekle açmak gerekirse, çok kullanıcılı bir Server üzerinde uzaktan her bağlanan kişi sağ altta Antivirüs, Teamviewer ve Everything Search Engine (dosya arama moturu) v.b... gibi uygulamalar çalışabilmektedir. Bu uygulamalar sanırım servis tabanlı çalışmaktalar. Her farklı kullanıcı için ayrı ayrı sistem tepsisi üzerinde arayüz çalıştırabilen uygulamalar başlatabiliyorlar. Özellikle TeamViewer hizmeti durdurulunca bu program tepsiden kalkıyor, hizmet tekrar başlatılınca geri gelebiliyor. Kullanıcılar, bu programı da çıkan simge üzerinden kullanabiliyorlar :shock: . İşin püf noktası servis ve arayüz uygulamaları farklı uygulamalar ama servis üzerinden arayüz açma işlemine henüz bakamadım.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: Serviste exe çalıştırmak

Mesaj gönderen mkysoft »

Eğer servis uygulaması admin kullanıcısı ile çalışıyorsa belki runas diyerek herhangi bir kullanıcı adına da uygulama çalıştırabiliyordur.
runas ile denedim olmuyor, illaki şifre istiyor. Teamviwer'ı detaylı bilmiyorum ama gözcü bir programı olabilir.
Biraz kurcaladım, tv_w32.dll veya tv_w64.dll dosyaları bu işi yapıyor galiba. DLL'lerde export edilmiş iki fonksiyon var:
GetLoaderInterface
GetTeamViewerInterface
Uygulama bu dll dosyalarını rundll32.exe'ye çalıştırtıyor olmalı.
carsoft
Üye
Mesajlar: 138
Kayıt: 01 Ağu 2014 12:27

Re: Serviste exe çalıştırmak

Mesaj gönderen carsoft »

ben bu şekilde servis kullanarak çalıştırabiliyorum örnek olması açısından bu işini görür. servise bir timer koy.

Kod: Tümünü seç

function RunMeAsAdmin(hWnd: HWND; filename: string; Parameters: string): Boolean;
var
sei: TShellExecuteInfo;
begin
ZeroMemory(@sei, SizeOf(sei));
sei.cbSize := SizeOf(TShellExecuteInfo);
sei.Wnd := hwnd;
sei.fMask := SEE_MASK_FLAG_DDEWAIT or SEE_MASK_FLAG_NO_UI;
sei.lpVerb := PChar('runas');
sei.lpFile := PChar(Filename); // PAnsiChar;
if parameters <> '' then
sei.lpParameters := PChar(parameters); // PAnsiChar;
sei.nShow := SW_SHOWNORMAL; //Integer;
Result := ShellExecuteEx(@sei);
end;

timer eventine:

Kod: Tümünü seç

RunMeAsAdmin(GetDesktopWindow, PChar(ExtractFilePath(ParamStr(0)) + 'programın.exe'), PChar('SHOWSETTINGS'));
Cevapla