找回密码
 加入
搜索
查看: 4132|回复: 10

[AU3基础] 【已解决】如何获取鼠标点击的文件名?

  [复制链接]
发表于 2012-4-11 11:09:57 | 显示全部楼层 |阅读模式
本帖最后由 vigiles 于 2012-6-11 11:34 编辑

在一个文件夹里放了很多swf的视频,都是比较早的,现在的flash 10打开不能正常播放。想转成exe文件,就不用每次右键从打开方式里选micmedia player 7了。三百多个,挨个“右键—〉打开方式—〉player 7—〉,然后文件—〉创建播放器”再打上名字,手都酸了。但是查看帮助,只有模拟鼠标操作的,和一个得到鼠标坐标的。
请大家指点下,怎么才能让我点一下就得到这个文件名?
发表于 2012-4-11 11:16:16 | 显示全部楼层
......

右键---打开方式---选中“始终使用选择的程序打开这种文件”...选好Flash 10 之后---确定!...

以后就可以双击打开了..
 楼主| 发表于 2012-4-11 11:18:58 | 显示全部楼层
看明白我的问题行不
发表于 2012-4-11 11:23:24 | 显示全部楼层
回复 3# vigiles


    原理不是一样的吗? 你既然可以用 player 7 打开,还是一样的操作吧?...
 楼主| 发表于 2012-4-11 11:47:03 | 显示全部楼层
尽管我是新手,但还是有种对牛弹琴的感觉…

我想知道如何使用autoit得到鼠标点击的文件名
发表于 2012-4-11 12:08:01 | 显示全部楼层
回复 5# vigiles

在论坛里看过例子,但忘了在哪里了,你自己找找,有时间我也找找.
发表于 2012-4-11 13:19:39 | 显示全部楼层
最易懂的方式,打开注册表,看下那个快捷方式对应的命令,提出来批量执行就行了

评分

参与人数 1金钱 +20 贡献 +1 收起 理由
zldfsz + 20 + 1 非常赞同

查看全部评分

 楼主| 发表于 2012-4-11 15:53:33 | 显示全部楼层
;鉴于因flash版本的更新,不能正常运行旧版本swf文件
;特意编写这个小工具将较早版本的swf文件转为exe程序
;先准备个旧版flashplayer,我的是Micromedia Flash
;Player 7,将swf的打开方式设为它。然后随便打开一个
;,创建播放器,选择你的理想目录,回车。这样再次创建
;时就默认是这个目录了。接着将以下代码保存为au3文件
;放到swf目录的上一级,运行。一袋烟的功夫转换完成了
;完成后,再将swf打开方式设为adobe flash 10,删除旧
;版即可。
;-------------------------------------------------
;学思甚浅,天悯成果。菜鸟出品,大牛指正
;software:swf2exe       author:vigiles

#include <File.au3>
#include <Array.au3>

;创建文本
$Log = _FileCreate(@ScriptDir & "\filelist.log")

;得到目录内的文件名列表(目录,过滤器,只返回文件)
Local $FileList = _FileListToArray(@ScriptDir & "\swf", "*", 1)

;将得到的文件列表写入文本(文本,数组内容,从数组的1索引开始,全部的,分隔符)
_FileWriteFromArray(@ScriptDir & "\filelist.log", $FileList, 1, 0, "|")

;得到文本行数,即文件个数(文件)
$Lines = _FileCountLines(@ScriptDir & "\filelist.log")

;循环(初始值,目标值,步进值)
For $i=1 To $Lines Step +1
;从文本读取文件名(文件,行号)
$FileLine = FileReadLine(@ScriptDir & "\filelist.log", $i)

;删除后缀(原文本,要替换的字符,目标字符)
$Str = StringReplace($FileLine, ".swf", "")

;更新文本(文件,行号,文本,覆盖)
_FileWriteToLine(@ScriptDir & "\filelist.log", $i, $Str, 1)

;运行目录内的文件(文件,文件目录)
;不能用ShellExecuteWait。好像没法用ProcessClose、WinClose、WinKill关闭。
ShellExecute(@ScriptDir & "\swf\" & $FileLine, @ScriptDir & "\swf")

;等待flash打开
;WinWait("Micromedia Flash Player 7");此句...没有达到理想效果
Sleep(500);把上一句换成这句效果不错。但不知为何好像必须有个延时

;获取进程ID
$ProID = ProcessExists("SAFlashPlayer.exe")
Sleep(10)

;保持激活状态
WinActivate("Micromedia Flash Player 7")
Sleep(10)

;ALT+f
Send("!f")
Sleep(10)

;r键
Send("r")
Sleep(10)

;文件名
Send($Str)
Sleep(1500)

;回车
Send("{ENTER}")
Sleep(1000)

;关闭
ProcessClose($ProID)
Next
 楼主| 发表于 2012-4-11 15:56:16 | 显示全部楼层
用不到鼠标操作了。这个贴算是结了吧。
我用手机上网,所以没法设置语法着色什么的,有需要的凑合看下吧。请多担待!
发表于 2012-4-11 16:27:54 | 显示全部楼层
回复 1# vigiles
如果只是为了正常观看这些 SWF文件,
我建议你用:
FileFindFirstFile 及 FileFindNextFile  搜索该目录的 swf 文件,
然后 FileMove() 函数 给它们重命名别的后缀名, 比如 xxxx.fws
最后又回到 : 右键从打开方式里选 micmedia player 7
但记得把 '始终用选择的程序式打开此类文件'  的选项勾上!
发表于 2012-4-11 21:14:46 | 显示全部楼层
回复 5# vigiles
一定要鼠标点击的文件吗?不是所有的都要修改吗?那就用tab键来逐个选择文件好了。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-19 08:20 , Processed in 0.081422 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表