Uygulama Kapandığında Mail Atan Program
-
mihni bunu yazdıNoktaliVirgul bunu yazdı
zamanlanmış görevler + mail atan bir exe/bat dosyası
bunlar senin işini çözer.
Zamanlanmış görevler istediğim tarz bir şeye benzemiyor.
O exe veya batı arıyorum. :)
Zamanlanmış görevlerin event log'ları takip etme özelliği ile yapmak lazım. Ayrıca eskiden zamanlanmış görevler mail de atıyordu.
Event log'lardan uygulama kapanınca gelen event'daki prıgrama bakıp istediğin programsa exe çalıştır.
Ben şu an bir program çalışınca tetiklemesini kullanıyorum.
aradığın exe; usb virüslernin çokça kullandığı blat.exe yada sendmail.exe
http://caspian.dotconf.net/menu/Software/SendEmail/
---
Zaten Go ile çözümü vermişler.
Burada dursun powershell için: https://techibee.com/powershell/powershell-track-process-stoptermination/2278
-
AMpul bunu yazdı
Yuce programlama dili go ile 5 dk lik is :)
Exe link: https://s3.us-east-2.amazonaws.com/dodotahribat/watch.7z
Password: tahribatKod:
package main import ( "fmt" "net/smtp" "os" ) func main() { var pid int var user, pass, recp string fmt.Printf("Process ID : ") fmt.Scanf("%d\n", &pid) proc, err := os.FindProcess(pid) if err != nil { fmt.Println("Cannot find process.") return } fmt.Printf("Sender : ") fmt.Scanln(&user) fmt.Printf("Password : ") fmt.Scanln(&pass) fmt.Printf("Recipient : ") fmt.Scanln(&recp) fmt.Printf("\nWaiting for %d...\n", pid) proc.Wait() fmt.Println(pid, "Terminated. Sending e-mail...") smtp.SendMail( "smtp.gmail.com:587", smtp.PlainAuth("", user, pass, "smtp.gmail.com"), user, []string{recp}, []byte("Subject: Process Terminated\r\n\r\n")) }
Kullanim:
1) gonderen gmail olmak zorunda, aksi halde sendmail deki smtp adresini degistirip yeniden derlemen lazim. alici herhangi bir mail olabilir.
2) process id yerine process adi yapmadim cunku chrome gibi ayni isimde 144545 process olabilir, PID ise sadece 1 tane var. Eger pid i nasil bulacagini bilmiyorsan, taskmgr yerine resource monitor'u ac o gosteriyor, ya da taskmgr de view/select column kismindan pid i ekleyebilirsin.
3) id sini verdigin process kapandiginda alici olarak verdigin email'e Process Terminated diye bos mail gider, istersen yine kodu editleyip maili guzellestirebilirsin.
sen nasıl bir varlıksın dede helal !...
edit:bu arada resource monitöre run / resmon.exe yaparak ulaşabilirsiniz...
-
MhmdAlmz bunu yazdısunyy2003 bunu yazdıAMpul bunu yazdı
Vurdu gol oldu
Go ne hocam
Programlama dili
Affet ilk kez duydum
-
AMpul bunu yazdı
Kod:
package main import ( "fmt" "net/smtp" "os" ) func main() { var pid int var user, pass, recp string fmt.Printf("Process ID : ") fmt.Scanf("%d\n", &pid) proc, err := os.FindProcess(pid) if err != nil { fmt.Println("Cannot find process.") return } fmt.Printf("Sender : ") fmt.Scanln(&user) fmt.Printf("Password : ") fmt.Scanln(&pass) fmt.Printf("Recipient : ") fmt.Scanln(&recp) fmt.Printf("\nWaiting for %d...\n", pid) proc.Wait() fmt.Println(pid, "Terminated. Sending e-mail...") smtp.SendMail( "smtp.gmail.com:587", smtp.PlainAuth("", user, pass, "smtp.gmail.com"), user, []string{recp}, []byte("Subject: Process Terminated\r\n\r\n")) }
Benim burada sormak istediğim bir husus var,
main () fonksiyonunda hafızasında Process Id si verilen işlemi sürekli mi tarıyor bu program ?
Yani şöyle sorayım. main fonksiyonu sonsuz döngüye girmiş şekilde mi process id sini tarıyor ?
Sonsuz döngüye girmiş şekilde hafızadaki process id sini tarayan bir program eninde sonunda sistemin yavaşlamasına sebep olmaz mı ?
@AmPul dan cevap bekliyorum..
-
@SerYolcu, sonsuz dongu filan yok, kodda da yok arka planda da yok.
Yukaridaki program cross platform, yani linux ya da mac'de de direkt derlenip kullanilabilir, ama windows icin arka planda olan sey su.
OpenProcess ile process aciliyor ve WaitForSingleObject ile process handle'inda bekleniyor, process terminate olursa handle signaled duruma geldigi icin WaitForSingleObject sonlaniyor, program da mail gonderiyor.
Her hangi bir programlama dilinde bu iki api ile yazilabilir, Go ile yazma sebebim aslinda tls ile mail gondermenin cok kolay olmasi.