13 Eylül 2021 Pazartesi

c# form içinde exe çalıştırma

 Bu yazımızda form ekranında exe çalıştırma yapacağız.

windows’un kendi hesap makinesini form içinde gömülü bir şekilde çalıştırmayı detaylı anlatacağım.


Windows Form Application’ı seçerek Proje adını (ben execalistir yazdım) yazalım ve Ok butonuna basarak projemizi açalım.

Projemiz açıldıktan sonra form üzerine 1 adet buton ve 1 adet panel ekleyelim ve aşağıdaki gibi düzenleyelim.

C Sharp Buton ve Panel Ekleme

Formu düzenledikten sonra F7 tuşuna basarak formun kod ekranını açalım ve aşağıdaki kütüphaneleri kod ekranının üst kısmına (using kodlarının altına) ekleyelim. En üstteki benzer kodları göreceksiniz.

using System.IO;

using System.Diagnostics;

using System.Threading;

using System.Runtime.InteropServices;

Kütüphanelerimizi projemize ekledikten sonra gelelim dll kodlarını eklemeye; Aşağıda kütüphanelerin eklenmiş haliyle kod penceresinin görüntüsünü görüyoruz.

Form1 Class Kod Ekranı

Buradaki form1 sınıfının altına yani 1 numaralı işaretli alana aşağıdaki kodları yazıyoruz. Herhangi bir değişiklik yapmadan yazınız.

[DllImport("user32.dll")]

static extern IntPtr SetParent(IntPtr child, IntPtr newParent);

[DllImport("user32.dll")]

static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);

[DllImport("user32.dll")]

[return: MarshalAs(UnmanagedType.Bool)]

private static extern bool IsWindowVisible(IntPtr hWnd);

private const int WM_SYSCOMMAND = 274;

private const int SC_MAXIMIZE = 61488;

Kodları yazdıktan sonra buton nesnesinin click olayına uygulamayı çalıştırma kodunu ekleyeceğiz. Butonun click olayını form tasarım ekranındayken buton üzerine iki kez tıklayarak açabiliriz. Aşağıda buton1’in click olayının kodunu tam veriyorum. Aşağıdaki kodları butonun click olayına yazalım.

privatevoid button1_Click(object sender, EventArgs e)

{

   string exeyolu = "calc.exe";

   Process calistir = Process.Start(exeyolu);

   while (calistir.MainWindowHandle == IntPtr.Zero || !IsWindowVisible(calistir.MainWindowHandle))

   {

        System.Threading.Thread.Sleep(10);

        calistir.Refresh();

   }

Kaynak: www.mustafakarsli.com

   calistir.WaitForInputIdle();

   SetParent(calistir.MainWindowHandle, this.panel1.Handle);

   SendMessage(calistir.MainWindowHandle, WM_SYSCOMMAND, SC_MAXIMIZE, 0);

   }

Kaynak: www.mustafakarsli.com

Yukarıdaki kod ile programımız bitmiş oluyor. Buradaki dikkat edilmesi gereken açacağımız exe dosyasının adresini verdiğimiz yerdir. Exe dosyasının adresini string exeyolu = "calc.exe"; satırıyla tanımlıyoruz. Buraya direk calc.exe yazdım tam adres beliritlmediği için program direk Windows/system32 klasörü içindeki uygulamalara bakıyor.

Eğer başka bir yerdeki uygulamayı çalıştırmak istiyorsanız. “C:\\Windows\\System32\\calc.exe” şeklinde adres verilmelidir.

Programımızı F5 ile derleyip çalıştıracak olursak sorunsuz bir şekilde çalıştığını göreceksiniz. Program çalıştıktan sonra butona tıklanıldığında hesap makinesinin gömülü olarak panel içinde açıldığını göreceksiniz.

C Sharp Formda exe Çalıştırma

Siz de uygulamaları çoğaltabilirsiniz. Ben temel olarak bir exe ile anlattım. Aşağıda Programın tam kodunu görebilirsiniz.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Diagnostics;
using System.Threading;
using System.Runtime.InteropServices;

namespace execalistir
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        [DllImport("user32.dll")]
        static extern IntPtr SetParent(IntPtr child, IntPtr newParent);

        [DllImport("user32.dll")]
        static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);

        [DllImport("user32.dll")]
        [return: MarshalAs(UnmanagedType.Bool)]
        private static extern bool IsWindowVisible(IntPtr hWnd);

        private const int WM_SYSCOMMAND = 274;
        private const int SC_MAXIMIZE = 61488;

        private void button1_Click(object sender, EventArgs e)
        {
            string exeyolu = "calc.exe";
            Process calistir = Process.Start(exeyolu);

            while (calistir.MainWindowHandle == IntPtr.Zero || !IsWindowVisible(calistir.MainWindowHandle))
            {
                System.Threading.Thread.Sleep(10);
                calistir.Refresh();
            }

            calistir.WaitForInputIdle();
            SetParent(calistir.MainWindowHandle, this.panel1.Handle);
            SendMessage(calistir.MainWindowHandle, WM_SYSCOMMAND, SC_MAXIMIZE, 0);
        }
    }
}

Kaynak: www.mustafakarsli.com

İlerleyen günlerde yeni derslerde görüşmek üzere sağlıcakla kalınız.

1 Mayıs 2020 Cuma

c# dosya silme

File class veya sınıfını kullanarak C# da dosya nasıl silinir burada gösteriyorum. Environment.SpecialFolder.CommonApplicationData size C:\ProgramData yolunu verir. Windows bu yolu gizlemiştir. Detaylı bilgi için burayı tıklayın.
Ayrıca C# dosya oluşturma ve yazma için burayı tıklayın.

15 Kasım 2018 Perşembe

C# process sonlandırmayı bekle cmd execute çalıştır komut

const string ex1 = "C:\\";
        const string ex2 = "C:\\Dir";

        // Use ProcessStartInfo class.
        ProcessStartInfo startInfo = new ProcessStartInfo();
        startInfo.CreateNoWindow = false;
        startInfo.UseShellExecute = false;
        startInfo.FileName = "dcm2jpg.exe";
        startInfo.WindowStyle = ProcessWindowStyle.Hidden;
        startInfo.Arguments = "-f j -o \"" + ex1 + "\" -z 1.0 -s y " + ex2;

        try
        {
            // Start the process with the info we specified.
            // Call WaitForExit and then the using-statement will close.
            using (Process exeProcess = Process.Start(startInfo))
            {
                exeProcess.WaitForExit();
            }
        }
        catch
        {
            // Log error.
        }

31 Ekim 2018 Çarşamba

c# random kullanımı next vs

Random rnd=new Random();
Buradaki yarattığımız nesnenin adı rnd. Şimdi bu nesne üzerinden Random sınıfının metotlarına erişebileceğiz.
 int RastgeleSayi1=rnd.Next(10,20);
 int RastgeleSayi2=rnd.Next(50);
 int RastgeleSayi3=rnd.Next();
 double RastgeleSayi4=rnd.NextDouble();
Birinci örnekte: 10 ile 20 arasında int türden rastgele bir sayı üretilir, 10 dâhil ancak 20 dâhil değildir.
İkinci örnekte: 0 ile 50 arasında int türden rastgele bir sayı üretilir, 0 dâhil ancak 50 dâhil değildir.
Üçüncü örnekte: int türden pozitif herhangi bir sayı üretilir.
Dördüncü örnekte: double türden 0.0 ile 1 arasında rastgele bir sayı üretilir.

25 Ekim 2018 Perşembe

c# image download

You may use the following method to retrieve the image from a specific URL on the web. The below C# function takes an image url, download the image from the url as a stream.

 [insert_adsense]