TC官方合作论坛

标题: 求大神做个插件 [打印本页]

作者: 1364770121    时间: 2017-3-22 14:41
标题: 求大神做个插件
求大神帮做个插件!!!
主要功能:
     可以获取图片属性时间  (修改时间  创建时间  访问时间)
     可以修改图片属性时间
     可以获取图片像素尺寸 (JPG格式)
     可以获取图片的大小   (kb或mb)
     如果能获取和修改JPG文件的EXif文件信息更好。


真心寻求大神帮助,小弟先谢过了!


作者: 剑仙十号    时间: 2017-3-24 00:09
本帖最后由 剑仙十号 于 2017-3-31 21:36 编辑

脚本编程,并不是真正的编程。
想继续进步,都得过渡到api函数。
Windows API函数大全(完整)
作者:
Windows API函数大全,从事软件开发的朋友可以参考。
//
//
Windows API函数目录。
1. API之网络函数
2. API之消息函数
3. API之文件处理函数
4. API之打印函数
5. API之文本和字体函数
6. API之菜单函数
7. API之位图、图标和光栅运算函数
8. API之绘图函数
9. API之设备场景函数
10. API之硬件与系统函数
11. API之进程和线程函数
//
//
我实际演练下。
tc简单开发 > 论坛 > 新手专区
发帖|发投票|发辩论|
[其他] 求助大神 能不能写个这样的插件
楼主 1364770121 发消息
求大神帮做个插件!!!
主要功能:
     可以获取图片属性时间  (创建时间  修改时间  访问时间)
     可以修改图片属性时间
     可以获取图片的大小   (kb或mb)
.
     可以获取图片像素尺寸 (JPG格式)
     如果能获取和修改JPG文件的EXif文件信息更好。
真心寻求大神帮助,小弟先谢过了!
回复
//
//


一,先抓题型。
找好目录之后,照单抓药,对号入座。
前三项是文件操作类,
对号 Windows API函数目录, 3. API之文件处理函数
后二项是文件操作类,
对号 Windows API函数目录, 7. API之位图、图标和光栅运算函数
后面2项,我就不制作了。



二,找到目录之后,对号入座,照单拾药。
再寻找该目录下的子函数。
API函数。目录之三。文件处理函数
.
3. API之文件处理函数
//这些命令你不用全学习。需要用到哪一个,就查询那个,学习那个。
CloseHandle 关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等
CompareFileTime 对比两个文件的时间
CopyFile 复制文件
CreateDirectory 创建一个新目录
CreateFile 打开和创建文件、管道、邮槽、通信服务、设备以及控制台
CreateFileMapping 创建一个新的文件映射对象
DeleteFile 删除指定文件
DeviceIoControl 对设备执行指定的操作
DosDateTimeToFileTime 将DOS日期和时间值转换成一个 win32 FILETIME 值
FileTimeToDosDateTime 将一个 win32 FILETIME 值转换成DOS日期和时间值
FileTimeToLocalFileTime 将一个FILETIME结构转换成本地时间
FileTimeToSystemTime 根据一个FILETIME结构的内容,装载一个SYSTEMTIME结构
FindClose 关闭由FindFirstFile函数创建的一个搜索句柄
FindFirstFile 根据文件名查找文件
FindNextFile 根据调用FindFirstFile函数时指定的一个文件名查找下一个文件
FlushFileBuffers 针对指定的文件句柄,刷新内部文件缓冲区
FlushViewOfFile 将写入文件映射缓冲区的所有数据都刷新到磁盘
GetBinaryType 判断文件是否可以执行

GetCompressedFileSize 判断一个压缩文件在磁盘上实际占据的字节数
GetCurrentDirectory 在一个缓冲区中装载当前目录
GetDiskFreeSpace 获取与一个磁盘的组织有关的信息,以及了解剩余空间的容量
GetDiskFreeSpaceEx 获取与一个磁盘的组织以及剩余空间容量有关的信息
GetDriveType 判断一个磁盘驱动器的类型
GetExpandedName 取得一个压缩文件的全名
GetFileAttributes 判断指定文件的属性
GetFileInformationByHandle 这个函数提供了获取文件信息的一种机制
*
GetFileSize 判断文件长度
*
GetFileTime 取得指定文件的时间信息
GetFileType 在给出文件句柄的前提下,判断文件类型
GetFileVersionInfo 从支持版本标记的一个模块里获取文件版本信息
命令太多,不一一贴了。要完整命令的百度搜索:Windows API函数大全。
……
……


三,获取图片属性时间  (创建时间  修改时间  访问时间)
对号:GetFileTime 取得指定文件的时间信息
//
修改图片属性时间
对号:SetFileTime 设置文件的创建、访问及上次修改时间
//
获取图片的大小   (kb或mb)
对号:GetFileSize 判断文件长度
//
//



四,百度搜索这三个api的名字,
GetFileTime ,SetFileTime ,GetFileSize ,查找其调用方法,
再用tc简单开发,或c++2013,或c#调用这三api函数,获取需要信息。
当然,使用按键精灵,易语言,习语言调用也行的。
//
打开tc简单开发,用热键F1调出帮助文档。
学习帮助文档的dllcall命令,就可以调用这三个api函数。
//
取文件大小。(JPG格式文件,也是一种文件)
[源码分享] 【鬼玺开源】TC5.0 Win32 API - 获取**格式文件的大小。
楼主 sam7894604 发消息
结构体的应用之如何使用 Win32 API 获取文件的格式大小。
函数特色:
同时有 struct 、pstruct 的类型应用,功能不是此次开源的重点,仔细研究下可以学到 TC 5.0 的新写法。
不用 LONGLONG 类型的原因是,有发现 BUG 官方正在修复 (就我所知已解决)。
函数中调用取文件大小的 Win 32 API,理论上可取到 9,007,199,252,643,840 KB(等同短格式 7.99 EB)远远超越目前 TC 的数据类型。
支持短格式(EB 为最大尺寸)、长格式(KB 为最小尺寸)获取。
源码:
本帖隐藏的内容
代码:
功能 取文件大小(参_路径,参_长格式 = 假)
    变量 局_句柄 = 0
    变量 局_返回 = ""
    变量 局_长度 = 数组()
    变量 局_缓冲 = 数组()
    如果((局_句柄 = 文件打开(参_路径,"读写|文件要存在")) > 0)
        局_缓冲["Buf"] = 数组("wchar" = 128,"value" = "")
        
        局_长度["Low"]  = 数组("long" = 0 ,"value" = 0)
        局_长度["High"] = 数组("long" = 0 ,"value" = 0)
        
        如果(动态库调用("Kernel32.dll","long","GetFileSizeEx","long",局_句柄,"pstruct",局_长度))
            如果(参_长格式)
                局_返回 = 动态库调用("Shlwapi.dll","wchar *","StrFormatKBSizeW","struct",局_长度,"pstruct",局_缓冲,"long",结构体长度(局_缓冲))
            否则
                局_返回 = 动态库调用("Shlwapi.dll","wchar *","StrFormatByteSizeW","struct",局_长度,"pstruct",局_缓冲,"long",结构体长度(局_缓冲))
            结束
        结束
    结束
    文件关闭(局_句柄)
    返回 局_返回
结束

回复
-1# zxw445 发消息
赶紧来抢沙发!!!!
回复
板凳 g93920079 发消息
好东西,谢谢楼主!!!!!!!!!!!!!
回复
地板 hlincs 发消息
取格式文件大小
回复
5# 超自然 发消息
感谢老鬼开源
回复


编程工具,只是一工具,而工具是触类旁通的。
学懂一个tc,其它按键精灵,易语言,习语言,快手编程语言,看看就会。
vb.net,vc++2013,c#2013,先熟悉代码的开发环境,也是看看就会了。
//
建议学习tc简单开发。
tc使用的是c系语言语法,学懂tc,你可以过渡到Java/ c#2013,vc++2013,c语言。好处大大的。
使用按键精灵,你也可以过渡到vb,vb.net。
//
你还可以用vc++2013,把写好的函数封装成dll。
COM接口DLL。标准接口DLL。
放到按键精灵,tc简单开发,易语言中调用。
大漠插件,就是使用vc++6.0封装的标准DLL,放到其它语言中调用。
vc++6.0已经老古董了,但这版本是免费的,大漠作者可以免费使用它,不用交几万块版权费。
.
这样,api函数就学会了。
跟着剑仙十号,苹果大神学习,  进步大大的。
作者: 剑仙十号    时间: 2017-3-24 00:11
操作其它的信息,如果想简便的话,精易模块里面有。

不用易语言,用tc调用系统api来写的,效果也同样。
作者: 剑仙十号    时间: 2017-3-24 00:12
信息来源:


com接口的类和对象

作者编写的com口类。
例如:大漠com,天使com,懒人办公com。
这些注册插件,创造对象,调用对象的方法,
都非常熟悉,就不做介绍了。
//

系统自带的com组件1。这些是微软那帮人写的。
vbs的com口类有6个:
vbs
Scripting.FileSystemObject  //文件对象。

vbs WScript.Shell  //注册表对象。

vbs regExp  //正则对象。

Dictionary对象:字典函数,相当于一个2维数组。

Wmi对象:xp和xp以上的系统都带着。
远程控制电脑,获得硬盘序列号等等硬件有关的信息。
查询网络状态,想知道机器内存多大,找它就对了。

IE对象:没错,就是操作网页ie的。
//
调用实例:
分享获取EXE或DLL文件右键属性里的文件版本源码
楼主 2576605471
tc代码:
var fso对象 = 插件("Scripting.FileSystemObject")
消息框(Fso对象.GetFileVersion("C:/dm.dll"),"")   //GET Ver
//

系统自带的com组件2。这也是微软那帮人写好的。
Word.Application
Excel.Application
懒人办公插件,很多函数都是调用这2个com,再次编写。
//
调用实例:
tc代码:
var word对象 = 插件("Word.Application")
var excel对象 = 插件("Word.Application")
//

这些com接口的插件没有做帮忙文档。
不像大漠插件,天使插件,懒人插件一样,带帮助文档。
要使用系统com的函数,就在百度查找。
百度搜索:
vbs Scripting.FileSystemObject
Word.Application
Excel.Application


释放com对象,怎样操作?
fso对象 = null
word对象 = null
excel对象 = null
作者: 1364770121    时间: 2017-3-24 08:37
剑仙十号 发表于 2017-3-24 00:12
信息来源:

大哥,你能帮写个小插件吗?
作者: 1364770121    时间: 2017-3-24 08:43
剑仙十号 发表于 2017-3-24 00:11
操作其它的信息,如果想简便的话,精易模块里面有。

不用易语言,用tc调用系统api来写的,效果也同样。 ...

我还不会调用API  请老鸟指教
作者: 1364770121    时间: 2017-3-24 08:45
剑仙十号 发表于 2017-3-24 00:09
tc代码:
var fso对象 = 插件("Scripting.FileSystemObject")
消息框(Fso对象.GetFileVersion("C:/dm.dll"), ...

大哥是调用大漠插件吗 ??
作者: 1364770121    时间: 2017-3-24 14:12
不能沉
作者: 剑仙十号    时间: 2017-3-24 14:23
这个所花的时间太多了。
代码要几百行。多的要上千行。
一时间也做不完。

作者: 1364770121    时间: 2017-3-24 15:30
剑仙十号 发表于 2017-3-24 14:23
这个所花的时间太多了。
代码要几百行。多的要上千行。
一时间也做不完。

如果大神愿意帮我  我可以等
作者: 1364770121    时间: 2017-3-24 15:30
剑仙十号 发表于 2017-3-24 14:23
这个所花的时间太多了。
代码要几百行。多的要上千行。
一时间也做不完。

如果大神愿意帮我  我可以等
作者: 1364770121    时间: 2017-3-25 11:17
不能沉

作者: 1364770121    时间: 2017-3-27 07:58
不能沉
作者: 1364770121    时间: 2017-3-29 18:53
不能沉

作者: 1364770121    时间: 2017-3-30 08:09
不能沉
作者: 剑仙十号    时间: 2017-3-30 15:41
易语言,取文件属性()

这些东西都有了。


易语言。怎样用代码查询创建时间,修改时间,访问时间。
.
右键某个文件,属性窗口,可以查询到该文件的
创建时间,最后修改时间,最后访问时间。
易语言。怎样用代码查询这三个时间??

取文件属性()
作者: 剑仙十号    时间: 2017-3-30 19:36
用系统api也可以实现。

tc调用api函数。GetFileTime

搜狗百科
GetFileTime
外文名        GetFileTime
功能说明        取得指定文件的时间信息
词 性        名词
语 言        英文
微信文章
新闻动态
VB声明
Declare Function GetFileTime Lib"kernel32"Alias"GetFileTime"(ByVal hFile As Long, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long
功能说明
取得指定文件的时间信息
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数类型及说明
hFile Long,文件的句柄

lpCreationTime FILETIME,用于装载文件的创建时间

lpLastAccessTime FILETIME,用于装载文件上一次访问的时间(FAT文件系统不支持这一特性)

lpLastWriteTime FILETIME,用于装载文件上一次修改的时间
注解
如果不需要特定的信息,那么lpCreationTime,lpLastAccessTime,lpLastWriteTime都可以设置为零(用ByVal As Long)。这个函数返回的文件时间采用UTC格式。可以使用FileTimeToSystemTime方法,将文件时间转换为系统时间格式。

作者: 1364770121    时间: 2017-3-31 08:14
剑仙十号 发表于 2017-3-30 19:36
用系统api也可以实现。

tc调用api函数。GetFileTime

谢谢大师,那获取大小和尺寸怎么弄?
作者: 剑仙十号    时间: 2017-3-31 19:46
怎样修改文件的创建时间,修改时间,访问时间?
用tc的结构体可以编写。
一般是用VC++结构体来编写。
代码量非常多。

作者: 剑仙十号    时间: 2017-3-31 19:47
怎样修改文件的创建时间,修改时间,访问时间?
用tc的结构体可以编写。
一般是用VC++的结构体来编写。

满意回答
在VC++下对文件属性的获取与更改
摘要:本文讲述了在Visual C++ 下编程实现对磁盘文件的属性进行获取以及更改的一般方法,并给出部分相关的关键代码。
一、 引言
文件是数据在磁盘上最常用的一种存放形式,也是在程序设计中与之经常打交道的一种编程对象,不少程序尤其是数据传输和处理类的应用程序更是需要频繁的创 建、读取和写入文件。对于一些要求不是很严格的程序,我们往往只关心文件的内容是否正确、文件大小是否有增减或是再严格一些,看文件名是否符合规定等等。 以上这些要素对于大多数程序而言显然是可以满足实际需求的,但对于某些特殊行业的一些有着比较严格要求的软件系统,仅有以上要素还是远远不够的,往往还需 要对文件的所有属性诸如文件的创建时间、文件的最后访问时间、文件的最后修改时间等等进行提取处理与重新设置。
二、 WIN32_FIND_DATA结构
关于文件的全部属性信息,总计有以下以下9种:文件的标题名、文件的属性(只读、存档,隐藏等)、文件的创建时间、文件的最后访问时间、文件的最后修改时间、文件大小的高位双字、文件大小的低位双字、保留、保留。在这里只有文件标题名和文件的长度可以通过CFile类比较方便的获得,而对于其他几种属性的获取和设置就无能为力了。
在用findfirst()和findnext()函数去查找磁盘文件时经常使用的一个数据结构WIN32_FIND_DATA的成员变量里包含了以上所有的文件属性,因此可以通过这个结构作为获取和更改文件属性的手段。该结构的内容如下:
typedef struct _WIN32_FIND_DATA {
DWORD dwFileAttributes; //文件属性
FILETIME ftCreationTime; // 文件创建时间
FILETIME ftLastAccessTime; // 文件最后一次访问时间
FILETIME ftLastWriteTime; // 文件最后一次修改时间
DWORD nFileSizeHigh; // 文件长度高32位
DWORD nFileSizeLow; // 文件长度低32位
DWORD dwReserved0; // 系统保留
DWORD dwReserved1; // 系统保留
TCHAR cFileName[ MAX_PATH ]; // 长文件名
TCHAR cAlternateFileName[ 14 ]; // 8.3格式文件名
} WIN32_FIND_DATA, *PWIN32_FIND_DATA;
可以通过FindFirstFile()函数根据当前的文件存放路径查找该文件来把待操作文件的相关属性读取到WIN32_FIND_DATA结构中去:
WIN32_FIND_DATA ffd ;
HANDLE hFind = FindFirstFile("c:\\test.dat",&ffd);
在使用这个结构时不能手工修改这个结构中的任何数据,结构对于开发人员来说只能作为一个只读数据,其所有的成员变量都会由系统完成填写。在MSDN帮助中可以查找到关于WIN32_FIND_DATA结构的更加详细的说明。


三、 文件属性信息的获取与更改
为了更好的保存获取到的文件属性信息,对应于文件属性构造一个自定义的FILE_INFO数据结构,获取的属性信息可暂存于此:
typedef struct _FILE_INFO {
TCHAR szFileTitle[128]; //文件的标题名
DWORD dwFileAttributes; //文件的属性
FILETIME ftCreationTime; //文件的创建时间
FILETIME ftLastAccessTime; //文件的最后访问时间
FILETIME ftLastWriteTime; //文件的最后修改时间
DWORD nFileSizeHigh; //文件大小的高位双字
DWORD nFileSizeLow; //文件大小的低位双字
DWORD dwReserved0; //保留,为0
DWORD dwReserved1; //保留,为0
} FILE_INFO, * PFILE_INFO;
首先用FindFirstFile()函数将文件属性获取到WIN32_FIND_DATA 结构对象FindFileData中去,之后可以用FindClose()将其关闭,并把FindFileData中的有关文件属性信息的内容复制到自定 义结构FILE_INFO的结构对象FileInfo中备用。下面是关于这部分描述的部分关键代码:
//声明结构对象
FILE_INFO FileInfo;
WIN32_FIND_DATA FindFileData;
……
//获取文件属性信息
FindClose(FindFirstFile("Test.txt",&FindFileData));
memset(&FileInfo,0,sizeof(FILE_INFO));
……
//将文件属性信息保存到FileInfo中备用
strcpy(FileInfo.szFileTitle,myFile.GetFileTitle());
FileInfo.dwFileAttributes = FindFileData.dwFileAttributes;
FileInfo.ftCreationTime = FindFileData.ftCreationTime;
FileInfo.ftLastAccessTime = FindFileData.ftLastAccessTime;
FileInfo.ftLastWriteTime = FindFileData.ftLastWriteTime;
FileInfo.nFileSizeHigh = FindFileData.nFileSizeHigh;
FileInfo.nFileSizeLow = FindFileData.nFileSizeLow;
……
在获取到文件的原始属性信息后既可以原封不动的将属性重新写到文件,也可以对其中某一项或某几项属性内容进行修改后再行写入文件,从而达到更改文件属性 的目的。

比如可以用SetFileTime()函数设置文件的创建时间、最近一次访问时间以及最近一次修改的时间等等:
SetFileTime((HANDLE)destFile.m_hFile, //待写入的文件句柄
&FileInfo.ftCreationTime, //文件的创建时间
&FileInfo.ftLastAccessTime, //文件最近一次的访问时间
&FileInfo.ftLastWriteTime); //文件最近一次的修改时间
也可以用SetFileAttributes() 函数实现对文件属性的修改:
SetFileAttributes(FileInfo.szFileTitle,FileInfo.dwFileAttributes);
至于文件名的修改则更加简单,直接在创建文件时在CreateFile()或CFile类的成员函数Open里直接对文件名参数进行设置即可。
文章链接地址:
jqotgp  推荐于:2016-10-18

作者: 剑仙十号    时间: 2017-3-31 19:49
编写这个,你必须学会tc的结构体。
VC++的结构体,使用方法也一样。
作者: 剑仙十号    时间: 2017-3-31 21:38
楼主。
制作方法,已经更新发布在2楼了。
剑仙发布布其它楼的内容,都是草稿。

请注意查收。
作者: 1364770121    时间: 2017-4-1 09:15
剑仙十号 发表于 2017-3-31 19:49
编写这个,你必须学会tc的结构体。
VC++的结构体,使用方法也一样。

这不是 我不会吗   本来就是奔着 简单开发的简单 来的   , 如果我会复杂的编程 就不会用tc了  ……
作者: 1364770121    时间: 2017-4-1 09:17
剑仙十号 发表于 2017-3-31 19:47
怎样修改文件的创建时间,修改时间,访问时间?
用tc的结构体可以编写。
一般是用VC++的结构体来编写。

大神 你这是吧 贴吧的  内容又复制了一遍,我想要的是有这几个功能的插件  ……………………!!!
作者: 1364770121    时间: 2017-4-2 09:35
不要沉
作者: 1364770121    时间: 2017-4-2 10:17
不能沉
作者: 1364770121    时间: 2017-4-3 08:04
不能沉
作者: 1364770121    时间: 2017-4-4 14:43
不能沉
作者: 1364770121    时间: 2017-4-5 07:44
不能沉
作者: 1364770121    时间: 2017-4-6 07:50
不要沉
作者: 1364770121    时间: 2017-4-7 07:19
不要沉




欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1