بررسی اینکه برنامه notepad روی تمام پنجره ها قرار گرفته؟ - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

بررسی اینکه برنامه notepad روی تمام پنجره ها قرار گرفته؟

+1 امتیاز

با سلام , من با این کد باز بودن برنامه  NotPad  رو چک میکنم (با توابع API)  حالا من می خوام در صورتی که برنامه NotPad روی همه پنجره ها قرار گرفت پیام بده . استادمون گفت از دکمه نمیشه استفاده کرد چون وقتی برنامه نوت پد باز باشه و ما بریم روی دکمه کلیک کنیم تا چک کنه که باز هست یا نه خود فرم برناممون میاد روی نوت پد !! من فکر کردم که با تایمر چک کنم ؟ ممنون. (خیلی خوبه که دوباره اون ویرایشگر قبلی رو گذاشتین )

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        [DllImport("user32.dll")]
        public static extern IntPtr FindWindow(string IpClassName, string IpWindowName);

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            IntPtr hwnd = FindWindow("NotePad", null);
            if (hwnd.Equals(IntPtr.Zero))
            {
                MessageBox.Show("NotePad Not Running");
            }
            else
            {
                MessageBox.Show("NotePad Running");
            }

        }
    }
}

 

سوال شده فروردین 26, 1393  بوسیله ی daniyaltjm (امتیاز 840)   47 88 103

1 پاسخ

+2 امتیاز
به وسيله تابع GetActivateWindow API هندل پنجره که روی بقيه قرار داره و فکوس روی اون قرار داره رو ميتونيد به دست بياريد.

تو يه تايمر چک کنيد که هروقت هندل برنامه نوت پد با هندل به دست اومده توسط تابع GetActivateWindow مساوی بود يعنی برنامه  نوت پد روی پنجره های ديگه قرار گرفته
 
تابع:
 
[DllImport("user32.dll")]
static extern IntPtr GetActiveWindow();

نحوه استفاده:

IntPtr ActiveHandle = GetActiveWindow();
پاسخ داده شده فروردین 26, 1393 بوسیله ی Sami (امتیاز 178)   2 6 16
ممنون ولی من توابع API رو بلد نیستم فعلا میشه کدش رو بنویسید؟
جواب ويرايش شد
خوب بعدش چکار کنم ؟ شرطو چطوری بزارم ؟
خودت هم يکم کار کن بقيش ديگه يه دستوره شرطيه
من نمیدونم آخه چی رو با چی مقایسه کنم!!!! لطفا یک نفر بیاد راهنمایی کنه
این  GetActiveWindow();
تابع هم که گفتین هیچ پارامتری نداره که مشخص کنه آیا برنامه نت پد روی تمام برنامه ها هست یا نه!!!
لطفا یکی بیاد کمک کنه خیلی مهمه....
تو سورس که خودت قرار دادی هندل نوت پد رو به دست آوردی در ادامش کافيه هندلی که توسط تابع GetActiveWindow ميگيری رو با اون مقايسه کنی اگه هر دو مساوی با هم بودن پس نتيجه ميگيريم هندلی که روی پنجره های دگه قرار گرفته هندل برنامه نت پد هست
...