Parameterübergabe

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

DocToday
Posts: 1
Joined: 16 Sep 2014, 16:09

Parameterübergabe

16 Sep 2014, 16:19

Ich möchte gern Parameter an ein laufendes Script übergeben. Bislang mache ich das mit einer Ini-Datei, die mit einem Timer abgefragt wird. Geht das auch anders? Z. B. eine Variable auf Windowsebene, die von mehreren Programmen geändert werden kann und vom Script ausgelesen wird.
gero
Posts: 173
Joined: 02 Oct 2013, 05:36

Re: Parameterübergabe

16 Sep 2014, 18:28

Hallo ... schon mal an die Registry gedacht ... ?
Das geht ganz komfortabel per RegWrite + RegRead ... und verbraucht quasi keine Ressoursen.

gruss
gero
User avatar
Seidenweber
Posts: 17
Joined: 30 Sep 2013, 11:40

Re: Parameterübergabe

16 Sep 2014, 20:08

DocToday wrote:Ich möchte gern Parameter an ein laufendes Script übergeben.
Windows-Programme "unterhalten" sich intern durch Messages. Dieselbe Methode kannst du auch benutzen.
Ich habe hier mal ein einfaches Beispiel gebastelt. Die Datei Receiver.ahk zeigt eine Messagebox mit dem Text an, der via SendMessage vom Script Sender.ahk geschickt wurde.

Der Vorteil ist, dass du nicht periodisch nach eventuellen Daten suchen musst, sondern die Funktion OnMessage() ständig "abhört", ob was gesendet wurde und dann automatisch anspringt.
Eingentlich genial einfach. Ob das aber für deine Zwecke eine geeignete Methode ist, kann ich nicht sagen ;)

Sender.ahk

Code: Select all

;   =============================================================================================================================
;   AHK-Version ....: AHK_L 1.1.16.04 x64 Unicode
;   Getestet unter .: Windows 7 Ultimate x64 SP1
;   Autor ..........: Seidenweber
;   =============================================================================================================================

;   #GLOBALE EINSTELLUNGEN# =====================================================================================================

    #NoEnv
    #SingleInstance force

;   #AUTOEXEC-SEKTION# ==========================================================================================================

    SomeText := "Das Knollenwachstum der Solanum tuberosum steht in reziproker Proportionalität zur kognitiven Leistungsfähigkeit des Argrarökonomen."

    SendTTS(SomeText)

;   #ENDE DER AUTOEXEC-SEKTION# =================================================================================================
    Return                    ; Nachfolgend werden Funktionen, Sub-Label und HotKeys definiert
;   =============================================================================================================================

    SendTTS(TTSText) {
        VarSetCapacity(CopyDataStruct, 3*A_PtrSize, 0)
        SizeInBytes := (StrLen(TTSText) + 1) * (A_IsUnicode ? 2 : 1)
        NumPut(SizeInBytes, CopyDataStruct, A_PtrSize)
        NumPut(&TTSText, CopyDataStruct, 2*A_PtrSize)
        saveDHW := A_DetectHiddenWindows
        DetectHiddenWindows On
        SendMessage, 0x4a, 0, &CopyDataStruct,, SpeechReceiverScript
        DetectHiddenWindows %saveDHW%
        Return ErrorLevel
    }

;   #HOTKEY# ====================================================================================================================
;   Beenden des Scriptes
;   =============================================================================================================================
    Escape::
        SoundPlay, *64
        ExitApp
;   =============================================================================================================================
Receiver.ahk

Code: Select all

;   =============================================================================================================================
;   AHK-Version ....: AHK_L 1.1.16.04 x64 Unicode
;   Getestet unter .: Windows 7 Ultimate x64 SP1 als kompilierte 32-Bit-EXE
;   Autor ..........: Seidenweber
;   Quelle .........: Hilfe zu OnMessage()
;   Funktion .......: Empfängt per Message (WM_COPYDATA) Texte von einem anderen Script
;   =============================================================================================================================

;   #GLOBALE EINSTELLUNGEN# =====================================================================================================

    #NoEnv
    #SingleInstance force

;   #AUTOEXEC-SEKTION# ==========================================================================================================

    Gui, +LastFound +ToolWindow
    Gui, Show, Hide, SpeechReceiverScript

    OnMessage(0x4a, "Receive_WM_COPYDATA")  ; 0x4a is WM_COPYDATA

;   #ENDE DER AUTOEXEC-SEKTION# =================================================================================================
    Return                    ; Nachfolgend werden Funktionen, Sub-Label und HotKeys definiert
;   =============================================================================================================================

    Receive_WM_COPYDATA(wParam, lParam) {
        MsgBox,4160,Nachricht empfangen, % StrGet(NumGet(lParam + 2 * A_PtrSize))
    }

;   #HOTKEY# ====================================================================================================================
;   Beenden des Scriptes
;   =============================================================================================================================
    Escape::
        SoundPlay, *64
        ExitApp
;   =============================================================================================================================

Questions and answers are related to AHK 1.1.13.01 (x64) & Win 7 pro x64

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 42 guests