Hoşgeldin Misafir

Python Kodlarını Formda Çalıştırma C#

xS0N3R

23 Ağu 2020
5,424 Mesaj

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
Merhabalar! Hayırlı geceler...

Geçmişte açmış olduğum konudan da
Dork Scanner Yazalım [ C# + Python ] anlayacağınız üzere yeni bir yöntem buldum. Eğer ki geçmiş konumu okuyacak olursanız konu sonunda bir kütüphaneden bahsetmiştim IronPython... Konumuzda bahsi geçen bu kütüphane tıpkı Javascript dilinde olduğu gibi kodu form uygulamanızda çalıştırmaya yarıyordu. Lakin şimdi bahsedeceğim kütüphane sayesinde argüman & gelişmekte olan kütüphaneye(IronPython) ihtiyaç kalmadan direkt olarak iletişimi gerçekleştiriyor & Python 3 üzeri desteği sayesinde modern yaklaşımlar size sunabiliyor, adı Python.NET. NuGet üzerinde pythonnet yazarak bulabilirsiniz. Aşağıya örnek bir görsel bırakıyorum çünkü şahsen bulamadım bulamayınca da GitHub üzerinden(Python.NET) NuGet adresine tıklayıp nupkg uzantılı dosyasını manüel olarak indirdim & entegrasyonunu da manüel olarak yaptım şayet siz de yapamazsınız diye bir adet YouTube videosu da bırakacağım. Unutmadan bu projenin sorunsuz çalışabilmesi için kişisel bilgisayarınızda Python 3 ve üzeri kurulu olması lazım zira kurulu dizinde bir DLL dosyası var o olmadan sıkıntı çıkarabiliyor yazdığınız kodlar...


[ GÖRSEL GÖSTERİM ]


1xd9q8h.PNG


[ VİDEO ]
Kodlarımıza geçelim & kütüphanelerimizi projemize tanımlayalım.


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using Python.Runtime.Codecs;
using Python.Runtime;
using Python;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

Tanımlama işlemimiz bittiğine göre artık kodlara geçebiliriz. Burada basit bir Merhaba Dünya! tarzı mesaj verdirdik kodlara siz ihtiyacınıza göre genişletebilirsiniz. Önemli olan diğer birkaç husus Python kurulu dizininizde bulunan DLL dosyasının bulunduğu dizinin tam adresini tanımlamanız sizde hangi dizinde kurulu ise o dizinin adresini belirtin, uygulamayı kodlama işlemi bittikten sonra Yapılandırma Yöneticisi üzerinden x64 olarak derlemeyi unutmayın.
C#:
Environment.SetEnvironmentVariable("PYTHONNET_PYDLL", @"C:\Programs\Python\Python310\python310.dll"); //Python Kurulu Dizininizde Bulunan DLL Adresi

try
{
    PythonEngine.Initialize();

    using (Py.GIL())
    {
        dynamic sys = Py.Import("sys");
        dynamic io = Py.Import("io");
        dynamic stringIO = io.StringIO();
        sys.stdout = stringIO;
        sys.stderr = stringIO;
      
        PythonEngine.Exec("print('Merhaba Dünya! Nasıl gidiyor hayat... Keyfin yerindedir umarım?')");

        string output = stringIO.getvalue().ToString();

        MessageBox.Show(output, "Python Çıktısı");
    }

    PythonEngine.Shutdown();
}
catch (Exception ex)
{
    MessageBox.Show("Hata: " + ex.Message);
}

Derleyelim bakalım sonuç ne olacak?


[ SONUÇ ]


dqa773b.PNG


Görüldüğü üzere başarılı...