İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Son dakika Yazarlar
  1. Ana sayfa
  2. Topluluk
  3. Programlama
  4. Programlama Dilleri
Programlama Dilleri

Program İçerisine Program Gömüp Çalıştırma

Ben Kenobi26.01.20124 cevap5.288 görüntüleme
2011'den beri7.329 mesaj
#1
Merhaba sayın üstadlar
Bir program içerisine başka bir program gömüp istediğim zaman istediğim parametrelerle çalıştırıp yine istediğim zaman sonlandırabilmek istiyorum.
Hatta bu programı arka planda çalıştırmak yani ekrana verdiği hiçbir mesajın görüntülenmemesini istiyorum.
Kullandığım programlama dili C ama windows apileriyle de gösterebilirsiniz.

Biraz ayrıntıya girersem
Windows apisi içerisindeki ShellExecute ile dışarıdan bir exe dosyasını arka planda çalıştırmak mümkün.
Aslında system() ile de mümkün ama arka planda nasıl yapılır bilmiyorum.
Bunun gömülü olmasını niye istiyorum sorusuna gelince bu arka planda çalıştırılan program benim programım kapansa da çalışmaya devam ediyor.
Benim programımı kapatınca onun da kapanmasını istiyorum.
Çıkış komutundan önce system_s("taskkill /im programadi.exe"); komutuyla çalıştırılan bu programı kapatmak da mümkün aslında.
Ancak ben şu an şu an görsel arayüz geliştirmediğim için X tuşuyla kapatılan bir konsol programında takdir edersiniz ki işe yaramıyor. Bu sefer de illa programın içerisinden kapatılması gerekiyor.
Bunu gömülü hale getirirsek biri kapanınca mecburen öbürü de kapanacağı için problemin çözülebileceğini umuyorum.
Ya da ikinci bir çözüm olarak pencere tuşları olmayan konsol programı yapmayı gösterebilirsiniz. Bu sayede kullanıcı programın içindeki exit komutundan çıkmak mecburiyetinde kalır :D
Ya da farklı bir öneriniz varsa açığım.

Teşekkürler ve saygılar...
Cevaplar
2007'den beri17 bin mesaj
#2
Konsol yazılımları zaten konsol istemcileri ile çalıştığı için konsol istemcisinin tuşlarını (bildiğim kadarı ile) elleyemezsin. Tahminimce bytearray olarak programın içine gömüp çalıştırdığında da dışarıya extract edip dışarıdan çalıştırabilirsin. ya da ram'e açıp direk ram'den çalıştırılabilir mi tam bir fikrim yok. bence sen yavaş yavaş arayüzü olan programlar yapmaya başla :)
Ben Kenobi Konuyu açan
2011'den beri7.329 mesaj
#3
bytearray olarak gömüp dışarıya extract edip çalıştırdığımda program kapanınca extract edilenler de kapanıp silinecek mi ?
Zeki Müren de bizi görecek mi ? :D
Arayüzlü programları gelecek sene öğreneceğiz, önce birkaç dil daha öğrenmem lazım şu an tek bildiğim C.
hocam yalnız böyle kaçamak cevaplar olmuyor. nasıl yapacağımı söylerseniz işimi kolaylaştırırsınız. :)
Sanırım önce resource atayacağız. icon olarak atamışlığım var ama bytearrange olarak nasıl atayacağız?
Programın içerisinden hangi kodla çalıştıracağız?
2011'den beri38 mesaj
#4
Selam;

Eger virus, trojan gibi bir amacin yoksa kod icerisine kod gommene gerek yok, burada onemli olan amacinin ne oldugu.

1-Eger amacin paralel kod calistirmaksa bunun icin ikinci kismin executable olmasina gerek yok herhangi bir fonksiyonu pthread fonksiyonlarini kullanarak paralel olarak calistirabilirsin. Phtread kullanirsan, ana thread kapatildiginda digerlerinide kapatabilirsin.
2-Daha kolay bir yol fork() kullanmaktir. Ayrica fork kullaninca ikinci child process icerisinden yine system komutu ile disaridan bir executable calistirabilirsin. Burada senin istedin sey 1.program kapatilinca ikinci programinda kapanmasi ise sana iki yol onerebilirim
a) Eger iki programida sen yaziyosan pipe dosyalarini kullanarak (windowsta calisirma emin degilim), iki processi devamli haberlestirebilirsin, dolayisiyla biri kapandiginda oburunun haberi olur ve gerekkli islemi gerceklestirir.
b) Eger ikinci programi sen yazmadiysan, o zaman 1. program cikarken ikinci programi kill etmen lazim. C de signal handlerlarla bir programin kapatilma istegini yakalaybilirsin. Yani isletim sistemi programa kapat komutunu signalle bildirir, bunu yakalar child processi bitirir sonra programdan cikarsin.

Byte arrayi calistirmaya gelince, herhangi bir bayte arrayi calistirmak kolay ama bunu yeni process olarak calistmaya gelince o is o kadar kolay degil. Illa istedigin o ise, o konuda birseyler yazabilirim.

Kolay gelsin.
2007'den beri29 bin mesaj
#5
Yo dawg, i heard you like program so i put a program in yo program so you can compile while u compile.



Tutamadım kendimi Ben Kenobi :D

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.