PDA

View Full Version : سوال: چگونه بفهمیم چه برنامه ای را کاربر اجرا می کند ؟



aradrobo
پنج شنبه 25 آبان 1391, 20:06 عصر
می خواهم برنامه ای بسازم ، که اگر کاربر برنامه ای را باز کرد ، در یک فایل txt نمایش دهد که به عنوان مثال برنامه یاهو مسنجر در ساعت 7:30 ب ظ در تاریخ 25/8/91 باز شد .
این اطلاعات زمانی درج می شود که کاربر در همان زمان این برنامه را باز کرد .
یعنی هر برنامه ای که اجرا شد ، نام برنامه به همراه زمان اجرایش نمایش داده شود .

ممنونم . لطفاً کمکم کنید

zarifcomputer
پنج شنبه 25 آبان 1391, 20:57 عصر
می خواهم برنامه ای بسازم ، که اگر کاربر برنامه ای را باز کرد ، در یک فایل txt نمایش دهد که به عنوان مثال برنامه یاهو مسنجر در ساعت 7:30 ب ظ در تاریخ 25/8/91 باز شد .
این اطلاعات زمانی درج می شود که کاربر در همان زمان این برنامه را باز کرد .
یعنی هر برنامه ای که اجرا شد ، نام برنامه به همراه زمان اجرایش نمایش داده شود .

ممنونم . لطفاً کمکم کنید

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

samadblaj
پنج شنبه 25 آبان 1391, 21:26 عصر
استفاده از prosses روش مناسبی هست.

aradrobo
شنبه 27 آبان 1391, 15:29 عصر
استفاده از prosses روش مناسبی هست.

خوب یک نمونه بنویسید تا بدونم چگونه انجام می شود ؟

aradrobo
پنج شنبه 09 آذر 1391, 14:55 عصر
یعنی واقعاً کسی نمی داند ؟ لطفاً اگر چیزی در این زمینه می دانید راهنمایی فرمایید.

aradrobo
چهارشنبه 13 دی 1391, 16:53 عصر
کسی اطلاعاتی ندارد ؟

مهرداد صفا
چهارشنبه 13 دی 1391, 20:36 عصر
با سلام
ابتدا id همه process های موجود را گرفته در آرایه ای نگهدارید.
درون یکtimer همه process ها را چک کنید و هر process که id آنن درون آرایه نبود، را به عنوان process هایی که جدیدا شروع به کار کردن انتخاب کنید.
در انتها آرایه را مجددا آپدیت کنید:

//in the name of god
//صل الله علی محمد و آله



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.Diagnostics;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
int[] IDS = (from Process process in Process.GetProcesses() select process.Id ).ToArray();


public Form1()
{
InitializeComponent();
timer1.Interval = 1000;
timer1.Start();
}

private void timer1_Tick(object sender, EventArgs e)
{
var NewProcesses=from Process process in Process.GetProcesses() where !(IDS.Contains(process.Id)) select process;
foreach (Process process in NewProcesses)
{
textBox1.Text += string.Format("New process started:\n name={0} main window title={1} at:{2}"
, process.ProcessName, process.MainWindowTitle, DateTime.Now.ToString("s"));


}
IDS = (from process in Process.GetProcesses() select process.Id).ToArray();
}
}
}


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

aradrobo
چهارشنبه 13 دی 1391, 22:24 عصر
خیلی ممنون دوست عزیز