অটোহোটকি সহায়তা- # ইনপুটলেভ তবে কী সংমিশ্রণটি ওভাররাইট করবেন না?


0

[সহায়তা] # ইনপুটলেভ তবে কী সংমিশ্রণটি ওভাররাইট করবেন না?

আমার কাছে দুটি আহ স্ক্রিপ্ট রয়েছে, উভয়ই পুনরায় "কে" রয়েছে, তবে স্ক্রিপ্ট 1-এ "স্ক্রললক & কে" রয়েছে

script1.ahk

k::msgbox script1
scrolllock & k::click

script2.ahk

k::msgbox script2

আমি এটি চাই: একই সাথে উভয় স্ক্রিপ্ট চালানোর সময়, আমি কে টিপলে এটি স্ক্রিপ্ট 2.এইচকে কার্যকর করবে (যা "msgbox স্ক্রিপ্ট 2 দেখায়),

অন্য উপায়ে, স্ক্রিপ্ট 2 স্ক্রিপ্ট 1 ওভাররাইট করে

সুতরাং আমি স্ক্রিপ্ট 2.এইচকে # ইনপুটলেভেল 2 রেখেছি

এটি এখন এই মত দেখাচ্ছে

script1.ahk

k::msgbox script1
scrolllock & k::click

script2.ahk

#inputlevel2
k::msgbox script2

তবে এখন যদি আমি "স্ক্রললক & কে" টিপই, এটি ক্লিক করে না (স্ক্রিপ্ট 1 এর ফাংশন) তবে এটি চিত্রবাক্স (স্ক্রিপ্ট 2) দেখায় আমার ধারণা কারণ "কে" স্ক্রিপ্ট 2 দ্বারা ওভাররাইট করা হয়েছে এবং "স্ক্রললোক & কে" আর স্বীকৃত হবে না

আমি স্ক্রোললক & কে কাজ করার একটি উপায় খুঁজে পেয়েছি, যখন আমি স্ক্রিপ্ট 1 পুনরায় লোড করি এবং স্ক্রোললকে & কে চাপতাম, এটি কার্যকর হবে

তবে আমি যদি স্ক্রিপ্ট 2 পুনরায় লোড করি তবে কীটির সংমিশ্রণের কাজটি করতে আমাকে আবার স্ক্রিপ্ট 1 পুনরায় লোড করতে হবে

অন্য উপায়ে, আমার প্রশ্নটি কি স্ক্রিপ্ট 2 এর "কে" কে স্ক্রিপ্ট 1 এর "কে" তে ওভাররাইট করা সম্ভব তবে তবুও স্ক্রিপ্ট 1 এর "স্ক্রললক এবং কে" এর মতো ফাংশন করা যায়?

ধন্যবাদ

উত্তর:


1

কীভাবে এটি কাজ করে তা নিশ্চিত নয় #InputLevel

একটি সমাধান হতে পারে উভয় স্ক্রিপ্ট থেকে একটি সাধারণ ফাংশন কল যা কোনও #Includeবিবৃতি দিয়ে বোঝানো হয়। এটি স্ক্রিপ্ট 2 চলছে কিনা তা সনাক্ত করতে হবে এবং স্ক্রিপ্ট 2 চলছে কিনা তা কার্যকর করতে হবে না।

স্ক্রিপ্ট 2 -র kকী কী স্ক্রিপ্ট 1-এ scrolllock & kযেতে হবে তাই স্ক্রিপ্ট 1-এ কাজ করবে।

নীচের কোডটি একটি উদাহরণ, পরীক্ষিত নয় - আমি নিশ্চিত যে এটি সমাধানের আরও মার্জিত উপায় রয়েছে তবে এটি কার্যকর হতে পারে বা আপনাকে আরও কাছে পেতে পারে। এটি আমি কীভাবে কোড করব ঠিক এটি নয় তবে এটি একটি উদাহরণ ধারণা হিসাবে আরও বেশি বোঝানো হয়েছে।

; -----------------------
; Script1.ahk
; -----------------------
#Persistent
k::functionk(A_ScriptName)
scrollock & k::Click
#Include functionCalls.ahk

; -----------------------
; Script2.ahk
; -----------------------
#Persistent
Script2Running("Set", True)      ; auto-execute when script2 starts
OnExit(Script2Exit)
return

~k::functionk(A_ScriptName)      ; tilde should let k pass through to script1

Script2Exit()
{
    Script2Running("Set",False)
}
#Include functionCalls.ahk

; -----------------------
; functionCalls.ahk
; -----------------------
functionk(callersScriptName)
{
    if (callersScriptName="script1.ahk") and not script2Running()
    {
        msgbox script1
        ; add code as needed
    }
    else if (callersScriptName="script2.ahk")
    {
        msgbox script2    
        ; add code as needed
    }
    else
        msgbox Unrecognized script name: %callersScriptName%
}

Script2Running(SetOrRead := "", newState := false)  
{
    static running := false
    if (SetOrRead="Set")
        running := newState

    return running       ; same as 'return %running%', see help topic on return
}

সহায়তার জন্য আপনাকে অনেক ধন্যবাদ, আমি এটির সত্যই প্রশংসা করি তবে "~ কে :: ফাংশন (এএসক্রিপ্টনাম) এ ~ কে; টিল্ডকে কে স্ক্রিপ্ট 1 এ যেতে হবে" আমি স্ক্রিপ্ট 2 এ চালানোর সময় কীস্ট্রোক কে প্রেরণ করবে, এটিই আমি চাই না, উদাহরণস্বরূপ যদি আমি ~ k :: ক্লিক করতে চাই, তবে এটি বর্তমান সক্রিয় উইন্ডো নোটপ্যাড, শব্দ থাকলে কে পাঠিয়ে দেবে .... আমি কেবল এটি "ক্লিক" করতে চাই (উদাহরণস্বরূপ আমি বলেছি) ) "কে" আবার পাঠাবেন না ধন্যবাদ
এনএইচ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.