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

📄 wppapplication.cs

📁 工作时用C#编写的WPS密码测试工具,主要用于测试与MSO文件兼容(IO)而写的.功能主要是由MSO文件加密.WPS打开,再由WPS加密,再由MSO打开.每个加密都是根据文件加密类型来加的,此代码.与
💻 CS
字号:
using System;
using System.IO;
using System.Threading;
using System.Diagnostics;
using System.Runtime.InteropServices;
using v6SmokeTest;
using v6SmokeTest.PasswordTest.PlugIn.Global;

namespace v6SmokeTest.PasswordTest.PlugIn
{
	/// <summary>
	/// WPP应用程序服务类
	/// </summary>
	public class WPPApplication
	{
		static private WPP.Presentation m_pWPPPres = null;
		static private WPP.Application m_pWPPApp = null;
		static private CaptureException m_pCapEx = null;

		/// <summary>
		/// 构造函数
		/// </summary>
		public WPPApplication()
		{
		}
		/// <summary>
		/// 传递关闭异常类对象指针
		/// </summary>
		static public CaptureException SetCaptureException
		{set{m_pCapEx = value;}}
		/// <summary>
		/// 创建应用程序实例
		/// </summary>
		/// <param name="showWin">是否显示程序主窗口</param>
		/// <returns>返回启动是否成功</returns>
		static public bool StartProcess(bool showWin)
		{
			bool _blResult = false;
			Thread _pThread = new Thread(new ThreadStart(CloseExcDlg));
			_pThread.Priority = ThreadPriority.Lowest;
			_pThread.Start();
			try
			{
				m_pWPPApp = new WPP.ApplicationClass();
				if(showWin)
					m_pWPPApp.Visible = KSO.KsoTriState.ksoTrue;
				else
					m_pWPPApp.Visible = KSO.KsoTriState.ksoFalse;
				_blResult = true;
			}
			catch
			{_blResult = false;}
			try
			{
				_pThread.Abort();
				_pThread = null;
			}
			catch{}
			return _blResult;
		}
		/// <summary>
		/// 打开文件
		/// </summary>
		/// <param name="strFilename">打开的文件名</param>
		/// <param name="password">打开文件时的密码</param>
		/// <returns>返回打开成功与否</returns>
		static public bool OpenFile(string strFilename, string password)
		{
			int _nTryTimes = 0;
			bool _blResult = false;
			Thread _pThread = new Thread(new ThreadStart(CloseExcDlg));
			_pThread.Priority = ThreadPriority.Lowest;
			_pThread.Start();
		OpenFileTest:
			try
			{
				m_pWPPPres = m_pWPPApp.Presentations.Open(strFilename, password,
					KSO.KsoTriState.ksoFalse, KSO.KsoTriState.ksoFalse, KSO.KsoTriState.ksoTrue);
				_blResult = true;
			}
			catch
			{
				if(_nTryTimes < 5)
				{
					APIIntegrate.SleepSomeSecond("1000");
					_nTryTimes ++;
					goto OpenFileTest;
				}
				else
					_blResult = false;
			}
			try
			{
				_pThread.Abort();
				_pThread = null;
			}
			catch{}
			return _blResult;
		}
		/// <summary>
		/// 处理输入密码对话框等异常对话框线程
		/// </summary>
		static private void CloseExcDlg()
		{
			while(1 == 1)
			{
				IntPtr _nHwnd = APIIntegrate.FindWindow("bosa_sdm_Microsoft Office Word 11.0", "密码");
				if(_nHwnd != IntPtr.Zero)
					APIIntegrate.CloseWindow(_nHwnd);
				APIIntegrate.SleepSomeSecond("500");
				m_pCapEx.CloseExcepWin("PasswordTest", String.Empty);
				APIIntegrate.SleepSomeSecond("500");
			}
		}
		/// <summary>
		/// 转存文件
		/// </summary>
		/// <param name="targetFilename">转存为的文件名</param>
		/// <param name="provider">加密类型的提供者</param>
		/// <param name="name">加密类型名</param>
		/// <param name="password">密码信息</param>
		/// <returns>返回转存是否成功</returns>
		static public bool SaveAs(string targetFilename, string provider, string name, PasswordInf password)
		{
			bool _blResult = false;
			int _nTryTimes = 0;
			Thread _pThread = new Thread(new ThreadStart(CloseExcDlg));
			_pThread.Priority = ThreadPriority.Lowest;
			_pThread.Start();
		SaveAsFileTest:
			try
			{
				m_pWPPPres.SetPasswordEncryptionOptions(provider, name, password.Length,
					password.EncryFilePro);
				m_pWPPPres.Password = password.Password;
				m_pWPPPres.SaveAs(targetFilename, String.Empty, WPP.WpSaveAsFileType.wpSaveAsDefault, KSO.KsoTriState.ksoTrue);
				_blResult = true;
			}
			catch
			{
				if(_nTryTimes < 5)
				{
					APIIntegrate.SleepSomeSecond("1000");
					_nTryTimes ++;
					goto SaveAsFileTest;
				}
				else
					_blResult = false;
			}
			try
			{
				_pThread.Abort();
				_pThread = null;
			}
			catch{}
			if(_blResult && File.Exists(targetFilename))
				return true;
			else
				return false;
		}
		/// <summary>
		/// 杀掉进程
		/// </summary>
		static public void DestroyProcess()
		{
			try
			{
				foreach(Process _pProcess in Process.GetProcessesByName("wpp"))
					_pProcess.Kill();
			}
			catch
			{}
		}
		/// <summary>
		/// 关闭文档
		/// </summary>
		/// <returns>返回关闭成功与否</returns>
		static public bool CloseDocument()
		{
			try
			{
				m_pWPPPres.Close();
				return true;
			}
			catch
			{return false;}
		}
	}
}

⌨️ 快捷键说明

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