chishingchan 发表于 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..


没有生成可执行文件!为什么?

chishingchan 发表于 2022-10-14 17:57:47


系统:windows 7 x64
编辑器:
SciTE
32-bit
Version 4.2.0
    Sep3 2019 19:04:05

afan 发表于 2022-10-14 18:25:29

你是仅保存,没编译

afan 发表于 2022-10-14 18:35:14

顺便说一句,这代码非常浪费资源。界面控件闪烁不说,你的剪贴板始终在以毫秒级速率写入同一数据。程序一载入文件,你就别想复制别的东西了

chishingchan 发表于 2022-10-14 20:22:37

afan 发表于 2022-10-14 18:35
顺便说一句,这代码非常浪费资源。界面控件闪烁不说,你的剪贴板始终在以毫秒级速率写入同一数据。程序一载 ...

求 a大 改进一下,谢谢!

afan 发表于 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

afan 发表于 2022-10-14 20:36:32

本帖最后由 afan 于 2022-10-15 11:43 编辑

根据编译问题的描述,在 SciTE 中调用编译,应该是编译器的原因,调用的是“仅保存”,下载新版,应该有修正
~~~

chishingchan 发表于 2022-10-14 21:10:33

afan 发表于 2022-10-14 20:36
根据编译问题的描述,应该是编译器的原因,调用的是“仅保存”,下载新版,应该有修正
https://www.autoit ...

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



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

afan 发表于 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

chishingchan 发表于 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

chishingchan 发表于 2022-10-14 21:40:13

afan 发表于 2022-10-14 21:26
“...在桌面上建立快捷方式...” 这个有什么关系……

拖放用事件模式

因为桌面是快捷方式,所以编译后编译文件不在桌面上,所以我以为代码有问题

afan 发表于 2022-10-14 21:44:43

chishingchan 发表于 2022-10-14 21:38
代码添加了几行,看看如何?

添加的三行不需要……
#AutoIt3Wrapper_UseX64=y 这个只有 =n 才有意义

afan 发表于 2022-10-14 21:48:42

chishingchan 发表于 2022-10-14 21:40
因为桌面是快捷方式,所以编译后编译文件不在桌面上,所以我以为代码有问题

你一楼的 “-> No changes made..” 提示已经清楚了,并没有编译,而非编译了没找到。

tubaba 发表于 2022-10-16 18:35:07

chishingchan 发表于 2022-10-14 21:38
代码添加了几行,看看如何?

不用事件模式的话,可以GUIRegisterMsg(0x0233, "WM_DROPFILES"),论坛上的例子大把
个人认为你的写法不是最优
页: [1]
查看完整版本: 【已解决】源码可运行,但编译不成功!