Показать калькулятор windows на winform
Здравствуйте, я смог показать блокнот в Winform с помощью панели и вставить его в форму, как этот код ниже, и с помощью SetParent API:
[DllImport("user32.dll", SetLastError = true)] static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent); Process proc = Process.Start( new ProcessStartInfo() { //here I put notepad.exe and it works FileName = Environment.GetEnvironmentVariable("windir") + @"\system32\calc.exe", WindowStyle = ProcessWindowStyle.Minimized }); Thread.Sleep(200); SetParent(proc.MainWindowHandle, this.panel1.Handle);
Что я уже пробовал:
Моя проблема заключается в калькуляторе, я не могу показать калькулятор в winform, он показывает мне ошибку.(Система.Исключение InvalidOperationException)
Спасибо.
Richard MacCutchan
Система.InvalidOperationException означает, что какая-то инструкция в вашем коде сделала что-то незаконное. Часто это происходит из-за перехода в место, которое не содержит действительной инструкции, даже если она находится в адресном пространстве вашего приложения. Единственный способ исправить это-использовать свой отладчик, чтобы выяснить, где и почему это произошло.
TatsuSheva
Можно ли показать калькулятор в WinForm ? Ошибка происходит здесь setparent осуществляет(тез.Докл.MainWindowHandle, это.панель1.Ручка); но когда я снимаю нить.Sleep (200); калькулятор появляется, но не в winform
Richard MacCutchan
Я не думаю, что приложения Windows разрабатываются с учетом этого, поэтому не гарантируется, будут ли они работать в такой среде.
BillWoodruff
Взгляните на использование средства автоматизации Windows для этого; есть полная статья о CodeProject по автоматизации Calc.exe:
http://www.codeproject.com/Articles/141842/Automate-your-UI-using-Microsoft-Automation-Framew
Richard Deeming
Вы используете Windows 10? Насколько мне известно, на рабочем столе приложения "Калькулятор" уже не существует. Если ты побежишь calc.exe
вместо этого он запускает калькулятор "современного приложения".
Win32 API почти наверняка не будет работать с "современным приложением".
TatsuSheva
Вы правы... Последнее решение-создать свой собственный калькулятор
Philippe Mori
Вы не должны этого делать. Приложения Windows не предназначены для использования в качестве дочернего приложения другого приложения. Если вам нужен калькулятор в вашем собственном приложении, то создайте свой собственный. Кроме того, используя существующее приложение, у вас может возникнуть проблема с отображением, и приложение может выглядеть странно, если оба приложения не используют один и тот же внешний вид (цвет, размер, форма...) и, таким образом, ваше приложение выглядит очень непрофессионально.
Maciej Los
Согласитесь!
BillWoodruff
Если вы используете Windows 10, вы можете получить старый Calc.exe назад:
http://winaero.com/blog/get-calculator-from-windows-8-and-windows-7-in-windows-10/
Однако, хотя я думаю, что это может сработать так же, как и до Win 10, я не совсем уверен в этом.
TatsuSheva
Спасибо, это работает.
BillWoodruff
К вашему сведению: у CodeProject есть несколько проектов калькуляторов для WinForms, которые вы можете использовать, например этот:
http://www.codeproject.com/Tips/853405/A-Simple-Calculator-in-Windows-Forms