【基于C# winform 界面拖拽pdf文件+调用Qpdf的小程序解密后+另存到新文件夹】代码

C# WinForm
C#拖拽文件
C#获取exe程序所在目录上上上级目录
C#复制单个文件并保存
C#复制某文件夹内文件到另一文件夹

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.IO;
using System.Diagnostics;namespace WinFormsApp1 {public partial class Form1 : Form {public Form1() {InitializeComponent();}void Init() {this.AllowDrop = true; //设置为允许拖拽}private void ListView1_DragEnter(object sender, DragEventArgs e) {if (e.Data.GetDataPresent(DataFormats.FileDrop)) {e.Effect = DragDropEffects.Link;}else {e.Effect = DragDropEffects.None;}}string str01;private void ListView1_DragDrop(object sender, DragEventArgs e) {IDataObject ido = e.Dataif (ido.GetDataPresent(DataFormats.FileDrop))       //如果拖动的数据是文件类型{string[] filepaths = (string[])ido.GetData(DataFormats.FileDrop);  //获取文件的路径DirectoryInfo info = new DirectoryInfo(Application.StartupPath);string exePath = info.Parent.Parent.Parent.FullName;//上上上级目录string paths01 = Path.Combine(exePath, "output");System.IO.Directory.CreateDirectory(paths01);//在上上上级目录下创建output文件夹,如果存在也不会重复创建01DirectoryInfo dir01 = new DirectoryInfo(paths01);dir01.Delete(true);//删除output文件夹System.IO.Directory.CreateDirectory(paths01);//创建onput文件夹,如果存在也不会重复创建01string paths02 = Path.Combine(exePath, "input");System.IO.Directory.CreateDirectory(paths02);//创建input文件夹,如果存在也不会重复创建02DirectoryInfo dir02 = new DirectoryInfo(paths02);dir02.Delete(true);//删除input文件夹System.IO.Directory.CreateDirectory(paths02);//创建input文件夹,如果存在也不会重复创建02//执行我们想要执行的业务逻辑,读取复制等等。foreach (var item in filepaths) {string extension = System.IO.Path.GetExtension(item);//string A = ".pdf";if (String.Compare(extension, A) == 0) {FileInfo f = new FileInfo(item);string fname = Path.GetFileName(item);//带扩展名的文件名string paths03 = Path.Combine(paths02, fname);//路径与文件名合并为新路径paths03f.CopyTo(paths03);//单个文件复制到paths03 ;因为paths03是包含“带扩展名的文件名”的存储路径,故复制的文件不会重命名,文件名与原文件一致                       }else {MessageBox.Show("error!");str01 = "0";}}Process proc = null;try {string targetDir = string.Format(exePath);//需调用的程序 unlockpdf.bat 在目录exePath中proc = new Process();proc.StartInfo.WorkingDirectory = targetDir;proc.StartInfo.FileName = "unlockpdf.bat";proc.StartInfo.Arguments = string.Format("10");//this is argument//调用程序时的参数proc.StartInfo.CreateNoWindow = true;proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;//这里设置DOS窗口不显示,经实践可行proc.Start();proc.WaitForExit();}catch (Exception ex) {Console.WriteLine("Exception Occurred :{0},{1}", ex.Message, ex.StackTrace.ToString());}// MessageBox.Show("解除密码完成!");if (String.Compare(str01, "0") != 0) {FolderBrowserDialog dilog = new FolderBrowserDialog();dilog.Description = "请选择保存解密结果文件夹";if (dilog.ShowDialog() == DialogResult.OK || dilog.ShowDialog() == DialogResult.Yes) {string saveDirPath = dilog.SelectedPath;try {if (!Directory.Exists(saveDirPath)) {Directory.CreateDirectory(saveDirPath);}string[] files = Directory.GetFiles(paths01);//获取output文件夹里的所有文件foreach (string file in files) {string pFilePath = saveDirPath + "\\" + Path.GetFileName(file);if (File.Exists(pFilePath))continue;File.Copy(file, pFilePath, true);//将文件保存到选择的文件夹}}catch (Exception ex) {MessageBox.Show(ex.Message);}}}}else {MessageBox.Show("error!");}}}
}

本人C#小白,摸索查询了一整天搞了这个东东。
用途与背景:PDF文档密码破解(https://zhuanlan.zhihu.com/p/74141259)
压缩文件:PDFunlocker界面+【Qpdf】version-8.4.2-64.zip
效果图如下:

C# WinForm拖拽文件+获取exe程序所在目录上上上级目录+复制单个文件并保存+复制某文件夹内文件到另一文件夹相关推荐

  1. android可拖拽九宫格,微信小程序实现九宫格图片拖拽

    (在真机上的效果就不演示了,是差不多的) 实现思路 布局 在这里运用到了微信小程序的moveable-area和moveable-view两个标签. moveable-area是可拖拽的区域,需要设置 ...

  2. qt 获取当前程序运行路径_Qt 程序获取程序所在路径、用户目录路径、临时文件夹等特殊路径的方法...

    Qt 程序获取程序所在路径.用户目录路径.临时文件夹等特殊路径的方法 经常我们的程序中需要访问一些特殊的路径,比如程序所在的路径.用户目录路径.临时文件夹等.在 Qt 中实现这几个功能所用的方法虽然都 ...

  3. Qt 程序获取程序所在路径、用户目录路径、临时文件夹等特殊路径的方法

    Qt 程序获取程序所在路径.用户目录路径.临时文件夹等特殊路径的方法 经常我们的程序中需要访问一些特殊的路径,比如程序所在的路径.用户目录路径.临时文件夹等.在 Qt 中实现这几个功能所用的方法虽然都 ...

  4. MFC获取应用程序所在目录--CString(Left、Right、Find、ReverseFind)--Cstring与char或wchar转换

    一.CString--Left.Right.Find.ReverseFind CString--Left.Right.Find.ReverseFind CString::Left(intnCount) ...

  5. java获取上级目录_Java如何获取文件的父目录或上级目录?

    在Java程序中,如何获取文件的父目录或上级目录? 以下示例显示如何使用File类的file.getParent()方法获取文件的父目录. package com.yiibai; import jav ...

  6. Python 获取当前文件 当前目录 上级目录 上上级目录

    Python 获取当前文件 当前目录 上级目录 上上级目录 文章目录 Python 获取当前文件 当前目录 上级目录 上上级目录 前言 一.获取当前文件 二.获取当前目录 三.读入数据 四.获取上上级 ...

  7. python 获取当前目录 上一级目录 上上一级目录

    一 目录层级关系如下图 当前py文件为当前目录下的python.py 二 获取当前目录  上级目录  上上级目录 import osprint('***获取当前目录***') print(" ...

  8. Python - 获取当前目录/上级目录/上上级目录

    / 前言 / 我们在Python开发中时常需要读取配置文件.获取当前文件所在路径, 本文将会介绍Python获取当前目录/上级目录/上上级目录-等操作        Python脚本编译时使用的是Py ...

  9. js控制文件拖拽,获取拖拽内容。

    在用户拖拽文件到浏览器的某个元素上时,js可以监听到与拖拽相关的事件,并对拖拽结果进行处理,本文讨论下和拖拽文件相关的一些问题,不过没有处理太多关于兼容性的问题. 拖拽事件 js能够监听到拖拽的事件有 ...

  10. js控制文件拖拽,获取拖拽内容

    在用户拖拽文件到浏览器的某个元素上时,js可以监听到与拖拽相关的事件,并对拖拽结果进行处理,本文讨论下和拖拽文件相关的一些问题,不过没有处理太多关于兼容性的问题. 拖拽事件 js能够监听到拖拽的事件有 ...

最新文章

  1. python信用卡违约_Python信用卡验证
  2. MBG 相关资源链接
  3. php 检测网络,PHP+Ajax 检测网络是否正常实例详解
  4. 【STM32】OLED 显示实验代码详解
  5. Spring LDAP 2.0.0发布
  6. 成本管控难题怎么破?BI大神带你一步步拆解分析,节省成本390万
  7. java super.getclass_Java Class 类 getSuperClass()方法及示例
  8. preg_match进行正则表达式匹配
  9. 读书笔记_打开量化投资的黑箱06
  10. 忽略这一点,人工智能变人工智障的!
  11. EBS AP 创建会计科目失败
  12. javascript创建对象过程
  13. 读书笔记:-----《第四次工业革命转型的力量》
  14. aws php 上传文件 限制大小_单个文件大小 上传百度云盘 微信发送 有大小限制 怎么破?...
  15. 人工智能时代创造少儿编程实用能力
  16. Git系列(五):Git Flow
  17. 45-网上商城数据库-商品分类数据操作(二)
  18. 小米手机怎么关闭移动卡信号显示无服务器,一条指令代码教你解决小米手机信号和待机问题...
  19. 转自BMY 海量数据的处理
  20. 海思A182-Hi3516DV300推流摄像头数据

热门文章

  1. 《信息与编码》考试复习笔记6----第六章连续信源熵和信道容量相关例题
  2. Matlab:实现菲涅尔矩形孔衍射仿真
  3. 华为网络技术大赛笔记——存储器基础原理
  4. c++编写浪漫烟花 表白代码大全
  5. Ubuntu16.04安装Hadoop2.7.3教程
  6. Android开发--内容提供者(Content provider)
  7. android Textview属性细节以及EditText属性
  8. siamfc代码解读_SiamFC用于目标跟踪的全卷积孪生网络 fully-convolutional siame
  9. Opencv3 core模块解析之convertTo
  10. 解决python的OverflowError: int too large to convert to float