【已解决】源码可运行,但编译不成功!
本帖最后由 chishingchan 于 2022-10-14 21:11 编辑先看看代码
文件信息.au3
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_UseX64=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
Local $Width = 480
Local $Height = 100
GUICreate("可执行文件版本信息", $Width, $Height, @DesktopWidth - $Width - 8, 4, -1, BitOR(16+8, 256+8))
Local $InputBrowse = GUICtrlCreateButton("浏览(&B)", 8, 10, 52, 20)
$InputFile = GUICtrlCreateInput("", 70, 12, 400, 16)
GUICtrlSetState(-1, 8)
GUICtrlCreateLabel("合法版权", 10, 34)
$LegalCopyright = GUICtrlCreateInput("", 70, 32, 400, 16)
GUICtrlCreateLabel("公司名称", 10, 54)
$CompanyName = GUICtrlCreateInput("", 70, 52, 400, 16)
GUICtrlCreateLabel("文件版本", 10, 74)
$FileVersion = GUICtrlCreateInput("", 70, 72, 400, 16)
GUISetState(@SW_SHOW)
While 1
If FileExists(GUICtrlRead($InputFile)) Then
GUICtrlSetData($LegalCopyright, FileGetVersion(GUICtrlRead($InputFile), "LegalCopyright"))
GUICtrlSetData($CompanyName, FileGetVersion(GUICtrlRead($InputFile), "CompanyName"))
GUICtrlSetData($FileVersion, FileGetVersion(GUICtrlRead($InputFile)))
Local $IS = "AppCopyright=" & GUICtrlRead($LegalCopyright) & @CRLF & "AppPublisher=" & GUICtrlRead($CompanyName) & @CRLF & "VersionInfoVersion=" & GUICtrlRead($FileVersion)
ClipPut($IS)
EndIf
Switch GUIGetMsg()
Case -3
ExitLoop
Case $InputBrowse
GUICtrlSetData($InputFile, FileOpenDialog("请选择一个可执行文件。", @WindowsDir & "\", "可执行文件 (*.exe)", 1))
EndSwitch
WEnd
-> No changes made..
没有生成可执行文件!为什么?
系统:windows 7 x64
编辑器:
SciTE
32-bit
Version 4.2.0
Sep3 2019 19:04:05 你是仅保存,没编译 顺便说一句,这代码非常浪费资源。界面控件闪烁不说,你的剪贴板始终在以毫秒级速率写入同一数据。程序一载入文件,你就别想复制别的东西了 afan 发表于 2022-10-14 18:35
顺便说一句,这代码非常浪费资源。界面控件闪烁不说,你的剪贴板始终在以毫秒级速率写入同一数据。程序一载 ...
求 a大 改进一下,谢谢! While 1
Switch GUIGetMsg()
Case -3
ExitLoop
Case $InputBrowse
Local $File = FileOpenDialog("请选择一个可执行文件。", @WindowsDir & "", "可执行文件 (*.exe)", 1)
If @error Then ContinueLoop
GUICtrlSetData($InputFile, $File)
GUICtrlSetData($LegalCopyright, FileGetVersion($File, "LegalCopyright"))
GUICtrlSetData($CompanyName, FileGetVersion($File, "CompanyName"))
GUICtrlSetData($FileVersion, FileGetVersion($File))
Local $IS = "AppCopyright=" & GUICtrlRead($LegalCopyright) & @CRLF & "AppPublisher=" & GUICtrlRead($CompanyName) & @CRLF & "VersionInfoVersion=" & GUICtrlRead($FileVersion)
ClipPut($IS)
EndSwitch
WEnd 本帖最后由 afan 于 2022-10-15 11:43 编辑
根据编译问题的描述,在 SciTE 中调用编译,应该是编译器的原因,调用的是“仅保存”,下载新版,应该有修正
~~~ afan 发表于 2022-10-14 20:36
根据编译问题的描述,应该是编译器的原因,调用的是“仅保存”,下载新版,应该有修正
https://www.autoit ...
我找到问题了,原来我将此 au3 文件在桌面上建立快捷方式!
a大的代码是废弃了拖放文件后自动显示信息的功能
本帖最后由 afan 于 2022-10-14 21:28 编辑
chishingchan 发表于 2022-10-14 21:10
我找到问题了,原来我将此 au3 文件在桌面上建立快捷方式!...
“...在桌面上建立快捷方式...” 这个有什么关系……
拖放用事件模式
Opt("GUIOnEventMode", 1)
Local $Width = 480
Local $Height = 100
GUICreate("可执行文件版本信息", $Width, $Height, @DesktopWidth - $Width - 8, 4, -1, BitOR(16 + 8, 256 + 8))
GUISetOnEvent(-3, '_Exit')
GUISetOnEvent(-13, '_GetInfo_DragFile')
GUICtrlCreateButton("浏览(&B)", 8, 10, 52, 20)
GUICtrlSetOnEvent(-1, "_GetInfo_FileSelect")
Global $InputFile = GUICtrlCreateInput("", 70, 12, 400, 16)
GUICtrlSetState(-1, 8)
GUICtrlCreateLabel("合法版权", 10, 34)
Global $LegalCopyright = GUICtrlCreateInput("", 70, 32, 400, 16)
GUICtrlCreateLabel("公司名称", 10, 54)
Global $CompanyName = GUICtrlCreateInput("", 70, 52, 400, 16)
GUICtrlCreateLabel("文件版本", 10, 74)
Global $FileVersion = GUICtrlCreateInput("", 70, 72, 400, 16)
GUISetState(@SW_SHOW)
Local $iMsg, $File
While 1
Sleep(1000)
WEnd
Func _GetInfo_FileSelect()
Local $File = FileOpenDialog("请选择一个可执行文件。", @WindowsDir & "", "可执行文件 (*.exe)", 1)
If @error Then Return
__GetVersionInfo($File)
EndFunc ;==>_GetInfo_FileSelect
Func _GetInfo_DragFile()
__GetVersionInfo(@GUI_DragFile)
EndFunc ;==>_GetInfo_DragFile
Func __GetVersionInfo($File)
GUICtrlSetData($InputFile, $File)
GUICtrlSetData($LegalCopyright, FileGetVersion($File, "LegalCopyright"))
GUICtrlSetData($CompanyName, FileGetVersion($File, "CompanyName"))
GUICtrlSetData($FileVersion, FileGetVersion($File))
Local $IS = "AppCopyright=" & GUICtrlRead($LegalCopyright) & @CRLF & "AppPublisher=" & GUICtrlRead($CompanyName) & @CRLF & "VersionInfoVersion=" & GUICtrlRead($FileVersion)
ClipPut($IS)
EndFunc ;==>__GetVersionInfo
Func _Exit()
Exit
EndFunc ;==>_Exit afan 发表于 2022-10-14 21:26
“...在桌面上建立快捷方式...” 这个有什么关系……
拖放用事件模式
代码添加了几行,看看如何?
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_UseX64=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
Local $Width = 480
Local $Height = 100
Local $x, $y
GUICreate("可执行文件版本信息", $Width, $Height, @DesktopWidth - $Width - 8, 4, -1, BitOR(16+8, 256+8))
Local $InputBrowse = GUICtrlCreateButton("浏览(&B)", 8, 10, 52, 20)
$InputFile = GUICtrlCreateInput("", 70, 12, 400, 16)
GUICtrlSetState(-1, 8)
GUICtrlCreateLabel("合法版权", 10, 34)
$LegalCopyright = GUICtrlCreateInput("", 70, 32, 400, 16)
GUICtrlCreateLabel("公司名称", 10, 54)
$CompanyName = GUICtrlCreateInput("", 70, 52, 400, 16)
GUICtrlCreateLabel("文件版本", 10, 74)
$FileVersion = GUICtrlCreateInput("", 70, 72, 400, 16)
GUISetState(@SW_SHOW)
While 1
$x = GUICtrlRead($InputFile)
If $x <> $y Then
If FileExists(GUICtrlRead($InputFile)) Then
GUICtrlSetData($LegalCopyright, FileGetVersion(GUICtrlRead($InputFile), "LegalCopyright"))
GUICtrlSetData($CompanyName, FileGetVersion(GUICtrlRead($InputFile), "CompanyName"))
GUICtrlSetData($FileVersion, FileGetVersion(GUICtrlRead($InputFile)))
Local $IS = "AppCopyright=" & GUICtrlRead($LegalCopyright) & @CRLF & "AppPublisher=" & GUICtrlRead($CompanyName) & @CRLF & "VersionInfoVersion=" & GUICtrlRead($FileVersion)
ClipPut($IS)
EndIf
EndIf
$y = $x
Switch GUIGetMsg()
Case -3
ExitLoop
Case $InputBrowse
GUICtrlSetData($InputFile, FileOpenDialog("请选择一个可执行文件。", @WindowsDir & "", "可执行文件 (*.exe)", 1))
EndSwitch
WEnd
afan 发表于 2022-10-14 21:26
“...在桌面上建立快捷方式...” 这个有什么关系……
拖放用事件模式
因为桌面是快捷方式,所以编译后编译文件不在桌面上,所以我以为代码有问题 chishingchan 发表于 2022-10-14 21:38
代码添加了几行,看看如何?
添加的三行不需要……
#AutoIt3Wrapper_UseX64=y 这个只有 =n 才有意义 chishingchan 发表于 2022-10-14 21:40
因为桌面是快捷方式,所以编译后编译文件不在桌面上,所以我以为代码有问题
你一楼的 “-> No changes made..” 提示已经清楚了,并没有编译,而非编译了没找到。 chishingchan 发表于 2022-10-14 21:38
代码添加了几行,看看如何?
不用事件模式的话,可以GUIRegisterMsg(0x0233, "WM_DROPFILES"),论坛上的例子大把
个人认为你的写法不是最优
页:
[1]