收发短信应用

来源:互联网 发布:名器哪款接近真人知乎 编辑:程序博客网 时间:2024/04/29 15:28

实现过程
(1)新建一个项目,命名为Ex13_15,默认窗体为Form1。
(2)在Form1窗体中,主要添加TextBox控件和Label控件,控件的数量及用途如图13.16所示,添加一个Button控件,用于开启或停止远程关闭计算机服务。
(3)主要程序代码。
        private void Form1_Load(object sender, EventArgs e)
        {
           //机器号码
            txtJQHM.Text = GMS.GSMModemGetSnInfoNew(txtCOM.Text, txtBTL.Text); 
            txtCOM.Text = GMS.GSMModemGetDevice();  //COM1
            txtBTL.Text = GMS.GSMModemGetBaudrate();  //波特率
            labStatus.Text = "服务关闭中。。。。。";
        }
        private void Close_Windows()
        {
            try
            {
                //指定生成 WMI 连接所需的所有设置
                ConnectionOptions op = new ConnectionOptions();
                op.Username = txtUser.Text; //远程计算机用户名称
                op.Password = txtPWD.Text;   //远程计算机用户密码
                //设置操作管理范围
         ManagementScope scope = new ManagementScope("////" + txtIP.Text + "//root//cimv2", op);
                scope.Connect(); //将此 ManagementScope 连接到实际的 WMI 范围。
                ObjectQuery oq = new ObjectQuery("SELECT * FROM Win32_OperatingSystem");
             ManagementObjectSearcher query = new ManagementObjectSearcher(scope, oq);
                //得到WMI控制
                ManagementObjectCollection queryCollection = query.Get();
                foreach (ManagementObject obj in queryCollection)
                {
                  obj.InvokeMethod("ShutDown", null); //执行关闭远程计算机
                }
            }
            catch(Exception ex)
            {
                Process p = new Process();
                p.StartInfo.FileName = "cmd.exe";
                p.StartInfo.UseShellExecute = false;
                p.StartInfo.RedirectStandardInput = true;
                p.StartInfo.RedirectStandardOutput = true;
                p.StartInfo.RedirectStandardError = true;
                p.StartInfo.CreateNoWindow = true;
                p.Start();
                p.StandardInput.WriteLine("shutdown /s");
                p.StandardInput.WriteLine("exit");
            }
        }
        private void timer1_Tick(object sender, EventArgs e)
        {
            //连接设备
            if (GMS.GSMModemInitNew(txtCOM.Text, txtBTL.Text, null, null, false, txtPower.Text) == false)
            {
                MessageBox.Show("连接失败!" + GMS.GSMModemGetErrorMsg(), "提示", MessageBoxButtons.OK);
                return;
            }
            //接收短信
            string str = GMS.GSMModemSMSReadAll(1);
            if (str==null)
                return;
            if (str.Substring(str.IndexOf("|")+1, 2) == "关机")
            {
                this.Close_Windows();
            }
        }
private void button1_Click(object sender, EventArgs e)
        {
            if (button1.Text == "开启服务")
            {
                timer1.Enabled = true;
                labStatus.Text = "关机命令采集中。。。。。";
                button1.Text = "停止服务";
            }
            else
            {
                timer1.Enabled = false;
                button1.Text = "开启服务";
                labStatus.Text = "服务关闭中。。。。。";
            }
        }