2017-02-08 12 views
1

私は以下のhotstringであるsubroutines.ahkという名前のtxtファイルを持っています。AHK #Includeを使用せずにホットストリングを読み込むSubroutines.ahk

::btw::Thank you for the help 

私は別のスクリプトから私のhotstringを実行したい場合は、私がしなければならないすべては使用してそのスクリプトに含めることを知っている:

#include subroutines.ahk 

をしかし、私は別のスクリプトからその代わりをしたいいけません私はループして、subroutines.ahkの内容を読み込み、その方法でホットストリング変数をロードします。

Loop, read,subroutines.ahk 
{ 
    Loop, parse, A_LoopReadLine, %A_Tab% 
{ 
    MsgBox, Field number %A_Index% is %A_LoopField%. 
} 
} 

私はそのように別のスクリプトに私hotstring変数を読み込むことができますどのようにあなたの助けを本当に感謝します。

私はhotsringをsubroutines.ahkでエンコードし、2番目のプログラムのsubroutines.ahkの内容をデコードしてメモリにロードする予定です。 上記の例では、最初にtxtファイルをループしてそこからホットストリングを実行する方法を見つけようとしていますが、

答えて

1

あなたが "ABC" を入力すると動的な値にマッピングするホットキー

; Replace hash values with whatever method you use to decrypt your hotstrings 
decrypted := {abc: "alpha", def: "beta"} 

::abc:: 
    Send % decrypted["abc"] 
    return 
::def:: 
    Send % decrypted["def"] 
    return 

の使用は、 "アルファ" の代わりに

1

#ディレクティブは、スクリプトの起動時に一度だけ処理されます。この制限を回避するには、#ディレクティブを含む動的に生成されたスクリプトを実行するのにreloadを使用できます。

コードサンプル:

F1を押すと、#ディレクティブ利用したコードを生成して実行するために、 "subroutines.ahk" の内容を使用:あなたがしたい場合は、

また
F1:: reload_hotstrings() 

#Include temp.ahk 

reload_hotstrings() 
{ 
    FileDelete temp.ahk 
    loop read, subroutines.ahk 
    { 
    MsgBox Hotstring number %A_Index% is %A_LoopReadLine%. 
    FileAppend %A_LoopReadLine%`n, temp.ahk 
    } 
    reload 
} 

を自動ホットキーが起動するたびにホットキーコードが自動的に生成されます:subroutines.ahkファイルにはsource.datが使用されています

コードサンプル:

FileGetTime source_time, source.dat 
FileGetTime compiled_time, compiled.ahk 
; calculate time difference between source and compiled files 
EnvSub source_time, %compiled_time%, Seconds 

; compile and run if source newer 
if source_time > 0 
{ 
    FileDelete compiled.ahk 
    loop read, source.dat 
    { 
    FileAppend %A_LoopReadLine%`n, compiled.ahk 
    } 
    reload 
} 

#Include compiled.ahk 
+0

これを表示されますデモ#include compiled.ahkに追加して再ロードすることに戻ってくる以外は良いです...私はsource.datを持っているので、それを避けようとしています。私はソースをロードするときに暗号化されています。私はそれを解読するよりも...私はそれを解読したら問題を抱きます。ただロードして実行したいのですが、解読されたコンテンツをディスクに保存したくありません。 – user3548161

+0

解読されたコンテンツをディスクに保存しないようにする新しい答えを見てください。復号化された値には文字列リテラルを含むハッシュを使用しますが、データファイルから値をプログラムで復号化できます –

関連する問題