C# 如何实现文件下载(类似百度云的复制粘贴)

zq1564171310 2015-02-02 10:29:21
如何实现在云盘应用程序里面复制(实际是下载过程),到Windows中实现粘贴。
有两个地方不太会:
1.如何捕捉用户在window中的粘贴动作(触发复制粘贴操作的时间)
2.如何获取当前windows系统中获取焦点的路径(用户需要复制的目的路径)
...全文
720 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
zq1564171310 2017-05-27
  • 打赏
  • 举报
回复
可能没写清楚,但是第一次总结,文采不怎样,大致应该能看懂,要研究的人将就着看吧。
zq1564171310 2017-05-27
  • 打赏
  • 举报
回复
http://blog.csdn.net/zq1564171310/article/details/72770507 一直没想过总结,最近换工作,刚好有时间,总结下以前的东西,附上链接
zq1564171310 2015-02-10
  • 打赏
  • 举报
回复
结贴散分了,估计不太可能实现,要不然这类软件就满天飞了,希望后续有知道的人能分享一下,不甚感激!
cde32 2015-02-07
  • 打赏
  • 举报
回复
同问 帮顶
Eiceblue 2015-02-06
  • 打赏
  • 举报
回复
有关C#捕捉键盘输入或动作:http://wenku.baidu.com/link?url=C006eBNPgQHaDDj-W2ovFN5Awsha1lV9DvC6Td_sa066KDyt4A1gRET85a_ZBfXw4SgbkYBfoTtD06NJnvDlJWpm380raUE8o-E_voGgphy
zq1564171310 2015-02-04
  • 打赏
  • 举报
回复
引用 8 楼 wyd1520 的回复:
http://www.cnblogs.com/over140/archive/2007/11/05/934452.html
这个只有CTRL+V 系统粘贴动作有很多,如右键菜单粘贴,拖拽,CTRL+移动,甚至命令行等
引用 9 楼 WM_JAWIN 的回复:
重写Form的WndProc方法,
if(m.msg==WM_COPY)
    检查剪切板();
我也想到这种方式,但是我的是WPF项目,用的是WM_PASTE,但是确实禁掉系统的粘贴(仅仅Ctrl+V,没有禁掉系统右键粘贴),而且问题在于:替换成我自己的复制粘贴之后,貌似没有反应,网上也有类似的问题,但大多没有人正面回答。
zq1564171310 2015-02-04
  • 打赏
  • 举报
回复
引用 6 楼 rrt_2353881254 的回复:
C#文件下载 //加载绑定检索的下载文件 protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn("Name", typeof(string))); string serverPath = Server.MapPath("File"); DirectoryInfo dir = new DirectoryInfo(serverPath); foreach (FileInfo fileName in dir.GetFiles()) { DataRow dr = dt.NewRow(); dr[0] = fileName; dt.Rows.Add(dr); } ListBox1.DataSource = dt; ListBox1.DataTextField = "Name"; ListBox1.DataValueField = "Name"; ListBox1.DataBind(); } } //将绑定行索引保存到Session变量中 protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e) { Session["txt"] = ListBox1.SelectedValue.ToString(); } //下载保存文件 protected void LinkButton1_Click(object sender, EventArgs e) { if (Session["txt"] != "") { string path = Server.MapPath("File/") + Session["txt"].ToString(); FileInfo fi = new FileInfo(path); if (fi.Exists) { Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode( fi.Name)); Response.WriteFile(fi.FullName); //Response.End(); //Response.Flush(); //Response.Clear(); } } }
这个基本不可能吧,我不知道要下载那个文件,文件位置不确定,更加没有LinkButton1_Click这个动作,要是有,早就实现了,我需要系统的粘贴动作,至于我自己的整个复制粘贴流程,实际已经实现,只是不知到怎么替换系统的而已
WM_JAWIN 2015-02-04
  • 打赏
  • 举报
回复
#define WM_COPY                         0x0301
WM_JAWIN 2015-02-04
  • 打赏
  • 举报
回复
重写Form的WndProc方法,
if(m.msg==WM_COPY)
    检查剪切板();
本拉灯 2015-02-04
  • 打赏
  • 举报
回复
http://www.cnblogs.com/over140/archive/2007/11/05/934452.html
本拉灯 2015-02-04
  • 打赏
  • 举报
回复
http://blog.csdn.net/rrrrssss00/article/details/7430862
rrt_2353881254 2015-02-04
  • 打赏
  • 举报
回复
C#文件下载 //加载绑定检索的下载文件 protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn("Name", typeof(string))); string serverPath = Server.MapPath("File"); DirectoryInfo dir = new DirectoryInfo(serverPath); foreach (FileInfo fileName in dir.GetFiles()) { DataRow dr = dt.NewRow(); dr[0] = fileName; dt.Rows.Add(dr); } ListBox1.DataSource = dt; ListBox1.DataTextField = "Name"; ListBox1.DataValueField = "Name"; ListBox1.DataBind(); } } //将绑定行索引保存到Session变量中 protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e) { Session["txt"] = ListBox1.SelectedValue.ToString(); } //下载保存文件 protected void LinkButton1_Click(object sender, EventArgs e) { if (Session["txt"] != "") { string path = Server.MapPath("File/") + Session["txt"].ToString(); FileInfo fi = new FileInfo(path); if (fi.Exists) { Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode( fi.Name)); Response.WriteFile(fi.FullName); //Response.End(); //Response.Flush(); //Response.Clear(); } } }
zq1564171310 2015-02-04
  • 打赏
  • 举报
回复
目的文件夹已经能够获取到了,问题2已经解决 那么只剩下问题1,求解:如何捕捉用户在window中的粘贴动作(触发自定义粘贴方法的事件)
zq1564171310 2015-02-02
  • 打赏
  • 举报
回复
//重载这个方法,使用Interop获取HwndSource protected override void OnSourceInitialized(EventArgs e) { base.OnSourceInitialized(e); HwndSource source = PresentationSource.FromVisual(this) as HwndSource; source.AddHook(WndProc); } private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled) { } 请问这个如何捕获系统的粘贴消息?
zq1564171310 2015-02-02
  • 打赏
  • 举报
回复
引用 3 楼 S314324153 的回复:
[quote=引用 2 楼 zq1564171310 的回复:] [quote=引用 1 楼 Z65443344 的回复:] 监视剪贴板.
如何监听?[/quote] windows API[/quote] 这个我也知道,但是那个API实在太多,根本不知道用哪个?因为不太熟悉那个API ,而且别说没有具体注释,就算有,也看不过来。
S314324153 2015-02-02
  • 打赏
  • 举报
回复
引用 2 楼 zq1564171310 的回复:
[quote=引用 1 楼 Z65443344 的回复:] 监视剪贴板.
如何监听?[/quote] windows API
zq1564171310 2015-02-02
  • 打赏
  • 举报
回复
引用 1 楼 Z65443344 的回复:
监视剪贴板.
如何监听?
於黾 2015-02-02
  • 打赏
  • 举报
回复
监视剪贴板.

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧