অটোহোটিতে দুটি "কী সিকোয়েন্স" স্ক্রিপ্ট ব্যবহার করে কিছু প্রতিক্রিয়া সমস্যা problems


1

আমার এএইচকে দুটি স্ক্রিপ্ট রয়েছে, উভয়ই "কী সিকোয়েন্সগুলি" দ্বারা চালিত হয়েছিল (খ দুটি বার চাপানো হয়েছে) এবং (1 টি দুবার চাপানো হয়েছে), এখানে কোডটি দেওয়া হয়েছে

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

SetTitleMatchMode RegEx ; matchs apps windows names using RegEx



;   Delay A between key sequence triggers
ARkeySeqDelayA := 250

;   if Presets Panel is in 100%
;   Y axis top in tool presets is 122 pixels
;   Y axis gap between tool presets is 29 pixels
ARtoolPresetTopY := 125
ARtoolPresetGapY := 29
return





#If WinActive("ahk_class ArtRage 3")



b::
if Keyb_presses > 0 ; SetTimer already started, so we log the keypress instead.
{
    Keyb_presses += 1
    return
}
; Otherwise, this is the first press of a new series. Set count to 1 and start
; the timer:
Keyb_presses = 1
SetTimer, Keyb, -250 ; Wait for more presses within a 250 millisecond window.
return

Keyb:
if Keyb_presses = 1 ; The key was pressed once.
{
    BlockInput, MouseMove
    Send {b}
    sleep 80
    MouseClick, left, 195, 55
    Sleep 200
    MouseClick, left, 200, 85
    BlockInput, MouseMoveOff
}
else if Keyb_presses = 2 ; The key was pressed twice.
{
    BlockInput, MouseMove
    Send {b}
    sleep 80
    MouseClick, left, 195, 55
    Sleep 200
    MouseClick, left, 200, 110
    BlockInput, MouseMoveOff
}
; Regardless of which action above was triggered, reset the count to
; prepare for the next series of presses:
Keyb_presses = 0
return





1::
if Key1_presses > 0 ; SetTimer already started, so we log the keypress instead.
{
    Key1_presses += 1
    return
}
; Otherwise, this is the first press of a new series. Set count to 1 and start
; the timer:
Key1_presses = 1
SetTimer, Key1, -250 ; Wait for more presses within a 250 millisecond window.
return

Key1:
if Key1_presses = 1 ; The key was pressed once.
{
    BlockInput, MouseMove
    MouseClick, left, 13, ARtoolPresetTopY
    BlockInput, MouseMoveOff
}
else if Key1_presses = 2 ; The key was pressed twice.
{
    BlockInput, MouseMove
    MouseClick, left, 13, ARtoolPresetTopY + (ARtoolPresetGapY * 8)
    BlockInput, MouseMoveOff
}
; Regardless of which action above was triggered, reset the count to
; prepare for the next series of presses:
Key1_presses = 0
return

তবে কোনওরকমভাবে যখন আমি "1" স্ক্রিপ্টটি ট্রিগার করি এবং তারপরে কয়েক সেকেন্ড পরে আমি "11" স্ক্রিপ্টটি ব্যবহার করতে চাই, আমি নিজের (ম্যানুয়ালি) আগে কোথাও ক্লিক না করে এটি কাজ করবে না, মনে হয় এটিএইচকে আগের লিপিটি এখনও কোনওভাবে রয়েছে চলমান এবং আমার যে কোনও জায়গায় ক্লিক করে এটি শেষ করা দরকার needs

এছাড়াও যখন আমি "বিবি" স্ক্রিপ্টটি ট্রিগার করি এবং তারপরে 1 সেকেন্ড পরে আমি "1" স্ক্রিপ্টটি ব্যবহার করতে চাই এটি কাজ করবে না, আবার মনে হয় যে কোনওরকমভাবে এএইচকে এখনও প্রিভিউস স্ক্রিপ্ট বা অন্য কিছু চলছে, এবং আমাকে তৈরি করতে হবে আমার স্ব ক্লিক করুন এবং তারপরেই এটি "1" স্ক্রিপ্টটি ব্যবহার করবে। সুতরাং আমি একের পর এক "বিবি" এবং "1" স্ক্রিপ্ট চালাতে পারি না (যা আমি সবসময়ই করি, খুব প্রয়োজনীয়) আমাকে তাদের মধ্যে কিছুটা মাউস ক্লিক না করে আমি কীভাবে এড়াতে পারি ??

আরও পরীক্ষার পরে, আমি স্ক্রিপ্টের সমস্ত এক্সিকিউটিভ অংশগুলিকে ন্যায়বিচারে প্রতিস্থাপন করি

Run C:\Users\myname\Desktop\AR4 bb.exe    ; the same script done in a macro recorder
click up left

এবং আমি লক্ষ্য করেছি যে সমস্যাটি এখনও অব্যাহত রয়েছে, একইভাবে স্ক্রিপ্টটি কীভাবে একক এবং ডাবল কী-টিপসকে আলাদা করে দেখায় যা স্ক্রিপ্টটিতে টানা দু'বার চালিত হয়। যদি আমি "বি" টি এক সেকেন্ড অপেক্ষা করে রাখি তবে আমি নিজে থেকে কোনও মাউস ক্লিক না করি এবং "বিবি" (খ দুইবার) টিপুন এটি "বি" কার্যকর করবে, তবে আমি যদি আগে নিজেই কিছু মাউস ক্লিক করি তবে এটি "বিবি" কার্যকর করবে। কেন এমন হচ্ছে?

আমি কি করতে পারি?? এই লিপিটি আরও প্রতিক্রিয়াশীল করার জন্য এমন কোনও আদেশ রয়েছে যা আমি যুক্ত করতে পারি?

ধন্যবাদ উন্নত।


যতদূর আমি বলতে পারি: 1) " সেটটাইমার , কিবি, -250" কম (ঘুম 80 + ঘুম 200)। এটিকে "সেটটাইমার, কীবি, -300" দিয়ে প্রতিস্থাপন করুন) 2 " প্রেরণ {বি}" মিথ্যা। এটি "প্রেরণ বি" দিয়ে প্রতিস্থাপন করুন 3) সমস্ত "মাউস ক্লিক , বাম" " ক্লিক " দিয়ে প্রতিস্থাপন করুন । ক্লিক আরও নির্ভরযোগ্য। আরও দেখুন: স্ক্রিপ্ট ডিবাগিং
ব্যবহারকারী 3419297

হাই ইউজার 3419297 আমি পরিবর্তনগুলি প্রয়োগ করেছি, তবে এখনও একইরকম, স্ক্রিপ্টটি কাজ করে, তবে এটি প্রয়োজন যে আমি নিজে নিজেই কোথাও ক্লিক করতে পারি, দুটি স্ক্রিপ্টের মধ্যে, অন্য কথায়, এটি একের পর এক দুটি স্ক্রিপ্ট চালাতে পারে না, আমি তাদের মধ্যে না করেই ম্যানুয়ালি কিছু ক্লিক করুন, কেন? একটি খুব নির্দিষ্ট সমস্যা, যেমন কোনওভাবে প্রথম স্ক্রিপ্টটি (রান করার পরে) চলতে থাকে, বা ঝুলিয়ে রাখা হয়। আমার মনে আছে যে এএইচকেতে কিছু চর ছিল যা হটকির আগে স্থান পেতে পারে, যেমন বি বি, সম্ভবত তাদের মধ্যে কিছু এখানে সহায়তা করতে পারে। কোন ধারণা? এই সমস্যাটি আমি আর কোথায় পোস্ট করতে পারি ?? অগ্রিম ধন্যবাদ
litu16

আমি বুঝতে পেরেছি যে এটি কেবল "বি" এবং "বিবি" হটকিগুলির সাথেই ঘটেছিল, আমি প্রায় নিশ্চিতই এটি কিউজ, যখন প্রথম ক্লিকটি একটি মেনু প্রদর্শিত হয়, সুতরাং দ্বিতীয় ক্লিকটি সেই মেনুর আইটেমটির কয়েকটিতে ক্লিক করে। অন্যান্য ম্যাক্রো রেকর্ডারগুলিতে আপনাকে অবশ্যই ম্যাক্রো রেকর্ডারকে বলতে হবে যে একটি মেনু উপস্থিত হয়েছিল, অন্যথায় দ্বিতীয় কিকটি কাজ করবে না, এটি কি এইএইচকে দিয়ে একইভাবে ঘটে ?? "বি" স্ক্রিপ্টে কি আমার প্রথম ক্লিক এবং দ্বিতীয় ক্লিকের মধ্যে কিছু নির্দেশ দেওয়ার দরকার আছে ??? ধন্যবাদ উন্নত।
litu16

সমাধান হয়েছে, আমি "বি" এবং "বিবি" ক্রিয়া শেষে কেবল আর্টরেজকে প্রত্যাখ্যান করেছি। সুতরাং "বি" এবং "বিবি" ঠিকঠাক কাজ করে তবে "বি" এবং তারপরে "1" গুলি চালানোর সময় আমার প্রতিক্রিয়াতে এখনও কিছুটা পিছিয়ে আছে।
litu16

হাই ব্যবহারকারী 3419297 আরেকটু সন্দেহ, গণিত ক্রিয়াকলাপ সম্পাদন করতে হবে এমন ক্রমটি সেট করার জন্য আমার কী পেরেনস লাগানো দরকার? MouseClick, Left, 13, VarA + (VarB * 2)বা আমি এগুলি কীভাবে রাখব? ধন্যবাদ উন্নত।
litu16

উত্তর:


1

মাউস ডান উইন্ডোতে সঠিক অবস্থানটি ক্লিক করে কিনা তা নিয়ন্ত্রণ করার জন্য, আপনি এটি ব্যবহার করতে পারেন:

F1::
ARtoolPresetTopY := 125
ARtoolPresetGapY := 29

Ypos := ARtoolPresetTopY + (ARtoolPresetGapY * 8)
MsgBox, %Ypos%  ; Press Enter for closing this MsgBox.

; Click, 13, %Ypos%
; or
ControlClick, x13 y%Ypos%, ahk_class ArtRage 3

MouseMove, 13, %Ypos%, 0 ; this line is only needed for getting the mouse position and the name of the control you want click:
MouseGetPos, MouseX, MouseY, WindowUnderMouse, ControlUnderMouse
WinGetTitle, title, ahk_id %WindowUnderMouse%
WinGetClass, class, ahk_id %WindowUnderMouse%

MsgBox, MouseX = %MouseX%`nMouseY = %MouseY%`n`nWinTitle = %title%`nWinClass = ahk_class %class%`n`nControlUnderMouse = %ControlUnderMouse%
return
  • ক্লিকের পরিবর্তে আপনি কন্ট্রোলক্লিক ব্যবহার করতে পারেন (তারপরে আপনার ব্লকইনপুট লাগবে না)।

  • "বি ::" এবং "1 ::" এর পরিবর্তে " $ বি :: " এবং " $ 1 :: " প্রতিস্থাপনের চেষ্টা করুন । (কীবোর্ড হুকের সর্বদা প্রাধান্য থাকে)।

  • আরও দেখুন: একটি স্ক্রিপ্ট ডিবাগ করা


আমি কন্ট্রোলক্লিক কীভাবে ব্যবহার করব সে সম্পর্কে আমি নিশ্চিত নই, আমি এটি এটি করেছিলাম CotrolClick, 195, 55, ahk_class ArtRage 3তবে এটি কোনও কিছুই ক্লিক করে না, আপনি কীভাবে নিয়ন্ত্রণের ক্লিকটি কীভাবে মাউসের অবস্থান ব্যবহার করে XY এবং ahk_class পরামিতি হিসাবে ব্যবহার করতে পারেন তার একটি উদাহরণ পোস্ট করতে পারেন, ধন্যবাদ উন্নত।
litu16

আমার সম্পাদিত উত্তর এবং উদাহরণগুলিতে কন্ট্রোলক্লিক দেখুন ।
ব্যবহারকারী 3419297

হাই, ইউজার 3419297, আমি 1 এবং 11 টি ক্রিয়াকলাপগুলিতে রেখেছি, কারণ 1, 2, 3 4, 5, 6, 7, 8 রয়েছে এবং সমস্ত প্রায় একই রকম হয়, আমি সন্দেহ করি যেহেতু আমি এগুলিকে রূপান্তরিত করেছি একক ফাংশন, তারা একটু ধীর চালাতে পারে, এটা কি সম্ভব? এএইচকে কি ফাংশনগুলি ধীরে চলবে ?? ধন্যবাদ উন্নত।
litu16

হাই ইউজার 3419297 আমার এখানেও একই সমস্যা রয়েছে, উইন্ডোজ ফোকাসের হারিয়ে যাওয়া নিয়ে আমার খুব কষ্ট হয়েছিল, আমি আহ ফোরামটিতে অনুসন্ধান করেছি, তবে কোডটি কীভাবে লিখতে হবে তা ঠিক বুঝতে পারি না, কিছু চেষ্টা করেছি, আপনি কি এটি পরীক্ষা করে দেখতে পারেন? superuser.com/questions/1150737/… ধন্যবাদ অগ্রসর।
litu16

যদি আমি% পয়সা% এর পরিবর্তে প্যারামিটারটি ব্যবহার করতে চাই, তবে এখন এই ক্রিয়াগুলি কোনও ফাংশনের অভ্যন্তরে রয়েছে এবং এর পরামিতিগুলি কর্ডেনেটস, আমি কি ব্যবহার করতে পারি ControlClick x%ParamA% y%ParamB%?? ধন্যবাদ অগ্রসর।
litu16
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.