⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filedisassemblerwindow.cs

📁 VS.NET2003插件开发电子书
💻 CS
📖 第 1 页 / 共 2 页
字号:
			this.cbProjectType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
			this.cbProjectType.Items.AddRange(new object[] {
															   "None",
															   "Class Library",
															   "Windows Application",
															   "Console Application"});
			this.cbProjectType.Location = new System.Drawing.Point(288, 12);
			this.cbProjectType.Name = "cbProjectType";
			this.cbProjectType.Size = new System.Drawing.Size(132, 21);
			this.cbProjectType.TabIndex = 1;
			// 
			// outputDirectoryText
			// 
			this.outputDirectoryText.Anchor = ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
				| System.Windows.Forms.AnchorStyles.Right);
			this.outputDirectoryText.Location = new System.Drawing.Point(8, 40);
			this.outputDirectoryText.Name = "outputDirectoryText";
			this.outputDirectoryText.Size = new System.Drawing.Size(328, 20);
			this.outputDirectoryText.TabIndex = 0;
			this.outputDirectoryText.Text = "";
			this.outputDirectoryText.TextChanged += new System.EventHandler(this.OutputDirectoryText_TextChanged);
			// 
			// progressBar
			// 
			this.progressBar.Anchor = ((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) 
				| System.Windows.Forms.AnchorStyles.Right);
			this.progressBar.Location = new System.Drawing.Point(8, 424);
			this.progressBar.Name = "progressBar";
			this.progressBar.Size = new System.Drawing.Size(416, 23);
			this.progressBar.TabIndex = 6;
			this.progressBar.TabStop = false;
			this.progressBar.Visible = false;
			// 
			// outputDirectoryLabel
			// 
			this.outputDirectoryLabel.FlatStyle = System.Windows.Forms.FlatStyle.System;
			this.outputDirectoryLabel.Location = new System.Drawing.Point(8, 16);
			this.outputDirectoryLabel.Name = "outputDirectoryLabel";
			this.outputDirectoryLabel.Size = new System.Drawing.Size(100, 16);
			this.outputDirectoryLabel.TabIndex = 0;
			this.outputDirectoryLabel.Text = "&Output Directory:";
			// 
			// generateButton
			// 
			this.generateButton.Anchor = (System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right);
			this.generateButton.FlatStyle = System.Windows.Forms.FlatStyle.System;
			this.generateButton.Location = new System.Drawing.Point(344, 40);
			this.generateButton.Name = "generateButton";
			this.generateButton.Size = new System.Drawing.Size(75, 21);
			this.generateButton.TabIndex = 2;
			this.generateButton.Text = "&Generate";
			this.generateButton.Click += new System.EventHandler(this.GenerateButton_Click);
			// 
			// logTextBox
			// 
			this.logTextBox.Anchor = (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
				| System.Windows.Forms.AnchorStyles.Left) 
				| System.Windows.Forms.AnchorStyles.Right);
			this.logTextBox.Location = new System.Drawing.Point(8, 72);
			this.logTextBox.MaxLength = 16777216;
			this.logTextBox.Multiline = true;
			this.logTextBox.Name = "logTextBox";
			this.logTextBox.ReadOnly = true;
			this.logTextBox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
			this.logTextBox.Size = new System.Drawing.Size(416, 344);
			this.logTextBox.TabIndex = 5;
			this.logTextBox.Text = "";
			this.logTextBox.Visible = false;
			this.logTextBox.WordWrap = false;
			// 
			// FileDisassemblerWindow
			// 
			this.Controls.AddRange(new System.Windows.Forms.Control[] {
																		  this.lnkHomepage,
																		  this.label7,
																		  this.groupBox4});
			this.Name = "FileDisassemblerWindow";
			this.Size = new System.Drawing.Size(464, 592);
			this.groupBox4.ResumeLayout(false);
			this.panel1.ResumeLayout(false);
			this.groupBox1.ResumeLayout(false);
			this.ResumeLayout(false);

		}
		#endregion

		private void lnkHomepage_LinkClicked(object sender, System.Windows.Forms.LinkLabelLinkClickedEventArgs e)
		{
			ProcessStartInfo sInfo = new ProcessStartInfo("iexplore.exe", "-new " + lnkHomepage.Text);
			Process.Start(sInfo);
		}

		public IAssemblyBrowser AssemblyBrowser
		{
			get { return _assemblyBrowser; }
			set
			{
				if (_assemblyBrowser != null)
				{
					_assemblyBrowser.ActiveItemChanged -= new EventHandler(AssemblyBrowser_ActiveItemChanged);
				}

				_assemblyBrowser = value;

				if (_assemblyBrowser != null)
				{
					_assemblyBrowser.ActiveItemChanged += new EventHandler(AssemblyBrowser_ActiveItemChanged);
				}
			}
		}

		protected override void OnParentChanged(EventArgs e)
		{
			base.OnParentChanged(e);

			outputDirectoryText.Enabled = true;
			generateButton.Enabled = true;

			logTextBox.Visible = false;
			progressBar.Visible = false;

			AssemblyBrowser_ActiveItemChanged(this, EventArgs.Empty);
		}

		private void GenerateButton_Click(object sender, System.EventArgs e)
		{
			outputDirectoryText.Enabled = false;
			generateButton.Enabled = false;
			cbProjectType.Enabled = false;

			string outputDirectory = Path.Combine(Environment.CurrentDirectory, Environment.ExpandEnvironmentVariables(outputDirectoryText.Text));

			try
			{
				if (!Directory.Exists(outputDirectory))
				{
					Directory.CreateDirectory(outputDirectory);
				}
			}
			catch(IOException)
			{
				MessageBox.Show("Invalid path. Please enter a correct path", "Invalid Path", MessageBoxButtons.OK);
			}
			catch(NotSupportedException)
			{
				MessageBox.Show("Invalid path. Please enter a correct path", "Invalid Path", MessageBoxButtons.OK);
			}

			logTextBox.Text = string.Empty;
			logTextBox.Visible = true;
			progressBar.Value = 0;
			progressBar.Visible = true;

			FileDisassemblerHelper helper = new FileDisassemblerHelper(
				AssemblyManager, TranslatorManager, LanguageManager, cbProjectType.SelectedIndex, outputDirectory,
				new FileDisassemblerHelper.WriteLineDelegate(WriteLine),
				new FileDisassemblerHelper.SetProgressBarDelegate(SetProgressBar));
				
			int exceptions = helper.GenerateCode(_assemblyBrowser.ActiveItem);

			WriteLine(string.Format("{0} error(s).", exceptions));
			WriteLine("Done.");

			progressBar.Value = 100;
			outputDirectoryText.Enabled = true;
			generateButton.Enabled = true;
			cbProjectType.Enabled = true;
		}

		private void SetProgressBar(int pos)
		{
			progressBar.Value = pos;
		}

		private void WriteLine(string text)
		{
			logTextBox.Focus();
			logTextBox.AppendText(text + Environment.NewLine);
			logTextBox.ScrollToCaret();
			System.Windows.Forms.Application.DoEvents();
		}

		private void AssemblyBrowser_ActiveItemChanged(object sender, EventArgs e)
		{
			IAssembly assembly = _assemblyBrowser.ActiveItem as IAssembly;
			ITypeDeclaration typeDeclaration = _assemblyBrowser.ActiveItem as ITypeDeclaration;
			if ((assembly != null) && (assembly.Location != null) && (assembly.Location.Length != 0))
			{
				string folderName = assembly.Name + "_Source";
				outputDirectoryText.Text = Path.Combine(Path.GetDirectoryName(assembly.Location), folderName);
				outputDirectoryText.Enabled = true;
				generateButton.Enabled = true;
				cbProjectType.SelectedIndex = 1;
				cbProjectType.Enabled = true;
			}
			else if (typeDeclaration != null)
			{
				outputDirectoryText.Text = "";
				outputDirectoryText.Enabled = true;
				generateButton.Enabled = true;
				cbProjectType.SelectedIndex = 0;
				cbProjectType.Enabled = true;
			}
			else
			{
				outputDirectoryText.Text = "<No assembly selected>";
				outputDirectoryText.Enabled = false;
				generateButton.Enabled = false;
				cbProjectType.SelectedIndex = -1;
				cbProjectType.Enabled = false;
			}
		}

		private void OutputDirectoryText_TextChanged(object sender, EventArgs e)
		{
			generateButton.Enabled = ((outputDirectoryText.Text != null) && (outputDirectoryText.Text.Length != 0));
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -