找回密码
 加入
搜索
查看: 741|回复: 14

[网络通信] 【已解决】源码可运行,但编译不成功!

[复制链接]
发表于 2022-10-14 17:56:58 | 显示全部楼层 |阅读模式
本帖最后由 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..


没有生成可执行文件!为什么?
 楼主| 发表于 2022-10-14 17:57:47 | 显示全部楼层

系统:windows 7 x64
编辑器:
SciTE
32-bit
Version 4.2.0
    Sep  3 2019 19:04:05
发表于 2022-10-14 18:25:29 | 显示全部楼层
你是仅保存,没编译

点评

右键菜单编译也没效!  发表于 2022-10-14 20:23
发表于 2022-10-14 18:35:14 | 显示全部楼层
顺便说一句,这代码非常浪费资源。界面控件闪烁不说,你的剪贴板始终在以毫秒级速率写入同一数据。程序一载入文件,你就别想复制别的东西了
 楼主| 发表于 2022-10-14 20:22:37 | 显示全部楼层
afan 发表于 2022-10-14 18:35
顺便说一句,这代码非常浪费资源。界面控件闪烁不说,你的剪贴板始终在以毫秒级速率写入同一数据。程序一载 ...

求 a大 改进一下,谢谢!
发表于 2022-10-14 20:33:49 | 显示全部楼层
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
发表于 2022-10-14 20:36:32 | 显示全部楼层
本帖最后由 afan 于 2022-10-15 11:43 编辑

根据编译问题的描述,在 SciTE 中调用编译,应该是编译器的原因,调用的是“仅保存”,下载新版,应该有修正
~~~
 楼主| 发表于 2022-10-14 21:10:33 | 显示全部楼层
afan 发表于 2022-10-14 20:36
根据编译问题的描述,应该是编译器的原因,调用的是“仅保存”,下载新版,应该有修正
https://www.autoit ...

我找到问题了,原来我将此 au3 文件在桌面上建立快捷方式!



a大的代码是废弃了拖放文件后自动显示信息的功能

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2022-10-14 21:26:21 | 显示全部楼层
本帖最后由 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

评分

参与人数 1威望 +2 金钱 +50 贡献 +2 收起 理由
chishingchan + 2 + 50 + 2 赞一个!

查看全部评分

 楼主| 发表于 2022-10-14 21:38:45 | 显示全部楼层
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
 楼主| 发表于 2022-10-14 21:40:13 | 显示全部楼层
afan 发表于 2022-10-14 21:26
“...在桌面上建立快捷方式...” 这个有什么关系……

拖放用事件模式

因为桌面是快捷方式,所以编译后编译文件不在桌面上,所以我以为代码有问题
发表于 2022-10-14 21:44:43 | 显示全部楼层
chishingchan 发表于 2022-10-14 21:38
代码添加了几行,看看如何?

添加的三行不需要……
#AutoIt3Wrapper_UseX64=y 这个只有 =n 才有意义
发表于 2022-10-14 21:48:42 | 显示全部楼层
chishingchan 发表于 2022-10-14 21:40
因为桌面是快捷方式,所以编译后编译文件不在桌面上,所以我以为代码有问题

你一楼的 “-> No changes made..” 提示已经清楚了,并没有编译,而非编译了没找到。
发表于 2022-10-16 18:35:07 | 显示全部楼层
chishingchan 发表于 2022-10-14 21:38
代码添加了几行,看看如何?

不用事件模式的话,可以GUIRegisterMsg(0x0233, "WM_DROPFILES"),论坛上的例子大把
个人认为你的写法不是最优
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-23 20:17 , Processed in 0.089501 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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