Открыть калькулятор Windows в моем приложении C # Win? - PullRequest
9 голосов
/ 06 ноября 2010

Я знаю, что могу открыть калькулятор Windows со следующим кодом:

System.Diagnostics.Process.Start("calc");

Но я хочу открыть его в своем приложении C # Win, т.е. я не хочу открывать его в независимом окне, я хочу открыть его в своем окне.
Как я могу это сделать?

Ответы [ 6 ]

13 голосов
/ 06 ноября 2010

Вы не можете вставить другое заявление в форму.

Однако вы можете переместить окно калькулятора поверх формы и установить форму в качестве родительской. Это может обеспечить визуальный эффект, который вы ищете. Вы можете включить функцию API SetParent . Например:

System.Diagnostics.Process p = System.Diagnostics.Process.Start("calc.exe");
p.WaitForInputIdle();
NativeMethods.SetParent(p.MainWindowHandle, this.Handle);

Лучшим решением может быть просто развернуть свой собственный элемент управления калькулятором в C #, если вам действительно нужна эта функциональность, встроенная в ваше приложение. Собрать простой калькулятор на самом деле совсем не сложно, и его можно бесконечно настраивать, чтобы он выглядел точно так, как вы хотите.

Что-то вроде этого, возможно, было бы хорошей отправной точкой, если вы хотите запустить свой собственный калькулятор: http://www.codeproject.com/KB/cs/Scientific_Calculator.aspx

И я всегда думал, что этот тип элемента управления будет когда-нибудь смехотворно полезным, если я когда-нибудь напишу приложение, которое сильно зависит от числового ввода:

5 голосов
/ 06 ноября 2010

Вы можете вызвать функцию SetParent (), дескриптор дочернего окна должен быть Process.MainWindowHandle of Calc, родительское окно должно быть дескриптором окна, в которое вы хотите встроить его.Form.Handle дает вам это значение.Вам также понадобится MoveWindow, чтобы получить окно в нужном месте.Используйте pinvoke.net, чтобы получить необходимые объявления pinvoke.

5 голосов
/ 06 ноября 2010

MS Windows Calculator - это не графический элемент управления, это отдельное приложение. Если вы ищете элемент управления калькулятора .NET, есть некоторые коммерческие элементы управления от сторонних поставщиков, например

здесь

http://download.cnet.com/Softgroup-Net-Calculator-Control/3000-10250_4-10909672.html

или здесь

http://www.softpedia.com/get/Programming/Components-Libraries/Net-Calculator-Control.shtml

1 голос
/ 14 апреля 2018
System.Diagnostics.Process.Start("calc.exe");
1 голос
/ 09 сентября 2016

попробуйте ниже;беги за мной.

    using System.Diagnostics;

    private void button1_Click(object sender, EventArgs e) 

      {
        string filename= "calc.exe";

        Process runcalc= Process.Start(filename);

        while (runcalc.MainWindowHandle == IntPtr.Zero)
        {

            System.Threading.Thread.Sleep(10);

            runcalc.Refresh();

        }
    }
1 голос
/ 27 июня 2016
using System.Diagnostics;

try
     {
         Process p = null;
         if (p == null)
          {
            p = new Process();
            p.StartInfo.FileName = "Calc.exe";
            p.Start();
          }
         else
             {
                p.Close();
                p.Dispose();
             }
         }
        catch (Exception e)
            {
                MessageBox.Show("Excepton" + e.Message);
            }
     }
...