Jump to content

Sky Slate Blueberry Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate
Photo

Per Rechtsklick MIT Icon Compilieren


  • Please log in to reply
3 replies to this topic
AtomicOne
  • Members
  • 15 posts
  • Last active: Feb 14 2016 01:31 AM
  • Joined: 16 Mar 2013

Ich habe oft den Wunsch mal schnell ein Script per Rechtsklick zu Kompilieren.

Da ich aber ständig unterschiedliche Scripte bearbeite und auch Kompiliere stimmt dann entweder das Icon nicht, weil der Compiler immer das zuletzt verwendete Icon benutzt oder gar keins wenn man einmalig "Default" auswählt.

 

Will ich also verschiedene Scripte MIT Icon Kompilieren muss ich immer den Compiler aufrufen und dort aufwendig alle drei Dateien angeben.

 

Ich habe mir daher einen "Ersatz" gebaut der die entsprechenden Parameter an den Kompiler übergibt sofern zu der zu Kompilierenden AHK ein ICO im selben Verzeichnis gefunden wird.

 

Da man in der Registry ein Eintrag für's Kontextmenü anpassen muss habe ich auch gleich einen Installer dafür gebastelt.

 

Hoffe das Thema passt hier rein.

 

Gibt sicher einiges zu verbessern, aber für mich funktioniert es so eigentlich ganz gut.

 

 

Ahk2Exe2.ahk

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.

; Path to Ahk2Exe.exe
StringTrimRight ,AHKPATH,A_AHKPath,14 ; Getting Ahk-Path (without Autohotkey.exe)
ahk2exe = %AHKPATH%Compiler\ahk2exe.exe ; Building Compiler-Path

; Catching Parameters from Command Line
longfn = %1% ; Filename including Path
path = %2% ; Path without Filename

; Parsing parameters
pathlen := StrLen(path) + 2 ; Length of Path without Filename
fnwe := SubStr(longfn,pathlen) ; Filename with extension
StringTrimRight ,fnwoe,fnwe,4 ; Filename without extension

; Check existence of Icon
IfExist ,%path%\%fnwoe%.ico
ico = 1
Else
ico = 0

; Building Command-Lines
If ico = 1
cl = %ahk2exe% /in "%path%\%fnwe%" /out "%path%\%fnwoe%.exe" /icon "%path%\%fnwoe%.ico"
Else
cl = %ahk2exe% /in "%path%\%fnwe%" /out "%path%\%fnwoe%.exe"

; Running Compiler
Run %cl%

Install.ahk (Muss zuvor vorkompiliert werden und dann mit RunAs als Administrator ausführen !)

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.

If A_AHKPath = 
{
MsgBox ,0,Error,No Autohotkey-Installation found`n`nInstaller will exit!
Goto END
}

StringTrimRight ,AHKPATH,A_AHKPath,14 ; Getting Ahk-Path (without Autohotkey.exe)
CMPPATH = %AHKPATH%Compiler\ ; Building Compiler-Path
MsgBox ,1,Install,Ahk2Exe2.exe will install into`n%CMPPATH% ; Ask for Installation into given Path
IfMsgBox ,Yes
Goto Install
IfMsgBox ,Cancel
Goto END

Install:
IfExist ,%CMPPATH%Ahk2Exe2.exe
{
	MsgBox ,4,Error,Ahk2Exe2.exe is allready installed!`n`nDo you wish to reinstall ?
	IfMsgBox ,No
		Goto END
}
FileCopy ,Ahk2Exe2.exe,%CMPPATH%,1 ; Copy Ahk2Exe2.exe into Compiler-Path
If ErrorLevel > 0 ; Check if copy was successfully
{
	MsgBox ,0,Error,Could not copy Ahk2Exe2.exe to %CMPPATH%`n`nInstaller will exit!
	Goto End
}
RegWrite ,Reg_SZ,HKEY_CLASSES_ROOT,\AutoHotkeyScript\Shell\Compile\Command,,`"%CMPPATH%Ahk2Exe2.exe`" `"`%1`" `"`%w`" ; Write needed Reg-Key into Registry
If ErrorLevel > 0 ; Check if RegWrite was successfully
{
	MsgBox ,0,Error,Could not write to Registry!`n`nInstaller will Exit!
	Goto End
}
MsgBox ,0,Finished!,Ahk2Exe2.exe sucessfully installed!
Goto END

END:
ExitApp

Ahk2Exe2.reg

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\AutoHotkeyScript\Shell\Compile\Command]
@="\"C:\\Program Files\\AutoHotkey\\Compiler\\Ahk2Exe2.exe\" \"%l\" \"%w\""

README.TXT

Purpose:
To quickly compile an AHK-Script, the fastest way for me is via the Windows-Context-Menu.
But the Ahk2Exe-Compiler always uses the last used Icon-File.
So your compiled Exe-Files will have the wrong Icon (or none).
So i decided to replace the context command which points directly to the Ahk2Exe-Compiler by this small Programm which checks if there is an .ico-file next to the .ahk-file.
If it detects an Icon-File, which filename needs to be exactly the same like ahk-File except it's extension, it will compile the script including the Icon.
If not, it will compile without icon.

Install:

- Copy Ahk2exe2.exe into
  \Autohotkey\Compiler\

- Changing
  HKEY_CLASSES_ROOT\AutoHotkeyScript\Shell\Compile\Command
  to
  "C:\Program Files\AutoHotkey\Compiler\Ahk2Exe2.exe" "%l" "%w"
  Or just by (editing and) instaling the delivered REG-File.

  - Or just using the delivered Installer (RunAs Administrator !)

  To use under Notepad++ add the following Command
  "C:\Program Files\Autohotkey\Compiler\Ahk2Exe2.exe" "$(FULL_CURRENT_PATH)" "$(CURRENT_DIRECTORY)"


Alibaba
  • Members
  • 435 posts
  • Last active: Nov 19 2014 04:21 PM
  • Joined: 01 Nov 2012

Sehr hilfreich! Mich stört es auch oft, wenn ich nur zum testen zwischendurch ein script kompiliere und es dann irgendein ungewolltes Icon besitzt. :)

Aber was du noch machen könntest, wäre im Installer die Auswahl zu bieten, ob man den alten Kontextmenü-Eintrag ersetzen will oder ob ein neuer Eintrag, z.B. "Compile with Icon" hinzugefügt werden soll.


Find the recent autohotkey version here: ahkscript.org


AtomicOne
  • Members
  • 15 posts
  • Last active: Feb 14 2016 01:31 AM
  • Joined: 16 Mar 2013

Sehr hilfreich! Mich stört es auch oft, wenn ich nur zum testen zwischendurch ein script kompiliere und es dann irgendein ungewolltes Icon besitzt. happy.png
Aber was du noch machen könntest, wäre im Installer die Auswahl zu bieten, ob man den alten Kontextmenü-Eintrag ersetzen will oder ob ein neuer Eintrag, z.B. "Compile with Icon" hinzugefügt werden soll.

 
Ok, also quasi dann so ...
MsgBox , 4,Windows integration,You can replace the default Context-Menu entry "Compile Script" or`nyou can add an additional Entry "Compile with Icon"`n`nClick "Yes" to replace,`n"No" to add a second entry.
IfMsgBox ,Yes
{
	RegWrite ,Reg_SZ,HKEY_CLASSES_ROOT,\AutoHotkeyScript\Shell\Compile\Command,,`"%CMPPATH%Ahk2Exe2.exe`" `"`%1`" `"`%w`" ; Write needed Reg-Key into Registry
}
IfMsgBox ,No
{
	RegWrite ,Reg_SZ,HKEY_CLASSES_ROOT,\AutoHotkeyScript\Shell\Compile2,,Compile with Icon ; Write needed Reg-Key into Registry
	RegWrite ,Reg_SZ,HKEY_CLASSES_ROOT,\AutoHotkeyScript\Shell\Compile2\Command,,`"%CMPPATH%Ahk2Exe2.exe`" `"`%1`" `"`%w`" ; Write needed Reg-Key into Registry
}
	If ErrorLevel > 0 ; Check if RegWrite was successfully

anstatt
RegWrite ,Reg_SZ,HKEY_CLASSES_ROOT,\AutoHotkeyScript\Shell\Compile\Command,,`"%CMPPATH%Ahk2Exe2.exe`" `"`%1`" `"`%w`" ; Write needed Reg-Key into Registry
If ErrorLevel > 0 ; Check if RegWrite was successfully
Komisch, ich kann meinen vorherigen Post nicht bearbeiten ... unsure.png
"You are not allowed to use this image extension on this community"

Dabei habe ich gar kein Image eingefügt.
Der Fehler kommt sogar wenn ich den Eintrag gar nicht verändere. Also "Edit" und direkt gleich wieder "Save changes"

Alibaba
  • Members
  • 435 posts
  • Last active: Nov 19 2014 04:21 PM
  • Joined: 01 Nov 2012

Ja das ist ein kleiner Bug im Forum, weil die Smileys ja auch Bilder sind. Dumm... Ich weiß. ;)

@Topic:

Genau so hab ich es gemeint. :)


Find the recent autohotkey version here: ahkscript.org