PDA

View Full Version : نحوه تشخیص باز شدن پنجره های سیستم در یک ویندوز سرویس درسی شارپ



Elham.M
چهارشنبه 05 مرداد 1390, 20:13 عصر
باید برنامه ویندوز سرویسی بنویسم که وقتی رو سیستم نصب شد بتونه باز شدن هرپنجره یا برنامه ای رو تشخیص بده و یک پیغام یا noticرا نمایش بده اگه کسی می دونه چطور باید این کار رو انجام بدم لطفا راهنماییم کنه ممنون می شم من فقط امشب فرصت دارم لطفا

gilas1368
چهارشنبه 05 مرداد 1390, 23:54 عصر
منظورتون رو واضحتر بيان كنين

Esmail Solhkhah
پنج شنبه 06 مرداد 1390, 00:09 صبح
باید برنامه ویندوز سرویسی بنویسم که وقتی رو سیستم نصب شد بتونه باز شدن هرپنجره یا برنامه ای رو تشخیص بده و یک پیغام یا noticرا نمایش بده اگه کسی می دونه چطور باید این کار رو انجام بدم لطفا راهنماییم کنه ممنون می شم من فقط امشب فرصت دارم لطفا

برای بدست آوردن پنجده های باز باید هندل پنجره رو توسط کلاس مربوطه یا کپشن فرمش با استفاده از توابع API ویندوز بدست آورید.

ضمنا این نکته مهم فراموش نشه که سرویستون رو که نصب کردید تو سرویس منیجر ویندوز تو پراپرتی سرویستون تو قسمت log on تیک Allow servivce to interract with desktop رو بذارید.

موفق باشید.

Elham.M
پنج شنبه 06 مرداد 1390, 06:12 صبح
برای بدست آوردن پنجده های باز باید هندل پنجره رو توسط کلاس مربوطه یا کپشن فرمش با استفاده از توابع API ویندوز بدست آورید.

ضمنا این نکته مهم فراموش نشه که سرویستون رو که نصب کردید تو سرویس منیجر ویندوز تو پراپرتی سرویستون تو قسمت log on تیک Allow servivce to interract with desktop رو بذارید.

موفق باشید.
ممنون امامن اصلا با apiکار نکردم میشه لطف کنید برام کد مربوطه رو بزارید
در ضمن زدن تیکی که گفتید برای چی باید بزنم چیکار می کنه؟

Esmail Solhkhah
پنج شنبه 06 مرداد 1390, 10:21 صبح
دوست عزیز با این کد میتونی لیست پروسس های فعال به همراه هندلشون رو بدست بیاری

البته شاید هندلش بدردت نخوره ، هندل جهت ارتباط یرقرار کردن با اون پروسس هستش

در هر صورت با این کد بدون نیاز به API کارت راه میافته

میتونی تو سرویس ویندوزت این کد رو تو یه تایمر بذاری

هر موقع لیست پروسسها اضافه شد میتونی نامش رو داشته باشی

بیس قضیه همینه

اون تیکی هم که گفتید برای ارتباط برقرار کردن سرویس با مسیجهای دستکتاپه که با این کدی که گذاشتم بهش نیازی ندارید مگه اینکه برای مثال بخاید با سرویس از دسکتاپ عکس بگیرید و مواردی از این قبیل.

موفق باشید.


using System;
using System.Diagnostics;Process[] procs = Process.GetProcesses();
IntPtr hWnd;
foreach (Process proc in procs)
{
if ((hWnd = proc.MainWindowHandle) != IntPtr.Zero)
{
listBox1.Items.Add( "Proccess Name : "+ proc.ProcessName + " Handle : "+ hWnd.ToString());
}
}