শুরু করার জন্য, আপনাকে বুঝতে হবে যে যারা কম্পিউটারে বিভিন্ন ক্রিয়াকলাপ স্বয়ংক্রিয় করার জন্য প্রোগ্রামগুলিতে আগ্রহী, মাউসের নড়াচড়া এবং কীবোর্ড কীস্ট্রোকগুলি অনুকরণ করে তারা কী চায় তারা পুরোপুরি বুঝতে পারে না। বাইরে থেকে, সবকিছু সহজ বলে মনে হচ্ছে - আমার একটি প্রোগ্রাম দরকার যা মাউস এবং কীবোর্ডের সাথে আমার ক্রিয়াগুলি পুনরুত্পাদন করবে, তাদের অনুকরণ করবে। ঠিক আছে, আসুন পরিস্থিতির সারমর্ম বোঝার চেষ্টা করি...

ম্যাক্রো - আপনি যদি কম্পিউটারে ক্রিয়াগুলি স্বয়ংক্রিয় এবং অনুকরণ করার জন্য প্রোগ্রামগুলি খুঁজছেন, তবে আপনার জানা উচিত যে ম্যাক্রোর মতো একটি জিনিস রয়েছে। এটি একটি উদাহরণ প্যাকেজ তাকান সেরা মাইক্রোসফট অফিস. তাদের প্রোগ্রামে (Word, Excel...) একটি অন্তর্নির্মিত ভিজ্যুয়াল বেসিক ভাষা সম্পাদক থাকে। বেসিক, ভিজ্যুয়াল বেসিক, ভিবিস্ক্রিপ্ট, এটা কোন ব্যাপার না, প্রধান জিনিস হল এটি মাইক্রোসফ্ট সম্পর্কিত একটি প্রোগ্রামিং ভাষা। আসলে, আঙ্কেল বিল থেকে অন্যান্য প্রোগ্রামিং ভাষায় একটি অনুরূপ বা সাদৃশ্যপূর্ণ ভাষা সিনট্যাক্স ব্যবহার করা যেতে পারে। স্বতন্ত্র প্যাকেজগুলির বিপরীতে, মাইক্রোসফ্ট অফিসের ভিজ্যুয়াল বেসিক এডিটরটি অফিস পরিবেশে কোড চালানোর জন্য ডিজাইন করা হয়েছে, যেমন ওয়ার্ড বা এক্সেল। অনুরূপ সরঞ্জাম আছে. সুতরাং, আপনি সম্পাদকে প্রোগ্রাম কোড লিখতে পারেন, এটি সংরক্ষণ করতে পারেন, যেখানে এটিকে ম্যাক্রো বলা হয় এবং এটি পর্যায়ক্রমে চালাতে পারেন। একটি ম্যাক্রোতে সাধারণত প্রোগ্রাম কোড থাকে যা আপনাকে দ্রুত রুটিন কাজ সম্পাদন করতে দেয়, উদাহরণস্বরূপ:

  • প্রতিটি দ্বিতীয় অনুচ্ছেদে একটি শৈলী প্রয়োগ করুন।
  • সমস্ত টেবিলকে পাঠ্যে রূপান্তর করুন এবং নির্দিষ্ট বিন্যাস প্রয়োগ করুন।
  • স্বয়ংক্রিয়ভাবে বিষয়বস্তু বিভক্ত করুন এবং পৃথক নথিতে সংরক্ষণ করুন।

অন্যান্য প্রোগ্রামে ম্যাক্রো নিজেই আপনাকে অনুমতি দেয়:

  • একটি মাউস বোতাম প্রেস অনুকরণ.
  • কীবোর্ড কী টিপে সিমুলেশন।
  • মাউস ক্লিক অনুকরণ.
  • কীবোর্ড অনুকরণ।
  • ইঁদুর চলাচলের অনুকরণ।

Word এবং Excel এর জন্য বিভিন্ন ম্যাক্রোর উদাহরণ বড় সংখ্যা. যাইহোক, তাদের প্রধান সুবিধা হল যে এগুলি কোড না লিখেই তৈরি করা যেতে পারে, আপনি কেবল প্লে বোতাম টিপুন এবং আপনার ক্রিয়াগুলি রেকর্ড করা শুরু হবে (পাঠ্য নির্বাচন করা, একটি শৈলী প্রয়োগ করা)। রেকর্ডিং শেষ করার পরে (স্টপ টিপে), প্রোগ্রাম কোড সহ একটি নতুন ম্যাক্রো স্বয়ংক্রিয়ভাবে প্রদর্শিত হবে। এর পরে, আপনি সংরক্ষিত ম্যাক্রো চালাতে পারেন, যা ক্রিয়াগুলি স্বয়ংক্রিয় করতে কাজ করবে। এটা স্পষ্ট যে পরোক্ষভাবে, ম্যাক্রোগুলিকে কম্পিউটারে Word এডিটর বা এক্সেল স্প্রেডশীট প্রসেসরে ব্যবহারকারীর ক্রিয়াগুলি স্বয়ংক্রিয় করার জন্য এক ধরণের প্রোগ্রাম হিসাবেও বিবেচনা করা যেতে পারে। আনুষ্ঠানিকভাবে, ম্যাক্রোও অফিসে তৈরি করা হয়, শুধুমাত্র সম্পাদকের মধ্যে।

আপনাকে বুঝতে হবে যে ম্যাক্রোর মতো একটি ধারণা প্রোগ্রামিং এবং ভাষার অন্যান্য ক্ষেত্রে ব্যবহৃত হয়।

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

এমন একটি প্রোগ্রাম তৈরি করা যা আপনার সমস্ত মাউস এবং কীবোর্ড ক্রিয়াগুলিকে পুনরুত্পাদন করতে পারে এমন কোনও সমস্যা নয় আপনি এমনকি উইন্ডো প্রসেসিং চালু করতে পারেন। যাইহোক, এটি শুধুমাত্র একটি সাধারণ সিমুলেশন হবে, যা উপযুক্ত হবে যদি আপনাকে দ্রুত এক বা একাধিক নির্দিষ্ট পয়েন্টে কয়েকটি মাউস ক্লিক করতে হয়, অথবা স্বয়ংক্রিয়ভাবে ডেটা সহ বেশ কয়েকটি ফর্ম পূরণ করতে হয়।

এটা স্পষ্ট যে অনেক ব্যবহারকারী আছে, এবং অনেক কাজ আছে. কাউকে ফাইল বা ডিরেক্টরি বাছাই এবং নাম পরিবর্তন করার প্রক্রিয়া স্বয়ংক্রিয় করতে হবে। কেউ অবিলম্বে একশত একটি নকশা প্রয়োগ করতে চায় শব্দ নথি. পরবর্তী ক্ষেত্রে, txt নথিগুলির জন্য, আপনি Notepad++ সম্পাদক ব্যবহার করতে পারেন।

ঠিক আছে, আসুন নিবন্ধটির বিষয়ে কয়েকটি সহজ প্রোগ্রাম দেখি।

কীবোর্ড, মাউস, মুভমেন্ট এবং ক্লিক অনুকরণ করার জন্য ম্যাক্রো ডলার প্রোগ্রাম

ম্যাক্রো ডলার- এটা পুরানো এবং সহজ সফ্টওয়্যারমাউস এবং কীবোর্ড ক্রিয়াগুলির অটোমেশন এবং সিমুলেশন। এই বিষয়টি বিবেচনা করে যে প্রোগ্রামটি আপনাকে সম্পূর্ণরূপে রেকর্ড করতে এবং তারপরে মাউস এবং কীবোর্ডের ক্রিয়াগুলি অনুকরণ করতে দেয়, এটিকে একটি পূর্ণাঙ্গ ম্যাক্রো বলা যেতে পারে।

একবার আমরা ম্যাক্রো ডলার চালু করলে, আমরা রেকর্ডিং, থামাতে এবং খেলা শুরু করার জন্য বোতাম সহ একটি ছোট উইন্ডো দেখতে পাব। এছাড়াও চেক বন্ধ করার জন্য কয়েকটি জিনিস রয়েছে:

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

আইকন এবং পাঠ্য ক্ষেত্র দ্বারা বিচার করে, প্রোগ্রামটি আপনাকে পাঠ্য স্ক্রিপ্টে লেখা কমান্ড ব্যবহার করে আপনার নিজস্ব ম্যাক্রো তৈরি করতে দেয়। যাইহোক, এটি আমার জন্য যথেষ্ট যে ম্যাক্রো ডলার মাউস এবং কীবোর্ড অ্যাকশন রেকর্ড করতে পারে এবং তারপর সেগুলিকে অনুকরণ করতে পারে।

ম্যাক্রো ডলার একটি পোর্টেবল প্রোগ্রাম।

WinMacro আরেকটি সহজ প্রোগ্রামমাউস নড়াচড়া এবং কীবোর্ড বোতাম অনুকরণ

WinMacroম্যাক্রো ডলারের মতোই পুরানো একটি প্রোগ্রাম এবং এখনও দুর্দান্ত কাজ করে৷ রেকর্ড করার জন্য মাত্র 3টি ধাপ প্রয়োজন; ফাইলটি নির্দিষ্ট করুন যেখানে রেকর্ডিং করা হবে, রেকর্ড বোতামে ক্লিক করুন এবং ক্লিক করুন হটকিরেকর্ডিং বন্ধ করার জন্য বিরতি/ব্রেক। যখনই আপনি একটি রেকর্ডিং প্লে ব্যাক করতে চান, কেবল সংরক্ষিত .log ফাইলের পথটি নির্দিষ্ট করুন এবং প্লে বোতামে ক্লিক করুন৷ হটকি Ctrl + Esc ব্যবহার করে প্লেব্যাক বাতিল করা যেতে পারে। বিকল্প বোতামটি আপনাকে পুনরাবৃত্তির সংখ্যা এবং প্লেব্যাকের গতি সেট করতে দেয়।

ঘোস্টমাউস - মাউস এবং বোতাম প্রেসের ভৌতিক সিমুলেশন

ঘোস্টমাউসব্যবহারকারীর ক্রিয়াগুলি অনুকরণ করার জন্য একটি খুব সাধারণ প্রোগ্রাম, যার প্রধান উইন্ডোতে মাত্র 2টি বোতাম রয়েছে (প্লে এবং রেকর্ড)৷ এটি দ্রুত এবং স্বল্পমেয়াদী ব্যবহারের জন্য আরও উপযুক্ত, তবে অবশ্যই, পুনরাবৃত্তিমূলক কাজগুলি স্বয়ংক্রিয় করার জন্যও।

পূর্ববর্তী উদাহরণগুলির বিপরীতে, ঘোস্টমাউস পোর্টেবল নয় এবং ইনস্টলেশনের প্রয়োজন। বিকল্প মেনুতে, আপনি প্লেব্যাকের গতি সেট করতে পারেন, সেইসাথে প্রোগ্রামটি কী রেকর্ড করা উচিত বা রেকর্ড করা উচিত নয় - কীস্ট্রোক, মাউস নড়াচড়া ইত্যাদি নির্দিষ্ট করতে পারেন।

এটি আবার করুন - ম্যাক্রোগুলির একটি তালিকা তৈরি করুন

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

অ্যাকশন প্রোগ্রাম – কম্পিউটারে অ্যাকশনের সম্পূর্ণ অটোমেশন

কর্ম(গুলি)এটি অটোমেটরের একটি ভিজ্যুয়াল ক্লোন, যা অবশ্য উপলব্ধ মিথস্ক্রিয়াগুলির তালিকায় সামান্য কম বিকল্প সরবরাহ করে।

অটোমেটর- OS X-এর জন্য একটি বুদ্ধিমান অন্তর্নির্মিত অ্যাপ্লিকেশন যা আপনাকে কোনো স্ক্রিপ্টিং ভাষা না জেনেই আপনার কম্পিউটারে অ্যাকশনের অটোমেশন বাস্তবায়ন করতে দেয়। অ্যাপ্লিকেশনটি তাদের জন্য দরকারী হতে পারে যারা প্রায়শই ডিজিটাল ফটো নিয়ে কাজ করেন। একটি উপযুক্ত উদাহরণ হিসাবে, আপনি একটি স্বয়ংক্রিয় পদক্ষেপের প্রয়োজনীয়তা নির্দিষ্ট করতে পারেন - একটি প্রদত্ত ফোল্ডার থেকে সমস্ত ফটো একটি নতুন ডিরেক্টরিতে অনুলিপি করুন, তাদের রেজোলিউশন 72 DPI কমিয়ে দিন এবং সেগুলিকে একটি CMYK ডিজিটাল মডেল থেকে RGB তে রূপান্তর করুন৷ উপরন্তু, যাইহোক, আপনি পাঠ্য সহ কাজ স্বয়ংক্রিয় করতে পারেন, ইমেল দ্বারা, পিডিএফ নথি, রান স্ক্রিপ্ট সেট করুন নির্দিষ্ট সময়, এবং, উদাহরণস্বরূপ, একটি SQL ডাটাবেসের সাথে কাজ করুন।

তারা উইন্ডোজ এবং বিপরীতভাবে, OS X এর জন্য তাদের নিজস্ব সংস্করণ অফার করে। আপনি ইমেল, ফাইল এবং ফোল্ডার, ছবি, ব্রাউজার এবং সাধারণ পাঠ্য সহ আপনার কম্পিউটারে অ্যাকশনের অটোমেশন ইনস্টল করতে পারেন।

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

উপসংহার

বিরল অনুষ্ঠানে আমি উপসংহার হিসাবে একটি নিবন্ধের শেষ লাইন অবলম্বন করি, কিন্তু এখানে আমি ব্যতিক্রম করার সিদ্ধান্ত নিয়েছি।

নিবন্ধটি শুরু করে, আমি বলতে ভুলে গেছি যে এটি কেবল ওয়ার্ড, এক্সেল সম্পাদকেই নয়, এতেও পাওয়া যায় গ্রাফিক সম্পাদকফটোশপ। হ্যাঁ, সেখানে একটি ফাংশন আছে যেটি, কোনোভাবে, একটি ম্যাক্রোর অ্যানালগ। সুতরাং, আপনি একটি অঙ্কন প্রক্রিয়া করার সময় ব্যবহৃত ক্রিয়াগুলি রেকর্ড করতে পারেন, সেগুলিকে একই সাথে সংরক্ষণ করুন PSD ফাইল, এবং তারপর শান্তভাবে অন্যান্য গ্রাফিক ডেটার জন্য পুনরুত্পাদন করুন। আমি বিশ্বাস করি কোরেল ড্র এবং অন্যান্য অনুরূপ প্রোগ্রামগুলিতে অনুরূপ ক্ষমতা রয়েছে।

সবাই, খেলার সময়, অন্তত একবার ভেবেছিল: "আমি যদি এমন একটি প্রোগ্রাম লিখতে পারি যা আমার জন্য খেলবে!" কিন্তু সাধারণত এই চিন্তাটা শুধু একটা চিন্তাই থেকে যায়... কিছু একটা প্রতিনিয়ত বাধা হয়ে দাঁড়ায়: কোথা থেকে শুরু করতে হবে তা না জেনে, অপ্রতিরোধ্য কাজের ভয়, আপনার বাম কাঁধ থেকে একটা ফিসফিস শব্দ “এটা কেন? কার এটা দরকার, প্রোগ্রামের সাথে খেলার জন্য? ইত্যাদি

নিবন্ধগুলির এই সিরিজে আমি দেখাতে যাচ্ছি যে, প্রথমত: "শয়তান ততটা ভয়ঙ্কর নয় যতটা সে আঁকা হয়েছে," এবং দ্বিতীয়ত: পরে আমি এই প্রশ্নের উত্তর দিতে যাচ্ছি: "কেন এটি প্রয়োজনীয়?"

এখন সহজ কিছু দিয়ে শুরু করা যাক। গেম এবং প্লেয়ার প্রোগ্রামের (বট) মধ্যে সম্পর্ক স্থাপন থেকে। সুপরিচিত খেলা জুমাকে গিনিপিগ হিসেবে নেওয়া হয়।

যেকোনো মিথস্ক্রিয়া দুটি প্রক্রিয়া নিয়ে গঠিত: "তাদের" কাছে ডেটা পাঠানো এবং "তাদের" থেকে ডেটা গ্রহণ করা। জুমাতে, সমস্ত নিয়ন্ত্রণ মাউস দিয়ে করা হয়, এবং প্রতিক্রিয়াগেমটি একটি চিত্র ব্যবহার করে প্রদর্শন করে। তদনুসারে, প্রথমত, আপনাকে শিখতে হবে কিভাবে প্রোগ্রাম্যাটিকভাবে মাউসের আচরণ অনুকরণ করা যায় এবং গেম থেকে একটি চিত্র প্রাপ্ত করা যায়।

এই নিবন্ধটির মূল লক্ষ্য: একটি প্রোগ্রাম পেতে যা স্বাধীনভাবে গেম প্রক্রিয়ায় বারবার প্রবেশ করে, সেখানে কিছু করে এবং যখন গেম ওভার-ই আবার শুরু হয়। আরও, এই কাঠামোটি সেই দিকে বিকশিত হবে যে বটটি খেলা শেষ না হওয়া পর্যন্ত গেমটিতে আরও এবং দীর্ঘস্থায়ী হবে।

সমাধানযোগ্য সহায়ক সাবটাস্ক: মাউস ইমুলেশন, একটি ভার্চুয়াল মেশিনে মাউস পুনঃনির্দেশ, চিত্র ক্যাপচার।

পশ্চাদপসরণ

এই সিরিজের নিবন্ধগুলির জন্য কোড তৈরি করার সময়, ব্যবহৃত পদ্ধতিটি হল ন্যূনতম প্রচেষ্টার সাথে যত তাড়াতাড়ি সম্ভব ফলাফল পাওয়া। এই পদ্ধতিটি আপনাকে উচ্চ স্তরে অনুপ্রেরণা বজায় রাখার অনুমতি দেয় এবং কাজের অপ্রতিরোধ্যতার মুখোমুখি হলে আপনাকে হাল ছেড়ে দেওয়ার অনুমতি দেয় না। এই কারণে:
- প্রথমত, অনেক নগণ্য (বর্তমান ফলাফলের দৃষ্টিকোণ থেকে) পয়েন্টগুলি দ্রুত স্কিম করা হবে, কোডে "ক্র্যাচ এবং সমর্থন" রেখে। এবং শুধুমাত্র পরবর্তী পুনরাবৃত্তিগুলিতে এই পয়েন্টগুলি আলাদাভাবে বিশ্লেষণ করা হবে এবং "ক্র্যাচগুলি" সম্পূর্ণ কোড দিয়ে প্রতিস্থাপিত হবে।
- দ্বিতীয়ত, কোড শৈলী ক্লাসিক C# এর চেয়ে বেশি "হ্যাকার"। কোডটিতে প্রচুর ল্যাম্বডাস, বেনামী ডেটা, কৌশল, অথোরিয়াল বিচক্ষণতা এবং সম্পূর্ণ অনুপস্থিতিমন্তব্য

মাউস ইমুলেশন

উইন্ডোজ 2 সমর্থন করে আদর্শ পদ্ধতি 4টি ভিন্ন WinApi ফাংশন ব্যবহার করে মাউস ইমুলেশন।

প্রথম উপায়: SendMessage বা PostMessage ফাংশন ব্যবহার করে প্রোগ্রামটিকে নিজস্ব উইন্ডো বার্তা (WM_MOUSEMOVE, WM_LBUTTONDOWN, ইত্যাদি) পাঠানো।

ডাইরেক্টএক্স গেমগুলির জন্য (আমাদের ক্ষেত্রে যেমন), এই পদ্ধতিটি উপযুক্ত নয়, কারণ মাউস পোল করার জন্য এই জাতীয় প্রোগ্রামগুলি ডাইরেক্টইনপুট ব্যবহার করে, যা উইন্ডোজ বার্তাগুলিকে উপেক্ষা করে সরাসরি মাউসকে পোল করে।

দ্বিতীয় উপায়: mouse_event বা SendInput ফাংশন ব্যবহার করে মাউস আচরণের সরাসরি অনুকরণ। এই পদ্ধতিটি পূর্ণ-স্ক্রীন ডাইরেক্টএক্স গেম সহ যেকোনো প্রোগ্রামের জন্য উপযুক্ত। মাউস_ইভেন্ট ফাংশনটি সহজ, তবে এটিকে অপ্রচলিত বলে মনে করা হয়, তবে আরও জটিল। মাউস_ইভেন্টে ফোকাস করা যাক।

C# থেকে WinApi ফাংশনগুলিকে পিনভোক প্রযুক্তি ব্যবহার করে বলা হয়। সর্বাধিক সাধারণ WinApi ফাংশনগুলির জন্য PInvoke বিবরণগুলি PInvoke.net ওয়েবসাইটে পাওয়া যাবে। মাউস_ইভেন্ট ফাংশন ব্যতিক্রম নয়।
পাবলিক স্ট্যাটিক এক্সটার্ন void mouse_event(uint dwFlags, int dx, int dy, uint dwData, UIntPtr dwExtraInfo);

মাউস স্থানাঙ্ক
মাউস_ইভেন্ট ফাংশনের একটি বিশেষ বৈশিষ্ট্য রয়েছে: মাউস স্থানাঙ্কগুলি মিকিতে নির্দিষ্ট করা হয়, পিক্সেলে নয়। মিকিকে পিক্সেলে রূপান্তর করা (এবং এর বিপরীতে) ব্যবহৃত প্রধান মনিটরের রেজোলিউশনের উপর নির্ভর করে। (0,0) মনিটরের উপরের বাম কোণে এবং (65535, 65535) নীচের ডানদিকে, যা মিকিকে পিক্সেলে রূপান্তর করার সূত্র দেয় এবং এর বিপরীতে: mickey_point = pixel_point * (65536, 65536) / screen_size এবং pixel_point = mickey_point * screen_size / (65536, 65536)।
বেসিক অপারেশন
উপরের সবগুলো সংক্ষিপ্ত করে, আমরা মাউস নিয়ন্ত্রণের জন্য নিম্নলিখিত ক্রিয়াকলাপগুলি পাই।
মাউস কার্সারকে পয়েন্টে সরানো হচ্ছে (x,y):
mouse_event(MouseEventFlags.MOVE | MouseEventFlags.ABSOLUTE, x * 65536 / screen_width, y * 65536 / screen_height);
বাম ক্লিক করুন:
mouse_event((MouseEventFlags.LEFDOWN), 0, 0);
সিস্টেম.থ্রেডিং.থ্রেড.স্লিপ(100); mouse_event((MouseEventFlags.LEFTUP), 0, 0);কান্না
ডান ক্লিক করুন
ইঁদুর
mouse_event((MouseEventFlags.RIGHTDOWN), 0, 0);

সিস্টেম.থ্রেডিং.থ্রেড.স্লিপ(100);

mouse_event((MouseEventFlags.RIGHTUP), 0, 0);
সমস্যা: ইনপুট এক্সক্লুসিভিটি মাউস_ইভেন্ট ফাংশনের মাধ্যমে একটি মাউসকে অনুকরণ করার সময় একটি গুরুতর অসুবিধা হয়: মাউস_ইভেন্ট একটি মাউসকে একবারে সম্পূর্ণ ওএসের জন্য অনুকরণ করে, একটি পৃথক অ্যাপ্লিকেশনের জন্য নয়। এটি থেকে এটি অনুসরণ করা হয় যে বটটি চলমান এবং বাজানো অবস্থায়, কম্পিউটারে অন্যান্য কাজ করা অসম্ভব: বটটিকে ডিবাগ করা, সক্রিয়ভাবে বটের অবস্থা দেখা, ইন্টারনেট পড়া ইত্যাদি। কিন্তু একটি উপায় আছে: একটি ভার্চুয়াল মেশিন!,
একটি ভার্চুয়াল মেশিনে একটি গেম স্থানান্তর করা হচ্ছে

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

স্থাপনা ভার্চুয়াল মেশিন(এই ক্ষেত্রে, ওরাকল ভার্চুয়ালবক্স ব্যবহার করা হয়েছিল), গেস্ট ওএস ইনস্টল করা এবং গেমটি স্থানান্তর করা যথারীতি করা হয়, একটি পয়েন্ট বাদে: বটটির হোস্ট ওএস এবং অতিথি ওএসের মধ্যে নেটওয়ার্কে যোগাযোগ স্থাপন করার ক্ষমতা প্রয়োজন। . এটি অনেক উপায়ে করা হয়। একটি উপায় হল VirtualBox ব্যবহার করে অতিথি OS থেকে হোস্ট OS-এ একটি নির্দিষ্ট পোর্ট ফরোয়ার্ড করা। আরেকটি উপায় হল ব্রিজড অ্যাডাপ্টার মোড কনফিগার করা, তারপরে ভার্চুয়াল মেশিনটি পুরো নেটওয়ার্কের জন্য একটি নিয়মিত কম্পিউটারের মতো দেখাবে এবং অতিথি ওএস রাউটার থেকে dhcp এর মাধ্যমে তার IP ঠিকানাটি পাবে। হোস্ট ওএস থেকে অতিথি ওএসে অ্যাক্সেস এই ঠিকানায় হবে। (লেখক, এই ক্ষেত্রে, একটি ব্রিজড অ্যাডাপ্টারের সাথে বিকল্পটি ব্যবহার করেছেন)

প্রক্সি
গেস্ট ওএসে মাউস নিয়ন্ত্রণ করতে, আমরা একটি প্রক্সি লিখব, যা একটি সাধারণ কনসোল TCP সার্ভার। তার সম্পূর্ণ কোডছোট এবং কাটা অধীনে উপস্থাপিত. কোডটি সহজ করতে এবং নির্ভরতা কমাতে, প্রক্সিটি রিমোটিং, wcf ইত্যাদি ব্যবহার না করে একটি খালি সকেটে লেখা হয়।

প্রক্সি কোড

সিস্টেম ব্যবহার করে; System.Collections.Generic ব্যবহার করে; System.Linq ব্যবহার করে; System.Net.Sockets ব্যবহার করে; System.Runtime.InteropServices ব্যবহার করে; System.Text ব্যবহার করে; নেমস্পেস ইনপুটপ্রক্সি ( ক্লাস প্রোগ্রাম ( স্ট্যাটিক ভ্যাইড মেইন(স্ট্রিং আর্গস) ( var সকেট = নতুন সকেট(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); socket.Bind(new System.Net.IPEndPoint(System.Idress.Iddress) যেকোন, 7001)); (; ;) ( var ক্লায়েন্ট = socket.Accept(); var থ্রেড = new System.Threading.Thread( ) => ( চেষ্টা করুন ( var clientReader = new System.IO.BinaryReader(new NetworkStream(client)); for (; ;) ( if (client.Poll(1, SelectMode.SelectRead) && client.Available == 0) ( Console.WriteLine("disconnected.."); break; ) if (client.Available > 0) ( var msgSize = clientReader.ReadInt32(); var message = clientReader.ReadBytes(msgSize); var messageReader = new System.IO৷ BinaryReader(new System.IO.MemoryStream(message)); var msgKind.ReadInt32(); msgKind) ( কেস 0: ( var ফ্ল্যাগ = messageReader.ReadUInt32();


var x = messageReader.ReadInt32();
var y = messageReader.ReadInt32();
var ডেটা = messageReader.ReadUInt32();
মাউস_ইভেন্ট(পতাকা, x, y, ডেটা, UIntPtr.Zero); ) বিরতি;

) ) অন্য সিস্টেম।থ্রেডিং।থ্রেড।স্লিপ(10);

একটি ছবি ক্যাপচার করার সবচেয়ে সহজ উপায় হল সরাসরি পর্দা থেকে। .net-এ এর জন্য একটি রেডিমেড ফাংশন রয়েছে, Graphics.CopyFromScreen। আসুন আরও বিস্তারিতভাবে এই পদ্ধতিটি দেখুন।
প্রথমত, আপনি একটি আউটপুট হিসাবে একটি বিটম্যাপ পেতে চান, একটি গ্রাফিক্স নয় - এটি একটি অক্জিলিয়ারী ফাংশন ব্যবহার করে সমাধান করা যেতে পারে:
পাবলিক স্ট্যাটিক বিটম্যাপ GetScreenImage(Rectangle rect) ( var bmp = new Bitmap(rect.Width, rect.Height, PixelFormat.Format32bppArgb); ব্যবহার করে ( গ্রাফিক্স গ্রাফিক্স= Graphics.FromImage(bmp)) ( graphics.CopyFromScreen(rect.Left, rect.Top, 0, 0, rect.Size, CopyPixelOperation.SourceCopy); ) রিটার্ন bmp;
)
দ্বিতীয়ত, আপনাকে জানতে হবে পর্দার কোন অংশটি ক্যাপচার করতে হবে। আপনি, অবশ্যই, সর্বদা পর্দার একই অংশ ক্যাপচার করতে পারেন এবং আপনার হাত দিয়ে গেমটি পর্দার এই অংশে রাখতে পারেন, তবে এটি সুবিধাজনক বা সুবিধাজনক নয়। অধিকন্তু, এই প্রক্রিয়াটির স্বয়ংক্রিয়তা ন্যূনতম প্রচেষ্টার সাথে সম্পন্ন করা হয়। WinApi এবং PInvoke আমাদের আবার এটিতে সাহায্য করবে, এবং আরও নির্দিষ্টভাবে দুটি ফাংশন: FindWindow এবং GetWindowRect। FindWindow আপনাকে উইন্ডোর শিরোনাম ব্যবহার করে উইন্ডোটির হ্যান্ডেল পেতে দেয় এবং হ্যান্ডেল ব্যবহার করে GetWindowRect পর্দায় উইন্ডোটির অবস্থান এবং আকার প্রদান করে।
উভয় ফাংশনের একটি পিনভোক বিবরণ pinvoke.net এ উপলব্ধ: FindWindow এবং GetWindowRect.
পাবলিক স্ট্যাটিক এক্সটার্ন IntPtr FindWindow(স্ট্রিং lpClassName, স্ট্রিং lpWindowName);
পাবলিক স্ট্যাটিক এক্সটার্ন বুল GetWindowRect(IntPtr hwnd, আউট RECT lpRect);"; var handle = FindWindow(null, vm_title); if (handle == IntPtr.Zero) throw new Exception("Окно не найдено"); RECT rect; GetWindowRect(handle, out rect); var gameScreenRect = new System.Drawing.Rectangle(rect.Left + vm_left, rect.Top + vm_top, rect.Right - rect.Left - vm_right - vm_left, rect.Bottom - rect.Top - vm_bottom - vm_top); var gameBmp = GetScreenImage(gameScreenRect); !}
public struct RECT ( পাবলিক int Left; public int Top; public int Right; public int Bottom; )
এবং ভার্চুয়াল মেশিন উইন্ডোর ইমেজ ক্যাপচার করার জন্য কোড নিম্নরূপ: var vm_left = 8; var vm_right = 8;

var vm_top = 50;

অবশেষে, আমরা আজকের টাস্ক সেটটি সমাধান করতে সরাসরি এগিয়ে যাই: গেম প্রক্রিয়াটি লুপ করা - সমস্ত প্রয়োজনীয় সাবটাস্কগুলি সমাধান করা হয়েছে। জুমার গেমপ্লে তিনটি উইন্ডোর চারপাশে ঘোরে: প্রধান, মিশন এবং অ্যাকশন। প্রধান উইন্ডোতে প্রধান মেনু রয়েছে, যা আপনাকে গেমের ধরন নির্বাচন করতে দেয়, মিশন উইন্ডো আপনাকে একটি মিশন নির্বাচন করার প্রস্তাব দেয় এবং অ্যাকশন উইন্ডোটি যেখানে গেমপ্লেটি ঘটে।
বট সর্বাধিক দ্বারা বর্তমান উইন্ডো নির্ধারণ করে একটি সহজ উপায়ে: বিভিন্ন মূল পয়েন্টে রঙের মান দ্বারা। পয়েন্টগুলি ম্যানুয়ালি "ক্লোজ গেজ" পদ্ধতি ব্যবহার করে নির্বাচন করা হয়।
var স্ক্রিনচেক = নতুন ( নতুন ( নাম = "প্রধান", পয়েন্ট = নতুন ( নতুন চেকপয়েন্ট (200, 190, 0xff554a22), নতুন চেকপয়েন্ট (65, 400, 0xfff44c41) ) ), নতুন ( নাম = "মিশন", পয়েন্ট = নতুন ( নতুন চেকপয়েন্ট(200, 190, 0xffb5d0c7), নতুন চেকপয়েন্ট(65, 400, 0xffad7630) ) ), নতুন ( নাম = "অ্যাকশন", পয়েন্টস = নতুন ( নতুন চেকপয়েন্ট (950, 10, 0xff72554b), নতুন চেকপয়েন্ট(10, 0xff72554b), নতুন 10, 0xff462b1d), ) ), ); ফাংশন
check = image => screenChecks.Where(_check => image.check(_check.Points)).নির্বাচন(_check => _check.Name).FirstOrDefault();
প্রধান বট লুপ:
খেলার পর্যায়ে, বট ক্রমাগত ক্লিক করে, এক পর্যায়ে বল ছেড়ে দেয়। এই ধরনের সহজ (বা বরং বোকা) কৌশল ব্যবহার করে, বট প্রথম মিশনে 1000-2000 পয়েন্ট অর্জন করে, এবং কখনও কখনও এমনকি সম্পূর্ণরূপে জুমা বার লাভ করে।

পুনরায় শুরু করুন

লক্ষ্য অর্জিত হয়েছে: বট ফ্রেমওয়ার্ক লেখা হয়েছে - গেমপ্লে লুপ করা হয়েছে।
নিম্নলিখিত লক্ষ্যগুলি: OpenCV সংযোগ করুন, বলের অবস্থান এবং রঙ চিনুন।
পিএস
মনোযোগ আকর্ষণ করার জন্য একটি ছবি। (কমলা এমন এলাকা দেখায় যেগুলো বটের পরবর্তী সংস্করণ বল হিসেবে স্বীকৃত)

খুব প্রায়ই, একটি কম্পিউটারে কাজ করার সময়, আপনাকে একটি মাউস, কীবোর্ড ইত্যাদির সাহায্যে বেশ কয়েকটি অনুরূপ ক্রিয়া সম্পাদন করতে হবে। এই সমস্তই ক্লান্তিকর এবং স্মার্ট প্রোগ্রামাররা (এবং তারা সর্বদা স্মার্ট!), ব্যবহারকারীর কাজকে সহজ করার জন্য, তারা অটোক্লিকার নামে একটি প্রোগ্রাম লিখেছিল। চমত্কার ইমাউস প্রোগ্রামের উদাহরণ ব্যবহার করে কিভাবে আপনি রুটিন কাজ এড়াতে পারেন তা দেখুন।

ইমাউস

আমরা সাইটে যান এবং তার সঙ্গে. ইনস্টলেশন কঠিন নয়। ইনস্টলেশনের পরে, আমরা এটি চালু করি এবং একটি উইন্ডো প্রদর্শিত হয়।

বাম দিকে রয়েছে "Rec" (রেকর্ড) বোতাম - ক্লিক করার পরে, মাউস এবং কীবোর্ডের সাথে আপনার ক্রিয়াগুলি রেকর্ড করা হবে। "প্লে" খেলবে (রেকর্ড করা ক্রিয়াগুলি পুনরাবৃত্তি করুন)। এবং "x" ক্ষেত্রে কতবার সেট করা যেতে পারে (এটি ছবিতে 1 বার সেট করা হয়েছে), এবং "লুপ প্লেব্যাক" ক্ষেত্রে একটি টিক দিন

নীচে বামদিকে রয়েছে রেকর্ড: কী এবং মাউস চেকবক্স, যেমন যদি এই চেকবক্সগুলি চেক করা হয়, তাহলে মাউস এবং কীবোর্ডের ক্রিয়াগুলি রেকর্ড করা হবে (এবং যদি সেগুলি চেক করা না হয়, তাহলে সেই অনুযায়ী)।

আপনি সেটিংস দেখতে (এবং পরিবর্তন) করতে পারেন৷ "সম্পাদনা" লিঙ্কে ক্লিক করুন এবং প্রসঙ্গ মেনু"সেটিংস" নির্বাচন করুন

এখানে সেটিংস আছে.

হটকি ইনস্টল করা হয়েছে। রেকর্ডিং অ্যাকশন শুরু করতে - F5, বিরতি দিতে - F11, খেলতে - F12।

রেকর্ড করা ক্রিয়া (স্ক্রিপ্ট) সংরক্ষণ করা যেতে পারে, যেমন আপনি বিভিন্ন ক্রমগুলির একটি গুচ্ছ লিখতে পারেন এবং প্রয়োজন অনুসারে তাদের কল করতে পারেন।

"ফাইল" খুলুন এবং "Save Script as..." নির্বাচন করুন এবং যেখানে আমাদের প্রয়োজন সেখানে সংরক্ষণ করুন।

অটোক্লিকার (সবচেয়ে আদিম)

যদি করতে হয় বিশাল পরিমাণডান বা বাম মাউস বোতাম ক্লিক করে, তারপর এই প্রোগ্রাম আপনার জন্য. লাভ গেমগুলিতে VKontakte ব্যবহার করা দুর্দান্ত! সুপার ক্লিকার বা ক্লিকার।

প্রোগ্রামটি অর্থপ্রদান করা হয়, তবে এর "ফ্রি" সংস্করণ থেকে ডাউনলোড করা যেতে পারে। এটা চালু করা যাক. প্রোগ্রাম ইন্টারফেস বেশ সহজ.

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

আমরা প্রোগ্রাম চালু করি, অর্থাৎ কীবোর্ডে ALT+1 টিপুন। এর মানে এই নয় যে আমরা কীবোর্ডের ALT কী, তারপর “+” কী এবং তারপরে “1!” নম্বর সহ কী টিপুন। না, আমরা শুধু একই সময়ে "ALT" এবং "1" কী টিপুন।

আমরা VKontakte-এ যাই, এমন একটি গেম খুঁজুন যেখানে আপনাকে একগুচ্ছ ক্লিক করতে হবে, মাউস সরাতে হবে এবং ALT+1 টিপুন। এবং যতক্ষণ না আমরা ALT+2 চাপি, ক্লিকগুলি চলতেই থাকবে।

ঘোস্ট মাউস থেকে ডাউনলোড করা যাবে। ইনস্টলেশন কঠিন নয়। এর লঞ্চ করা যাক.

অ্যাকশন রেকর্ড করতে, লাল বোতাম টিপুন। অথবা F9 চাপুন অ্যাকশন চালানোর জন্য, "Ctrl+Q" চাপুন।

মুভ মাউস ব্যবহার করা হয় কম্পিউটারে ব্যবহারকারীর উপস্থিতি অনুকরণ করতে মাউস কার্সারকে সরিয়ে এবং এর বোতাম টিপে। উপরন্তু, আপনি কিছু প্রোগ্রাম চালু করতে, কমান্ড চালানো, বা এটি ব্যবহার করতে পারেন পাওয়ারশেল স্ক্রিপ্ট. ইউটিলিটিটি ম্যানুয়ালি বা স্বয়ংক্রিয়ভাবে সক্রিয় করা যেতে পারে, ব্যবহারকারীর কার্যকলাপের অনুপস্থিতিতে এবং একটি সময়সূচী অনুযায়ী, এটি নির্দিষ্ট ক্রিয়াকলাপ বন্ধ করার ক্ষেত্রে প্রযোজ্য।

প্রোগ্রামের অস্ত্রাগারের প্রতিটি ক্রিয়াকলাপের জন্য, অতিরিক্ত বিকল্পগুলি উপলব্ধ রয়েছে যা আপনাকে মাউস চলাচলের দূরত্ব এবং দিকনির্দেশ নির্ধারণ করতে, একটি বোতাম নির্বাচন করতে দেয় যার ক্লিক সিমুলেটেড হবে, একটি কমান্ডের জন্য আর্গুমেন্টগুলি নির্দিষ্ট করুন বা কনসোল উইন্ডোটি লুকিয়ে রাখুন৷ সমস্ত ক্রিয়াগুলি পুনরাবৃত্তি করা যেতে পারে (একটি কাস্টম বিরতি সহ) বা একবার সঞ্চালিত হতে পারে।

অটো-স্টপ এবং অটো-স্টার্ট ছাড়াও, যা আমরা ইতিমধ্যে উল্লেখ করেছি, মুভ মাউস আচরণ সেটিংসে স্বয়ংক্রিয়ভাবে সাউন্ড ভলিউম পরিবর্তন করার, ডেস্কটপ থেকে প্রোগ্রাম উইন্ডো লুকানোর, টাস্কবার থেকে বোতাম এবং আইকন, থাম্বনেইলগুলির একটি বিকল্প রয়েছে। ALt+Tab ডায়ালগ বক্স থেকে এবং শিরোনামটি ওভাররাইট করুন। সর্বশেষ বিকল্পএটির উপস্থিতির চিহ্ন লুকাতে এবং কারো প্রয়োজন হলে কম্পিউটারে ব্যবহার করতে সাহায্য করবে৷

আপনি একটি সাধারণ সময়সূচী ব্যবহার করে অ্যাক্টিভেট অ্যাকশনের জন্য একটি সময়সূচী সেট আপ করতে পারেন যা আপনাকে সপ্তাহের দিন এবং প্রোগ্রামটি শুরু বা বন্ধ করার সময় বা আরও উন্নত যেটি ক্রোন এক্সপ্রেশন প্রবেশ করতে সমর্থন করে তা নির্বাচন করতে দেয়। সময়সূচী অনুসারে, মুভ মাউস তার কার্যক্রম স্থগিত করতে পারে এবং "ব্ল্যাকআউট" এর সময়কালও পরিবর্তিত হয়।

প্রোগ্রাম বিনামূল্যে বিতরণ করা হয়, ইন্টারফেস ভাষা হয় বর্তমান সংস্করণশুধুমাত্র একটি উপলব্ধ - ইংরেজি. আপনি উইন্ডোজ 10 এর সাথে কম্পিউটার এবং ট্যাবলেটে মুভ মাউস ব্যবহার করতে পারেন। স্পষ্টতই, প্রোগ্রামটি প্রকাশ করার পরে উইন্ডোজ স্টোর, বিকাশকারী অন্যান্য উত্সের মাধ্যমে এটি বিতরণ করতে অস্বীকার করেছে৷

মাইক্রোসফ্ট স্টোর থেকে ইনস্টল করুন