______________________________________________C#调用系统计算器____________________________________________
  
          ProcessStartInfo Info = new ProcessStartInfo();
            Info.FileName = "calc.exe ";//"calc.exe"为计算器,"notepad.exe"为记事本
            Process Proc = Process.Start(Info);
 
______________________________________________C#调用系统计算器,并获得值____________________________________
 
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.Diagnostics;
using
 System.Runtime.InteropServices;

namespace
 CSharpWin04
{
    
public partial class
 Form3 : Form
    {
        
public
 Form3()
        {
            InitializeComponent();
        }

        Process pcalc 
= null
;
        
//启动计算器

        private void button1_Click(object sender, EventArgs e)
        {
            pcalc 
= Process.Start("calc.exe"
);
        }

        
//获取文本框的结果

        [DllImport("user32.dll", EntryPoint = "FindWindow")]
        
public static extern IntPtr FindWindow(string lpClassName, string
lpWindowName);
        [DllImport(
"user32.dll", EntryPoint = "FindWindowEx"
)]
        
public static extern IntPtr FindWindowEx(IntPtr hWnd1, IntPtr hWnd2, stringlpsz1, string
 lpsz2);
        [DllImport(
"User32 "
)]
        
public static extern bool SendMessage(IntPtr hWnd, int Msg, int
 wParam, IntPtr lParam);
        
public const int WM_GETTEXT = 0xD
;
        
private void button2_Click(object
 sender, EventArgs e)
        {
            
if (pcalc == null || pcalc.HasExited) return
;
            IntPtr hEdit 
= FindWindowEx(pcalc.MainWindowHandle, IntPtr.Zero,"Edit"null
);
            
string w = " "
;
            IntPtr ptr 
=
 Marshal.StringToHGlobalAnsi(w);
            
if (SendMessage(hEdit, WM_GETTEXT, 100
, ptr))
            {
                MessageBox.Show(Marshal.PtrToStringAnsi(ptr));
            }
        }
    }
}
posted on 2012-12-12 23:26  田亦裔  阅读(504)  评论(0编辑  收藏  举报