المشاركات الشعبية

اختيار المحرر - 2020

MQL4: إدارة الكمبيوتر من مستشار

في بعض الأحيان يكون من الضروري الضغط على زر برمجيًا في تطبيق تابع لجهة أخرى ، وقراءة النص من مكون معين ، وبدء تشغيل محطة أخرى ، وأي برنامج آخر ، وفتح ملف نصي ، وإيقاف تشغيل الكمبيوتر في وقت معين ، وتنفيذ بعض العمليات الأخرى. وظيفة WinAPI ShellExecute ، الموجودة في مكتبة shell32.dll ومكتبة WinUser32.mqh ، ستساعدنا هنا. كيفية أتمتة هذه العملية برمتها - نتعلم من درسنا الجديد في برمجة روبوتات الفوركس. الموضوع غير عادي ، وسيقوم بتوسيع مهاراتك بشكل كبير كمبرمج.

لمزيد من المعلومات حول ShellExecute ، راجع تعليمات MSDN. هناك يمكنك الحصول على معلومات مفصلة حول جميع الوظائف المتاحة من مكتبة WinUser32.mqh. سأقدم وصفًا موجزًا ​​لكل منهم:

  • ShellExecute - إجراء عملية مع الملف المحدد ؛
  • SendMessage - يرسل الرسالة المحددة إلى النافذة أو النوافذ ، في انتظار الرد ؛
  • SendNotifyMessage - نفس الشيء ، لكن لا تنتظر الإجابة ؛
  • PostMessage - يضع الرسالة في الدفق دون انتظار الرد ؛
  • keybd_event - توليف الضغط على مفتاح معين على لوحة المفاتيح.
  • mouse_event - توليف حركة الماوس والضغط على زر.
  • FindWindow - يستعيد المقبض إلى نافذة المستوى الأعلى ؛
  • SetWindowText - يضع النص في عنوان النافذة ؛
  • GetWindowText - يقرأ النص من اسم النافذة ؛
  • GetWindowTextLength - يقرأ عدد الأحرف في عنوان النافذة ؛
  • GetWindow - يسترجع مقبض النافذة المرتبط بالإطار المحدد ؛
  • GetParent - يسترجع مقبض الإطار المحدد أو الأصل ؛
  • UpdateWindow - تحديث نافذة البرنامج ؛
  • EnableWindow - تمكين أو تعطيل إدخال لوحة المفاتيح والماوس في النافذة أو التحكم المحدد ؛
  • DestroyWindow - إلغاء تنشيط النافذة أو إزالة تركيز لوحة المفاتيح منه ؛
  • ShowWindow - يحدد حالة عرض النافذة المحددة ؛
  • SetActiveWindow - ينشط النافذة ؛
  • AnimateWindow - يسمح لك بإنشاء تأثيرات خاصة عند عرض أو إخفاء النوافذ ؛
  • FlashWindow - يجعل النافذة المحددة تومض مرة واحدة ؛
  • CloseWindow - يقلل (ولكن لا يغلق) النافذة المحددة ؛
  • MoveWindow - يغير موضع وحجم النافذة المحددة ؛
  • SetWindowPos - يغير حجم وموضع نافذة منبثقة للطفل أو نافذة منبثقة أو أعلى مستوى ؛
  • IsWindowVisible - يحدد حالة الرؤية للإطار المحدد ؛
  • IsIconic - يحدد ما إذا كان الإطار المحدد مصغر ؛
  • IsZoomed - يحدد ما إذا كان يتم تكبير النافذة ؛
  • SetFocus - ضبط تركيز لوحة المفاتيح على النافذة المحددة ؛
  • إحضار التركيز - يستعيد مقبض النافذة الذي يحتوي على تركيز لوحة المفاتيح ؛
  • GetActiveWindow - يحصل على مقبض النافذة النشطة ؛
  • IsWindowEnabled - يحدد ما إذا كان يتم تمكين النافذة المحددة لإدخال لوحة المفاتيح والماوس ؛
  • MESSAGEBOX - يعرض مربع حوار مشروط يحتوي على رمز النظام ، ومجموعة من الأزرار ، ورسالة قصيرة لتطبيق معين ، مثل معلومات الحالة أو الخطأ ؛
  • MessageBeep - يستنسخ الصوت باستخدام مكبر صوت النظام ؛
  • GetSystemMetrics - يسترد معلمة النظام المحدد أو معلمة تكوين النظام ؛
  • الخروج من النوافذ - تسجيل خروج المستخدم التفاعلي أو إيقاف تشغيل النظام أو إيقاف تشغيل النظام وإعادة تشغيله ؛
  • SwapMouseButton - يغير أو يستعيد قيمة أزرار الماوس الأيسر والأيمن.

ماذا سنفعل اليوم؟

لن نأخذ في الاعتبار كل وظيفة من القائمة - سوف يستغرق الأمر الكثير من الوقت ، وإلى جانب ذلك ، لا أريد أن أتخلص من إمكانية إجراء دراسة مستقلة منك. لذلك ، نحن ببساطة نحل بعض المشاكل البسيطة ، مثل:

  • إغلاق أو إعادة تشغيل الكمبيوتر ؛
  • إطلاق برنامج آخر من المحطة (على سبيل المثال ، google chrome) ؛
  • استبدال اسم نافذة البرنامج

نعم ، هذه مهام بسيطة للغاية ، ولكن قد يكون حلها مثالاً جيدًا لإظهار قدرات المكتبات وبناء خوارزميات أكثر تعقيدًا استنادًا إلى هذه الأمثلة.

إطلاق التطبيق

أول ما يجب فعله هو إعلان وظيفة ShellExecuteW:

/ / - استيراد وظيفة من DLL خارجي
#import "shell32.dll"
ShellExecuteW (int hwnd ، سلسلة lpOperation ، سلسلة lpFile ، سلسلة lpParameters ، سلسلة lpDirectory ، int nShowCmd)؛
قم بإجراء #import

بعد ذلك ، في طريقة onStart () ، قم بتشغيل البرنامج المطلوب:

ShellExecuteW (NULL، NULL، "C: Program Files (x86) GoogleChromeApplicationchrome.exe"، NULL، NULL، 1)؛

دعونا إسقاط البرنامج النصي على أي مخطط وسنفتح البرنامج المحدد.
سنقوم الآن بإدراج مكتبة محطة WinUser32.mqh في نصنا:

تتضمن #

الآن نحن بحاجة إلى العثور على مؤشر نافذة البرنامج قيد التشغيل. يمكن القيام بذلك باستخدام وظيفة WinApi - FindWindowW.
في مكتبة المحطة ، يتم وصف الوظيفة كما يلي:

الباحث FindWindowW (السلسلة lpClassName ، السلسلة lpWindowName) ؛

هذا يعني أنه يجب عليك إدخال اسم فئة تطبيقنا في المعلمة سلسلة lpClassName ، وبدلاً من المعلمة سلسلة lpWindowName ، اسم إطار البرنامج هو "علامة تبويب جديدة". يمكن العثور على اسم فئة التطبيق باستخدام أدوات مساعدة مثل: Spy ++ و WinSight و WinInspector وغيرها. قم بتنزيل وتثبيت برنامج Spy ++.

الأداة سهلة الاستخدام للغاية. يكفي بدء البرنامج والضغط على الزر باستخدام المنظار وسحب المنظر إلى النافذة التي نحتاج إليها ، وسنرى على الفور اسمها وفئتها ومعلومات أخرى. في وظيفة FindWindowW ، يمكنك تحديد كل اسم الفئة واسم الإطار (أو بشكل فردي). يكفي أن نحدد اسم النافذة فقط:

int handle = FindWindowW (NULL ، "علامة تبويب جديدة - Google Chrome") ؛

يتم عرض المعلومات التي تحتوي على مقبض الإطار الموجود على الشاشة. إذا كان المقبض 0 ، فلن يتم العثور على النافذة. بعد تلقي مقبض الإطار الرئيسي ، يمكنك القيام بكل ما تريده مع التطبيق: ابحث عن الإطار الفرعي الذي نحتاجه ، وقراءة النص وإرساله ، واضغط على الأزرار برمجيًا ، وما إلى ذلك.

إضافة وظيفة SetWindowTextW بسيطة أخرى إلى التعليمات البرمجية لدينا. سيغير نص النافذة إلى أي نافذة أخرى:

SetWindowTextW (مقبض ، "My Chromchik") ؛

لإيقاف تشغيل الكمبيوتر ، وجدنا برنامج shutdown.exe على القرص. وكما هو الحال في الحالة السابقة ، نكتب في الوظيفة عنوان البرنامج مع المعلمات التي نحتاجها:

ShellExecuteW (NULL، NULL، "C: WindowsSystem32shutdown.exe"، "- s -t 00"، NULL، 1)؛

لإيقاف تشغيل الكمبيوتر ، أدخل السطر التالي:

shutdown.exe -s -t 00

لإعادة تشغيل الكمبيوتر ، أدخل السطر التالي:

shutdown.exe -r -t 00

للاطلاع على خيارات الإصدارات المختلفة من Windows - اتبع هذا الرابط.

استنتاج

يمكنك أيضًا العثور على العديد من الوظائف الأخرى المثيرة للاهتمام في مكتبة WinUser32.mqh التي ستتيح لك إدارة برنامج تابع لجهة أخرى مباشرةً من مستشار مكتوب في MQL4. يمكن العثور على قائمة كاملة بميزات WinApi على MSDN.

وبالتالي ، يمكنك التحكم الكامل في جهاز الكمبيوتر الخاص بك من برنامج نصي mql ، وأتمتة جميع الاستعدادات للتداول: سجلات المعاملات المفتوحة ، ومواقع الأخبار عند فتح محطة ، وهلم جرا.

يمكنك أيضًا كتابة مستشار يتداول في محطة تداول أخرى لا تدعم التداول الآلي ، على سبيل المثال ، في تطبيق متصفح للخيارات الثنائية أو في منصة لتداول الأسهم. هذا يفتح فرصًا كبيرة حقًا للعمل والعديد من الطرق المختلفة المثيرة للاهتمام لاستخدام مجموعة كبيرة ومتنوعة من البرامج لتلقي ومعالجة البيانات ومعالجة البرامج الأخرى.

شاهد الفيديو: تعلم برمجة التداول الآلي و لغة MQL4 لغة الفوركس. لأول مرة بالوطن العربي (شهر فبراير 2020).

ترك تعليقك