VB.NET Başka bir programdan çıktı alma

kaymakasm

Katılımcı Üye
19 Nis 2015
266
1
Herkese merhabalar arkadaşlar vb.net ile alakalı sorunumu dile getirmek isterim.
Şimdi farklı bir program var komut yöneticisi gibi ekrana sahip dos ekranı var yani. ben bu programda yazılan her yazıyı gerçek zamanlı olarak textbox a aktarmak istiyorum. normalde program gözükmeden işlem yaptırabiliyorum. yani process kısmının startinfo ları vs. yapabiliyorum. ama programdan çıktı alabiliyorum. bunu nasıl yapabilirim? şimdiden teşekkürler. bu arada process standartoutput yöntemini denedim ve başaramadım.
 

zztri

Yaşayan Forum Efsanesi
9 Tem 2015
10,053
390
Ankara
Şimdi Oldu Anlaşılır Bu Konu Hakkında Konuyu Düzeltirseniz Daha İyi Olur

İNTERNETTEN BAKABİLİRSİNİZ

Hadi ya? Vallaha mı?

:trl

Üstadım standartoutput metodunun mutlaka çalışması gerekir. Her şeyi tam doğru yaptığından emin misin?

Şöyle örnek vereyim, benim çalışan kernel seviyesi UDP Flooder'ımdan alıntı.. Yani çalıştığından 100% eminim.

Kod:
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo = new System.Diagnostics.ProcessStartInfo(<programın path>,<parametreler>);
[COLOR="RED"]//Standart output'u yönlendireceğimizi belirtiyoruz.[/COLOR]
proc.StartInfo.RedirectStandardOutput = true;
[COLOR="RED"]//Yönlendirme shellexecute ediyorken yapılamaz, aşağısı kesinlikle false[/COLOR]
proc.StartInfo.UseShellExecute = false;
[COLOR="RED"]//bu tercihi.. CreateNoWindow'u true edersen asla pencere açmaz.[/COLOR]
proc.StartInfo.CreateNoWindow = true;
[COLOR="RED"]//Eski windows versiyonlarına uyumluluk için. aslında artık aşağısı gereksiz.[/COLOR]
proc.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
[COLOR="RED"]//Prosesi çalıştırdım.[/COLOR]
proc.Start();
[COLOR="RED"]//bitmesini bekledim. Böylece istediğim çıktının tamamını output'a doldurdu.[/COLOR]
proc.WaitForExit();
[COLOR="RED"]//standartoutput'u sonuna kadar okudum.[/COLOR]
string istediğimVeri=proc.StandardOutput.ReadToEnd();

Başka bir yolu çok çünkü.. Process'in çıktısını, standartoutput'tan alırsın. Aslında konsol ekranında da o görünüyordur.

Edit: Başka yolu varmış. HWND'sinden konsolun kontrolünü ele geçirebiliyormuşsun. Ama çok sapa yol yahu, bu çalışırsa onu yapmak saçmalık oluyor.
 
Son düzenleme:

kaymakasm

Katılımcı Üye
19 Nis 2015
266
1
Hadi ya? Vallaha mı?

:trl

Üstadım standartoutput metodunun mutlaka çalışması gerekir. Her şeyi tam doğru yaptığından emin misin?

Şöyle örnek vereyim, benim çalışan kernel seviyesi UDP Flooder'ımdan alıntı.. Yani çalıştığından 100% eminim.

Kod:
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo = new System.Diagnostics.ProcessStartInfo(<programın path>,<parametreler>);
[COLOR="RED"]//Standart output'u yönlendireceğimizi belirtiyoruz.[/COLOR]
proc.StartInfo.RedirectStandardOutput = true;
[COLOR="RED"]//Yönlendirme shellexecute ediyorken yapılamaz, aşağısı kesinlikle false[/COLOR]
proc.StartInfo.UseShellExecute = false;
[COLOR="RED"]//bu tercihi.. CreateNoWindow'u true edersen asla pencere açmaz.[/COLOR]
proc.StartInfo.CreateNoWindow = true;
[COLOR="RED"]//Eski windows versiyonlarına uyumluluk için. aslında artık aşağısı gereksiz.[/COLOR]
proc.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
[COLOR="RED"]//Prosesi çalıştırdım.[/COLOR]
proc.Start();
[COLOR="RED"]//bitmesini bekledim. Böylece istediğim çıktının tamamını output'a doldurdu.[/COLOR]
proc.WaitForExit();
[COLOR="RED"]//standartoutput'u sonuna kadar okudum.[/COLOR]
string istediğimVeri=proc.StandardOutput.ReadToEnd();

Başka bir yolu çok çünkü.. Process'in çıktısını, standartoutput'tan alırsın. Aslında konsol ekranında da o görünüyordur.

Hocam ben standartoutput kısmını farklılık olsun diye ipconfig.exe de denedim. orada çalıştı. benim denediğim programda çalışmadı çünkü benim denediiğim programda o çktı sürekli değişiyor. bitmesini bekledikten sonra da bir anlamı kalmıyor açıkçası. çünkü ben işlem devam ederken veri almak istiyorum.
 

zztri

Yaşayan Forum Efsanesi
9 Tem 2015
10,053
390
Ankara
Hocam ben standartoutput kısmını farklılık olsun diye ipconfig.exe de denedim. orada çalıştı. benim denediğim programda çalışmadı çünkü benim denediiğim programda o çktı sürekli değişiyor. bitmesini bekledikten sonra da bir anlamı kalmıyor açıkçası. çünkü ben işlem devam ederken veri almak istiyorum.

Sorun değil.. Sonuna kadar beklemek zorunda değilsin.. Satır satır, karakter karakter, blok blok okursun.. Benim örneğin alındığı yerde konsoldan "arp" komutu verip onun sonucunu okuyordu, bütün bloğu tek bir şekilde işlediğimden o "waitforexit" kısmı var.

Edit: Gene çözülmezse teamviewer... Ama gece.. karım gezmeye çıkmaya zorluyor beni...
 
Son düzenleme:

kaymakasm

Katılımcı Üye
19 Nis 2015
266
1
Dim WithEvents process As New Process
Dim ffReader As StreamReader
Dim strFFOUT As String
Public Sub min()
Dim startinfo As New ProcessStartInfo
startinfo.FileName = "proc\ffmpeg.exe"
startinfo.Arguments = "-i " & Chr(34) & "http://media.netd.com.tr/S9/HLS_VOD/98623_96c1/500/prog_index.m3u8" & Chr(34) & " -c copy -bsf:a aac_adtstoasc C:\Users\Asim\Desktop\test3.mkv"
startinfo.CreateNoWindow = True
startinfo.UseShellExecute = False
startinfo.RedirectStandardOutput = True
startinfo.WindowStyle = ProcessWindowStyle.Hidden
startinfo.RedirectStandardInput = True
process.StartInfo = startinfo
process.EnableRaisingEvents = True
process.Start()
ffReader = process.StandardOutput
strFFOUT = ffReader.ReadLine
txtConsoleout.Text = strFFOUT
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

min()
End Sub

Private Sub process_Exited(ByVal sender As Object, ByVal e As EventArgs)

End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
process.Kill()
End Sub

Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
min()
End Sub
hocam buyrun kodlarım. standart error kullandım çünkü ffmpeg.exe standart errorda bilgiler çıkıyormuş. bu kodlarla başlata bastığım an işlem başlıyor ancak txtboxa hiç bir veri gelmiyor. form donuyor. diğer programın işi bittiği an form geri geliyor. ama yine de bir yazıg elmiyor
 

zztri

Yaşayan Forum Efsanesi
9 Tem 2015
10,053
390
Ankara
hocam buyrun kodlarım. standart error kullandım çünkü ffmpeg.exe standart errorda bilgiler çıkıyormuş. bu kodlarla başlata bastığım an işlem başlıyor ancak txtboxa hiç bir veri gelmiyor. form donuyor. diğer programın işi bittiği an form geri geliyor. ama yine de bir yazıg elmiyor

İnternetten müzik rip... süper proje.. hoşuma gitti.. Üstadım gece özel mesaj atarım kusuruma bakma, karım birazdan götürüyor beni üstümü değişeceğim. chr 34 tırnak idi değil mi? ffmpeg'in parametrelerini ezbere bildiğimi söyleyemem ama doğru yazılmış gibiler.

Ama zaten boş gelmeli.. Bilgisayarının hızını küçümsüyorsun. Process'i başlattıktan hemen sonra bir satır istiyorsun, o sırada ffmpeg büyük ihtimalle konsola bir şey yazmadı.

Gece bakarız beraber.
 

kaymakasm

Katılımcı Üye
19 Nis 2015
266
1
İnternetten müzik rip... süper proje.. hoşuma gitti.. Üstadım gece özel mesaj atarım kusuruma bakma, karım birazdan götürüyor beni üstümü değişeceğim. chr 34 tırnak idi değil mi? ffmpeg'in parametrelerini ezbere bildiğimi söyleyemem ama doğru yazılmış gibiler.

Ama zaten boş gelmeli.. Bilgisayarının hızını küçümsüyorsun. Process'i başlattıktan hemen sonra bir satır istiyorsun, o sırada ffmpeg büyük ihtimalle konsola bir şey yazmadı.

Gece bakarız beraber.

tamamdır hocam. projem aslında netd tvyo gibi sitelerden doğrudan link üzerinden videoyu indirmeye yarıyor :) . argument kısmında sorun yok zaten dosya iniyor sorunsuz şekilde. ben sadece o ilerlemeyi gösteremeiyorum akşam saatlerinde mesajınızı bekliyorum. iyi günler
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.