我要在WPF里实现从窗体里面拖拽一个文件出去,在拖拽释放的时候判断我释放文件的目标对象是否为我指定的软件,如果是则将该文件打开,如果不是指定的软件就什么都不做。(例如:我从WPF窗体里拖拽一个123.txt文件出来,释放鼠标的时候要判断目标软件是否为notepad,如果是notepad就直接打开123.txt这个文件,如果不是,则不做任何操作)。找了些资料,都说要用鼠标钩子。请教各位大神怎么实现啊?

解决方案 »

  1.   

    凭什么txt只能用记事本打开?ie就不能打开了吗?写字板就不能打开了吗?
      

  2.   

    我的WPF客户端关键是要保护客户提供的Photoshop一些如:笔触、滤镜之类的插件文件,不能让用户直接获取到我这些文件。
    如果直接拖动出来放到桌面上或是其他地方,那就会造成客户的文件被未授权使用
    我只是拿txt来举个例子而已。我的WPF实现的本身是拖拽的Photoshop的一些比如:笔触、滤镜之类的插件文件。
      

  3.   

    不是有个MouseLeftButtonDown和UP事件吗,down的时候记录下文件,up的时候就可以知道了,试试看?
      

  4.   

    判断这个被选中的图标是什么软件好像有点难啊。参考这个链接,没仔细研究
     https://devblogs.microsoft.com/oldnewthing/?p=38393
      

  5.   

    钩子或GetCursorPos获取鼠标坐标,再用WindowFromPoint获取窗口句柄
      

  6.   

    呃,你到底是要拖动到explorer中那个程序的图标上,还是拖到那个程序上啊
      

  7.   

    对了,要是拖到那个程序上,如果那个程序在DragEnter/DragMove读取数据,之后再判断就已经晚了