国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

查看: 5762|回復(fù): 0
打印 上一主題 下一主題

C#下基于控件的系統(tǒng)托盤及退出保護(hù)設(shè)計(jì)源碼及貼圖

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2009-4-3 00:07:09 | 只看該作者 回帖獎勵(lì) |倒序?yàn)g覽 |閱讀模式
關(guān)鍵詞: 控件 , 貼圖 , 托盤 , 系統(tǒng) , 源碼

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.Runtime.InteropServices;//加動態(tài)鏈接庫需要
namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        [DllImport("winio.dll")]
        public static extern bool InitializeWinIo();
        [DllImport("winio.dll")]
        public static extern bool GetPortVal(IntPtr wPortAddr, out int pdwPortVal, byte bSize);
        [DllImport("winio.dll")]
        public static extern bool SetPortVal(uint wPortAddr, IntPtr dwPortVal, byte bSize);
        [DllImport("winio.dll")]
        public static extern byte MapPhysToLin(byte pbPhysAddr, uint dwPhysSize, IntPtr PhysicalMemoryHandle);
        [DllImport("winio.dll")]
        public static extern bool UnmapPhysicalMemory(IntPtr PhysicalMemoryHandle, byte pbLinAddr);
        [DllImport("winio.dll")]
        public static extern bool GetPhysLong(IntPtr pbPhysAddr, byte pdwPhysVal);
        [DllImport("winio.dll")]
        public static extern bool SetPhysLong(IntPtr pbPhysAddr, byte dwPhysVal);
        [DllImport("winio.dll")]
        public static extern void ShutdownWinIo();
        [DllImport("user32.dll")]
        public static extern int MapVirtualKey(uint Ucode, uint uMapType);
        public bool DllLoadResult = false;
        public bool SystemExitFlag = false;//阻止關(guān)閉鈕非法退出,只允許從托盤退出
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {//捕捉窗體Close事件,關(guān)閉窗口時(shí)提示
            if (SystemExitFlag && MessageBox.Show("請您確認(rèn)是否退出(Y/N)", "系統(tǒng)提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
            {
                try
                {
                    ShutdownWinIo();//卸載WinIO
                }
                catch (System.Exception error)
                {//WinIO卸載失敗異常
                    if (DllLoadResult)
                    {
                        MessageBox.Show(error.Message, "系統(tǒng)提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                e.Cancel = false;//允許退出系統(tǒng)
            }
            else
            {
                e.Cancel = true;//阻止退出系統(tǒng)
                this.WindowState = System.Windows.Forms.FormWindowState.Normal;
                this.Visible = false;//隱藏窗體轉(zhuǎn)換
                notifyIcon1.Icon = System.Drawing.Icon.ExtractAssociatedIcon("Power.ico");//顯示隱藏的托盤圖標(biāo)
//                MessageBox.Show("請從系統(tǒng)托盤中退出!!!", "系統(tǒng)提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }
        private void timer1_Tick(object sender, EventArgs e)
        {//Timer定時(shí)到事件
            toolStripStatusLabel3.Text = System.DateTime.Now.ToString();
            if (toolStripProgressBar1.Value < toolStripProgressBar1.Maximum)
            {
                toolStripProgressBar1.Value += toolStripProgressBar1.Step;
            }
            else
            {
                toolStripProgressBar1.Value = toolStripProgressBar1.Minimum;
            }
        }
        private void button2_Click(object sender, EventArgs e)
        {//WinIO讀操作
            int pdwPortVal = 0;
            try
            {
                uint wPortAddr = Convert.ToUInt32(comboBox1.Text, 16);
                if (GetPortVal((IntPtr)wPortAddr, out pdwPortVal, sizeof(byte)))
                {
                    textBox2.Text = string.Format("{0:X02}", (byte)pdwPortVal);
                }
                else
                {
                    MessageBox.Show("WinIO讀操作失敗!!!", "系統(tǒng)提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            catch (System.Exception error)
            {//讀出操作異常處理
                MessageBox.Show(error.Message, "系統(tǒng)提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            for (int i = 8; i >= 1; i--)
            {
                ((CheckBox)this.Controls.Find("checkBox" + i, true)[0]).Checked = (pdwPortVal & (1 << (8 - i))) != 0;
            }
/*
            for (int i = 0; i < 8; i++)
            {
                switch (i)
                {
                    case 0:
                        checkBox8.Checked = (pdwPortVal & (1 << i)) != 0;
                        break;
                    case 1:
                        checkBox7.Checked = (pdwPortVal & (1 << i)) != 0;
                        break;
                    case 2:
                        checkBox6.Checked = (pdwPortVal & (1 << i)) != 0;
                        break;
                    case 3:
                        checkBox5.Checked = (pdwPortVal & (1 << i)) != 0;
                        break;
                    case 4:
                        checkBox4.Checked = (pdwPortVal & (1 << i)) != 0;
                        break;
                    case 5:
                        checkBox3.Checked = (pdwPortVal & (1 << i)) != 0;
                        break;
                    case 6:
                        checkBox2.Checked = (pdwPortVal & (1 << i)) != 0;
                        break;
                    case 7:
                        checkBox1.Checked = (pdwPortVal & (1 << i)) != 0;
                        break;
                }
            }
*/
        }
        private void Form1_Load(object sender, EventArgs e)
        {//delphi一般在此初始化
            /*在窗體屬性內(nèi)設(shè)置下列3項(xiàng),基于控件的設(shè)計(jì)應(yīng)該在組建的屬性欄內(nèi)改寫(以下是“VC轉(zhuǎn)業(yè)兵的做法”)
                this.ShowInTaskbar = false;//圖標(biāo)不出現(xiàn)任務(wù)條內(nèi)
                this.MaximizeBox = false;
                this.MinimizeBox = false;
                notifyIcon1.ContextMenuStrip = contextMenuStrip1;
                notifyIcon1.Icon = System.Drawing.Icon.ExtractAssociatedIcon("Hot.ico");
            */
            try
            {
                DllLoadResult = InitializeWinIo();//加載WinIO
            }
            catch (System.Exception error)
            {//WinIO加載失敗異常處理
                MessageBox.Show(error.Message, "系統(tǒng)提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            if (!DllLoadResult)
            {//加載WinIO失敗
                Application.Exit();//退出系統(tǒng),同Close()方法
            }
       }
        private void button1_Click(object sender, EventArgs e)
        {//WinIO寫操作
            try
            {
                uint wPortAddr = Convert.ToUInt32(comboBox1.Text, 16);
                int pdwPortVal = Convert.ToInt32(textBox1.Text, 16);
                if (!SetPortVal(wPortAddr, (IntPtr)pdwPortVal, sizeof(byte)))
                {
                    MessageBox.Show("WinIO寫入操作失敗!!!", "系統(tǒng)提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            catch (System.Exception error)
            {//寫入操作異常處理
                MessageBox.Show(error.Message, "系統(tǒng)提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }
        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {//與delphi一樣的處理方法
            char ch = char.ToUpper(e.KeyChar);//轉(zhuǎn)換為大寫字母
            if (!((ch >= '0' && ch <= '9') || (ch >= 'A' && ch <= 'F')))
//或        if (!((ch >= (char)Keys.D0 && ch <= (char)Keys.D9) || (ch >= (char)Keys.A && ch <= (char)Keys.F)))
            {
                switch (ch)
                {
                    case (char)Keys.Back://退格
                    case (char)Keys.Enter://回車
                        break;//放過
                    default:
                        e.KeyChar = '\x0';//放棄輸入的非法字符
                        MessageBox.Show("請正確輸入16進(jìn)制數(shù)!!!", "系統(tǒng)提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        break;
                }
            }
            else
            {//合法16進(jìn)制數(shù)
                e.KeyChar = ch;//強(qiáng)制轉(zhuǎn)換為大寫字母
            }
        }
        private void button3_Click(object sender, EventArgs e)
        {//WinIO讀操作
            int pdwPortVal = 0;
            try
            {
                uint wPortAddr = Convert.ToUInt32(comboBox1.Text, 16) + 1;//狀態(tài)口
                if (GetPortVal((IntPtr)wPortAddr, out pdwPortVal, sizeof(byte)))
                {
                    textBox3.Text = string.Format("{0:X02}", (byte)pdwPortVal);
                }
                else
                {
                    MessageBox.Show("WinIO讀操作失敗!!!", "系統(tǒng)提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            catch (System.Exception error)
            {//讀出操作異常處理
                MessageBox.Show(error.Message, "系統(tǒng)提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            for (int i = 9; i <= 16; i++)
            {
                ((CheckBox)this.Controls.Find("checkBox" + i, true)[0]).Checked = (pdwPortVal & (1 << (i - 9))) != 0;
            }
/*
            for (int i = 0; i < 8; i++)
            {
                switch (i)
                {
                    case 0:
                        checkBox9.Checked = (pdwPortVal & (1 << i)) != 0;
                        break;
                    case 1:
                        checkBox10.Checked = (pdwPortVal & (1 << i)) != 0;
                        break;
                    case 2:
                        checkBox11.Checked = (pdwPortVal & (1 << i)) != 0;
                        break;
                    case 3:
                        checkBox12.Checked = (pdwPortVal & (1 << i)) != 0;
                        break;
                    case 4:
                        checkBox13.Checked = (pdwPortVal & (1 << i)) != 0;
                        break;
                    case 5:
                        checkBox14.Checked = (pdwPortVal & (1 << i)) != 0;
                        break;
                    case 6:
                        checkBox15.Checked = (pdwPortVal & (1 << i)) != 0;
                        break;
                    case 7:
                        checkBox16.Checked = (pdwPortVal & (1 << i)) != 0;
                        break;
                }
            }
*/
        }
        private void textBox4_KeyPress(object sender, KeyPressEventArgs e)
        {//與delphi一樣的處理方法
            char ch = char.ToUpper(e.KeyChar);//轉(zhuǎn)換為大寫字母
            if (!((ch >= '0' && ch <= '9') || (ch >= 'A' && ch <= 'F')))
//或        if (!((ch >= (char)Keys.D0 && ch <= (char)Keys.D9) || (ch >= (char)Keys.A && ch <= (char)Keys.F)))
            {
                switch (ch)
                {
                    case (char)Keys.Back://退格
                    case (char)Keys.Enter://回車
                        break;//放過
                    default://捕捉到的非法字符
                        e.KeyChar = '\x0';//放棄輸入的非法字符
                        MessageBox.Show("請正確輸入16進(jìn)制數(shù)!!!", "系統(tǒng)提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        break;
                }
            }
            else
            {//合法16進(jìn)制數(shù)
                e.KeyChar = ch;//強(qiáng)制轉(zhuǎn)換為大寫字母
            }
        }
        private void button4_Click(object sender, EventArgs e)
        {//控制口WinIO寫操作
            try
            {
                uint wPortAddr = Convert.ToUInt32(comboBox1.Text, 16) + 2;//控制口
                int pdwPortVal = Convert.ToInt32(textBox4.Text, 16);
                if (!SetPortVal(wPortAddr, (IntPtr)pdwPortVal, sizeof(byte)))
                {
                    MessageBox.Show("WinIO寫入操作失敗!!!", "系統(tǒng)提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            catch (System.Exception error)
            {//寫入操作異常處理
                MessageBox.Show(error.Message, "系統(tǒng)提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        private void button5_Click(object sender, EventArgs e)
        {//控制口WinIO讀操作
            int pdwPortVal = 0;
            try
            {
                uint wPortAddr = Convert.ToUInt32(comboBox1.Text, 16) + 2;//控制口
                if (GetPortVal((IntPtr)wPortAddr, out pdwPortVal, sizeof(byte)))
                {
                    textBox5.Text = string.Format("{0:X02}", (byte)pdwPortVal);
                }
                else
                {
                    MessageBox.Show("WinIO讀操作失敗!!!", "系統(tǒng)提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            catch (System.Exception error)
            {//讀出操作異常處理
                MessageBox.Show(error.Message, "系統(tǒng)提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            for (int i = 17; i <= 24; i++)
            {
                ((CheckBox)this.Controls.Find("checkBox" + i, true)[0]).Checked = (pdwPortVal & (1 << (i - 17))) != 0;
            }
/*
            for (int i = 0; i < 8; i++)
            {
                switch (i)
                {
                    case 0:
                        checkBox17.Checked = (pdwPortVal & (1 << i)) != 0;
                        break;
                    case 1:
                        checkBox18.Checked = (pdwPortVal & (1 << i)) != 0;
                        break;
                    case 2:
                        checkBox19.Checked = (pdwPortVal & (1 << i)) != 0;
                        break;
                    case 3:
                        checkBox20.Checked = (pdwPortVal & (1 << i)) != 0;
                        break;
                    case 4:
                        checkBox21.Checked = (pdwPortVal & (1 << i)) != 0;
                        break;
                    case 5:
                        checkBox22.Checked = (pdwPortVal & (1 << i)) != 0;
                        break;
                    case 6:
                        checkBox23.Checked = (pdwPortVal & (1 << i)) != 0;
                        break;
                    case 7:
                        checkBox24.Checked = (pdwPortVal & (1 << i)) != 0;
                        break;
                }
            }
*/
        }
        private void xToolStripMenuItem_Click(object sender, EventArgs e)
        {//主菜單內(nèi)退出系統(tǒng)
            SystemExitFlag = false;//只能從托盤退出系統(tǒng)
            Close();//警告后繼續(xù)
//或        Application.Exit();
        }
        private void aToolStripMenuItem_Click(object sender, EventArgs e)
        {//主菜單的幫助
            MessageBox.Show("C#學(xué)習(xí)菜鳥作\nHotPower@126.com", "并口調(diào)試幫助提示", MessageBoxButtons.OK);
        }
        private void textBox3_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar != (char)Keys.Back)//只允許退格建
            {
                MessageBox.Show("不能輸入字符!!!", "系統(tǒng)提示", MessageBoxButtons.OK);
                e.KeyChar = '\0';//不允許輸入字符  
            }
        }
        private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar != (char)Keys.Back)//只允許退格建
            {
                MessageBox.Show("不能輸入字符!!!", "系統(tǒng)提示", MessageBoxButtons.OK);
                e.KeyChar = '\0';//不允許輸入字符  
            }
        }
        private void textBox5_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar != (char)Keys.Back)//只允許退格建
            {
                MessageBox.Show("不能輸入字符!!!", "系統(tǒng)提示", MessageBoxButtons.OK);
                e.KeyChar = '\0';//不允許輸入字符  
            }
        }
        private void notifyIcon1_MouseClick(object sender, MouseEventArgs e)
        {//鼠標(biāo)右鍵系統(tǒng)托盤事件處理
            contextMenuStrip1.Visible = e.Button == MouseButtons.Right;//顯示菜單
        }
        private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
        {//鼠標(biāo)雙擊系統(tǒng)托盤事件處理
            this.Visible = !this.Visible;//隱藏/顯示窗體轉(zhuǎn)換
            if (this.Visible)//準(zhǔn)備顯示窗體
            {//防止最小化不正常顯示窗體
                notifyIcon1.Icon = System.Drawing.Icon.ExtractAssociatedIcon("Hot.ico");
                this.WindowState = System.Windows.Forms.FormWindowState.Normal;
            }
            else
            {
                notifyIcon1.Icon = System.Drawing.Icon.ExtractAssociatedIcon("Power.ico");
            }
        }
        private void ToolStripMenuItem_ExitClick(object sender, EventArgs e)
        {
            SystemExitFlag = true;//只能從托盤退出系統(tǒng)
            Close();//真的退出系統(tǒng)
//或        Application.Exit();
        }
        private void 關(guān)于ToolStripMenuItem_Click(object sender, EventArgs e)
        {
//            System.Diagnostics.Process.Start("Explorer", "http:\\\\www.hotpage.net.cn");//運(yùn)行IE
            System.Diagnostics.Process.Start("http:\\\\www.hotpage.net.cn");//自動啟動IE
        }
        private void Form1_Resize(object sender, EventArgs e)
        {//在Resize事件處理中攔截最小最大消息到托盤
            switch (this.WindowState)
            {
                case FormWindowState.Maximized:
                case FormWindowState.Minimized:
                    this.WindowState = System.Windows.Forms.FormWindowState.Normal;
                    this.Visible = false;//隱藏窗體轉(zhuǎn)換
                    notifyIcon1.Icon = System.Drawing.Icon.ExtractAssociatedIcon("Power.ico");//顯示隱藏的托盤圖標(biāo)
                    break;
            }
        }

    }
}

555ef64e2e.gif" target="_blank">











您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久99国产亚洲高清 | 99视频在线看 | 韩国在线a免费观看网站 | 免费黄色高清视频 | 996免费视频国产在线播放 | 久久精品伊人网 | 亚洲免费成人网 | 亚洲第二区 | 91中文字幕网 | 国产极品麻豆91在线 | 男女午夜视频在线观看 | 欧美午夜片 | 久久综合久久综合久久综合 | 一区二区精品久久 | 69视频在线是免费观看 | 四虎国产永久免费久久 | 欧美成人精品第一区二区三区 | 国产啪| 综合一区自拍亚洲综合图区 | 国产高清一级视频在线观看 | 日产精品卡2卡三卡乱码网址 | 香蕉视频国产精品人 | 青青久在线视频免费观看 | 欧美精品在线看 | 五月婷婷亚洲综合 | 在线观看一级毛片免费 | 神兵小将第一季免费观看 | 中文字幕在线观看日本 | 国内露脸自拍 | 国产欧美曰韩一区二区三区 | 日韩簧片 | 国产成人亚洲精品91专区手机 | 亚洲日本中文字幕永久 | 美女紧身裤裆看光了下面 | 成 人 黄 色 视频免费播放 | 四虎在线视频免费观看视频 | 国产片久久 | 欧美人成片免费看视频不卡 | 精品视频在线观看 | 丁香婷婷在线视频 | 国产欧美日韩在线一区二区不卡 |