吾愛破解 - LCG - LSG |安卓破解|病毒分析|huihengkj.com

 找回密碼
 注冊[Register]

QQ登錄

只需一步,快速開始

搜索
查看: 263|回復: 13

[求助] C#多線程進度條

[復制鏈接]
回帖獎勵 2 CB吾愛幣 回復本帖可獲得 1 CB吾愛幣獎勵! 每人限 1 次(中獎概率 80%)
樓主
lizf2019 發表于 2020-8-1 20:12 回帖獎勵
本帖最后由 lizf2019 于 2020-8-1 20:13 編輯

本人正在做一個模擬xp的項目:



遇到了幾個問題,想在此求助下大佬:








問題1:C#如何實現多線程進度條?(5秒走完)自己弄的進度條拖慢了程序啟動








問題2:C#如何播放音樂資源(將音樂資源包含進程序)








問題3:C#如何指定彈出的提示信息(messagebox)的圖標,按鈕

如:







求大佬解惑,將將您的吾愛用戶名寫入感謝名單

發帖前要善用論壇搜索500彩票邀请码功能,那里可能會有你要找的答案或者已經有人發布過相同內容了,請勿重復發帖。

推薦
 樓主| lizf2019 發表于 2020-8-1 23:15 |樓主
windy_ll 發表于 2020-8-1 22:52
using System;
using System.Collections.Generic;
using System.ComponentModel;

看不太懂哦。
我的意思是多線程進度條,這個源碼真看不懂
推薦
偶爾平凡 發表于 2020-8-1 22:11
沙發
windy_ll 發表于 2020-8-1 20:15
3#
 樓主| lizf2019 發表于 2020-8-1 20:19 |樓主
windy_ll 發表于 2020-8-1 20:15
利用委托事件機制實現,以前做過這種多線程進度條

大佬可否給個源碼
4#
天高路遠 發表于 2020-8-1 21:15
http://blog.csdn.net/huanglin529/article/details/70239387

MessageBox.Show (String, String, MessageBoxButtons, MessageBoxIcon, MessageBoxDefaultButton)
顯示具有指定文本、標題、按鈕、圖標和默認按鈕的消息框。

我技術不高 但愿能幫到你

免費評分

參與人數 1吾愛幣 +2 熱心值 +1 收起 理由
lizf2019 + 2 + 1 謝謝您!

查看全部評分

5#
silverkey 發表于 2020-8-1 21:46

回帖獎勵 +1 CB吾愛幣

MSDN有現成,去抄了改改就能用了
6#
 樓主| lizf2019 發表于 2020-8-1 21:53 |樓主
silverkey 發表于 2020-8-1 21:46
MSDN有現成,去抄了改改就能用了

大佬可否給個鏈接
8#
windy_ll 發表于 2020-8-1 22:52

回帖獎勵 +1 CB吾愛幣

lizf2019 發表于 2020-8-1 20:19
大佬可否給個源碼

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Threading;
using System.Runtime.InteropServices;
using System.Collections;
using System.Diagnostics;

namespace RC4文件加解密
{
    public partial class Form1 : Form
    {

        delegate void AsynUpdateUI(int step);
        public int openAexitMark = 0;

        public Form1()
        {
            InitializeComponent();
        }

        private void GroupBox1_Enter(object sender, EventArgs e)
        {

        }

        private void Button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.InitialDirectory = "D:\\";
            openFileDialog.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
            openFileDialog.FilterIndex = 2;
            openFileDialog.RestoreDirectory = true;
            if(openFileDialog.ShowDialog() == DialogResult.OK)
            {
                this.textBox1.Text = openFileDialog.FileName;
                this.textBox3.AppendText("[+] " + DateTime.Now.ToLocalTime().ToString() + " 選擇了文件" + openFileDialog.FileName + "\r\n");
            }
        }

        private void Button2_Click(object sender, EventArgs e)
        {
            int checkresult;
            checkresult = check();
            if (checkresult == 1)
            {
                int flag;
                int mark = 0;
                flag = init();
                if(flag == 1 || flag == 3)
                {
                    mark = 1;
                }
                eadThread ead = new eadThread(this.textBox2.Text, this.textBox1.Text,mark);
                ead.UpdateUIDelegate += UpdataUIStatus;
                Thread thread1 = new Thread(new ThreadStart(ead.execEaD));
                thread1.Start();
            }
            else if(checkresult == 0)
            {
                MessageBox.Show("請選擇待加密文件以及密鑰!", "提示");
            }
            else if(checkresult == 2)
            {
                MessageBox.Show("請選擇待加密文件!", "提示");
            }
            else
            {
                MessageBox.Show("請輸入密鑰!", "提示");
            }
        }

        public int init()
        {
            int flag = 0;
            this.progressBar1.Value = 0;
            this.label4.Text = this.progressBar1.Value.ToString() + "%";
            if(this.checkBox1.Checked == true && this.checkBox2.Checked == true)
            {
                flag = 3;
                this.openAexitMark = 1;
            }
            else if(this.checkBox1.Checked == true && this.checkBox2.Checked == false)
            {
                flag = 1;
            }
            else if(this.checkBox1.Checked == false && this.checkBox2.Checked == true)
            {
                flag = 2;
                this.openAexitMark = 1;
            }
            else
            {
                flag = 0;
            }
            return flag;
        }

        public int check()
        {
            int flag = 0;
            if(this.textBox1.Text != "" && this.textBox2.Text != "")
            {
                flag = 1;
            }
            else if(this.textBox1.Text == "" && this.textBox2.Text != "")
            {
                flag = 2;
            }
            else if(this.textBox1.Text != "" && this.textBox2.Text == "")
            {
                flag = 3;
            }
            else
            {
                flag = 0;
            }
            return flag;
        }

        private void UpdataUIStatus(int step)
        {
            if (InvokeRequired)
            {
                this.Invoke(new AsynUpdateUI(delegate (int s)
                {
                    this.progressBar1.Value = step;
                    this.label4.Text = this.progressBar1.Value.ToString() + "%";
                    if (step == 10)
                    {
                        this.textBox3.AppendText("[+] " + DateTime.Now.ToLocalTime().ToString() + " 進入子線程,開始執行加解密操作\r\n");
                    }
                    else if(step == 20)
                    {
                        this.textBox3.AppendText("[+] " + DateTime.Now.ToLocalTime().ToString() + " 密鑰初始化完成\r\n");
                    }
                    else if(step == 40)
                    {
                        this.textBox3.AppendText("[+] " + DateTime.Now.ToLocalTime().ToString() + " 開始調用DLL導出函數\r\n");
                    }
                    else if(step == 90)
                    {
                        this.textBox3.AppendText("[+] " + DateTime.Now.ToLocalTime().ToString() + " 文件加解密操作完成\r\n");
                    }
                    else if(step == 100)
                    {
                        this.textBox3.AppendText("[+] " + DateTime.Now.ToLocalTime().ToString() + " 打開文件夾操作(退出程序操作)完成\r\n");
                        MessageBox.Show("文件加解密成功!", "提示");
                        if (this.openAexitMark == 1)
                        {
                            Process.GetCurrentProcess().Kill();
                        }
                    }
                }), step);
            }
            else
            {
                this.progressBar1.Value = step;
                this.label4.Text = this.progressBar1.Value.ToString() + "%";
            }
        }

        private void Button3_Click(object sender, EventArgs e)
        {
            int checkresult;
            checkresult = check();
            if (checkresult == 1)
            {
                int flag;
                int mark = 0;
                flag = init();
                if (flag == 1 || flag == 3)
                {
                    mark = 1;
                }
                eadThread ead = new eadThread(this.textBox2.Text, this.textBox1.Text, mark);
                ead.UpdateUIDelegate += UpdataUIStatus;
                Thread thread1 = new Thread(new ThreadStart(ead.execEaD));
                thread1.Start();
            }
            else if (checkresult == 0)
            {
                MessageBox.Show("請選擇待加密文件以及密鑰!", "提示");
            }
            else if (checkresult == 2)
            {
                MessageBox.Show("請選擇待加密文件!", "提示");
            }
            else
            {
                MessageBox.Show("請輸入密鑰!", "提示");
            }
        }
    }


    class eadThread
    {
        public delegate void UpdateUI(int step);
        public UpdateUI UpdateUIDelegate;

        private string filename;
        private ArrayList arr = new ArrayList();
        private int flag;

        [DllImport("RC4.dll", EntryPoint = "rc4", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]

        public static extern int rc4(int[] key, string filename, int keylen);

        public eadThread(string KEY, string file, int mark)
        {
            char[] temp = KEY.ToCharArray();
            for (int i = 0; i < temp.Length; i++)
            {
                arr.Add((int)temp);
            }
            this.filename = file;
            this.flag = mark;
        }

        public void execEaD()
        {
            UpdateUIDelegate(10);
            int[] key = new int[arr.Count];
            for (int i = 0; i < arr.Count; i++)
            {
                key = (int)arr;
            }
            UpdateUIDelegate(20);
            int len = key.Length;
            UpdateUIDelegate(40);
            int result = rc4(key, this.filename, len);
            UpdateUIDelegate(90);
            if (this.flag == 1)
            {
                openFile(this.filename);
            }
            UpdateUIDelegate(100);
        }

        public void openFile(string filename)
        {
            Process p = new Process();
            p.StartInfo.FileName = "explorer.exe";
            p.StartInfo.Arguments = " /e,/select," + filename;
            p.Start();
        }

    }
}
9#
liouxin 發表于 2020-8-1 22:57

回帖獎勵 +1 CB吾愛幣

本帖最后由 liouxin 于 2020-8-2 00:23 編輯

該內容已刪除
內容已刪除
10#
 樓主| lizf2019 發表于 2020-8-1 23:11 |樓主
liouxin 發表于 2020-8-1 22:57
【樓主說的是這種嗎?】

這個是?
您需要登錄后才可以回帖 登錄 | 注冊[Register]

本版積分規則 警告:本版塊禁止回復與主題無關非技術內容,違者重罰!

快速回復 收藏帖子 返回列表 搜索

RSS訂閱|小黑屋|聯系我們|吾愛破解 - LCG - LSG ( )

GMT+8, 2020-8-4 03:14

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回復 返回頂部 返回列表

500彩票邀請碼-彩經網