السلام عليكم
كيف يمكنني عمل إتصال بين
File System Filter Driver
وبرنامجي في C#
لإكتشاف التغييرات
السلام عليكم
كيف يمكنني عمل إتصال بين
File System Filter Driver
وبرنامجي في C#
لإكتشاف التغييرات
Be the change you want to see in the world
السلام عليكم ..
حسب المعلومات على MSDN يمكن إرسال الرسائل بين الــ miniFilter الذي هو يعمل بالــ Kernel Mode و بين التطبيق الذي يعمل بالــ User Mode .و حسب الــ MSDN يتم الإرسال على رقم Port كي نعرف التطبيق الذي ستصله الرسالة , و الاتصال يتم عن طريق الــ Function التالية :
FilterSendMessage إرسال رسالة إلى الــ Filter .. رابط
FltSendMessage إرسال رسالة إلى التطبيق (طبعا من الفلتر) ... رابط
FilterGetMessage الحصول على الرسالة من الفلتر .. رابط
تحتاج عمل wrapper لهذه الــ Function كي تستخدمها في الــ C# ... رابط
ملاحظة : لم أجرب الكود كون الــ Windows Driver Kit (صح كده !) غير موجودة عندي ..
لا إله إلا الله ... محمد رسول الله
لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة
المعرًف القديم : houssam11350_11350
من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر
السلام عليكم<br>ألف شكر لك أخي <br>لكن رأيت الكثير مثل هذه الشروح ولكن لم تنجح<br>أتمنى منك أن تحاول ولو لقليل أن تنشأ لي مشروع بسيط عن العمليات الموجودة <br>لهذا التعريف والتعريف موجود في الرد السابق لي<br>وشكراً أخي<br>
Be the change you want to see in the world
السلام عليكم ...أخي...
التعريف الموجود ذو لاحقة .Sys (أي هو ناتج عن عملية الــ Compile) و الكود الخاص به موجود على CodeProject (حسب معلوماتي) ...
لكن (حسب معلوماتي) .. يجب أن يرسل الفلتر معلومات أولا حتى يستقبلها التطبيق ... أي لا تستطيع الأتصال مع فلتر إذا لم يرسل معلومات بالإساس ...أي تحتاج لتعديل الفلتر و ترجمته مرة أخرى ...
و كما قلت لك الــ Driver Kit غير موجودة عندي ...أي لا استطيع عمل Compile للفلتر فيما لو عدلت عليه .. و أيضا معلوماتي عن برمجة الفلاتر ليست بالجيدة (مبادئ فقط) ..
بانتظار ردود الخبراء
لا إله إلا الله ... محمد رسول الله
لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة
المعرًف القديم : houssam11350_11350
من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر
شكراً لك أخي
المشكلة أني ضعيف في الـC++
أنا أنتظر ردود منكم ياخبراء منتدانا العزيز
Be the change you want to see in the world
السلام عليكم ورحمة الله وبركاته
أخي العزيز السؤال غير واضح هل تقصد أن تتعامل مع جهاز خارجي أو أنك تريد إن حدث تغير على بنية الملفات المتوجد على الهارد ديسك (حذف - تعديل ..... إلخ)
أرجو التوضيح
لا تفعل إلا ما تستطيع أن تقوله ولا تقول إلا ما تسطيع أن تفعله
اللهم علمنا ما ينفعنا ونفعنا بما علمتنا وهب لنا من لدنك ولياً مرشدا
كلما أدبني الدهر أراني نقص عقلي ... وإذا ما زدت علماً زادني علماً بجهلي
أخوكم في الله أبو المجد
هيا نتعلم بعض المبادء لنطرق باب الإحتراف ************** جديد الدروس ( Application Domains and Assemblies)
التوقيت في دمشق:
<embed src="http://www.clocklink.com/clocks/0006-Gray.swf?TimeZone=R1T" width="200" height="240" wmode="transparent" type="application/x-shockwave-flash">
السلام عليكم
أخي أريد مراقبة الملفات في الهارد ديسك وإيقافها عند شروط معينة في برنامجي
Be the change you want to see in the world
السلام عليكم ...
مواضيع مشابهة :
و ما زلنا بانتظار ردود الخبراء ..
لا إله إلا الله ... محمد رسول الله
لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة
المعرًف القديم : houssam11350_11350
من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر
السلام عليكم
شكراً أخي ولكن أنت تضع لي روابط فقط
هل لي بمشروع صغير أو شرح يكون واضحاً
لو سمحت
Be the change you want to see in the world
السلام عليكم ورحمة الله وبركاته
سوف أقوم بوضع مثال بسيط لتوضيح طريق الحل لسؤالك :
using System;
using System.IO;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
private System.ComponentModel.IContainer components = null;
private System.Windows.Forms.Button m_StartButton;
private System.Windows.Forms.Button m_StopButton;
private System.Windows.Forms.ListBox listBox1;
private FileSystemWatcher FS_Watcher;
public Form1()
{
InitializeComponent();
}
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.m_StartButton = new System.Windows.Forms.Button();
this.m_StopButton = new System.Windows.Forms.Button();
this.listBox1 = new System.Windows.Forms.ListBox();
this.SuspendLayout();
//
// m_StartButton
//
this.m_StartButton.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
this.m_StartButton.Location = new System.Drawing.Point(172, 398);
this.m_StartButton.Name = "m_StartButton";
this.m_StartButton.Size = new System.Drawing.Size(75, 23);
this.m_StartButton.TabIndex = 0;
this.m_StartButton.Text = "Start";
this.m_StartButton.UseVisualStyleBackColor = true;
this.m_StartButton.Click += new System.EventHandler(this.m_StartButton_Click);
//
// m_StopButton
//
this.m_StopButton.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
this.m_StopButton.Enabled = false;
this.m_StopButton.Location = new System.Drawing.Point(253, 398);
this.m_StopButton.Name = "m_StopButton";
this.m_StopButton.Size = new System.Drawing.Size(75, 23);
this.m_StopButton.TabIndex = 1;
this.m_StopButton.Text = "Stop";
this.m_StopButton.UseVisualStyleBackColor = true;
this.m_StopButton.Click += new System.EventHandler(this.m_StopButton_Click);
//
// listBox1
//
this.listBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.listBox1.FormattingEnabled = true;
this.listBox1.Location = new System.Drawing.Point(12, 12);
this.listBox1.Name = "listBox1";
this.listBox1.Size = new System.Drawing.Size(477, 381);
this.listBox1.TabIndex = 2;
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(501, 433);
this.Controls.Add(this.listBox1);
this.Controls.Add(this.m_StopButton);
this.Controls.Add(this.m_StartButton);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);
}
#endregion
private void FS_Watcher_Changed(object sender, FileSystemEventArgs e)
{
listBox1.Items.Add(String.Format("[Changed Event] File: {0} ChangeType: {1}", e.FullPath, e.ChangeType));
}
private void FS_Watcher_Created(object sender, FileSystemEventArgs e)
{
listBox1.Items.Add(String.Format("[Created Event] File: {0} ChangeType: {1}", e.FullPath, e.ChangeType));
}
private void FS_Watcher_Deleted(object sender, FileSystemEventArgs e)
{
listBox1.Items.Add(String.Format("[Deleted Event] File: {0} ChangeType: {1}", e.FullPath, e.ChangeType));
}
private void FS_Watcher_Renamed(object sender, RenamedEventArgs e)
{
listBox1.Items.Add(String.Format("[Renamed Event] File: {0} renamed to {1}", e.OldFullPath, e.FullPath));
}
private void FS_Watcher_Error(object sender, ErrorEventArgs e)
{
listBox1.Items.Add(String.Format("[Error Event] Error: {0} ", e.GetException().Message));
}
private void m_StartButton_Click(object sender, EventArgs e)
{
FS_Watcher = new FileSystemWatcher(@"D:\", "*.*");
FS_Watcher.SynchronizingObject = this;
FS_Watcher.IncludeSubdirectories = true;
FS_Watcher.NotifyFilter =
NotifyFilters.Attributes |
NotifyFilters.CreationTime |
NotifyFilters.DirectoryName |
NotifyFilters.FileName |
NotifyFilters.LastAccess |
NotifyFilters.LastWrite |
NotifyFilters.Security |
NotifyFilters.Size;
FS_Watcher.Changed += new FileSystemEventHandler(FS_Watcher_Changed);
FS_Watcher.Created += new FileSystemEventHandler(FS_Watcher_Created);
FS_Watcher.Deleted += new FileSystemEventHandler(FS_Watcher_Deleted);
FS_Watcher.Renamed += new RenamedEventHandler(FS_Watcher_Renamed);
FS_Watcher.Error += new ErrorEventHandler(FS_Watcher_Error);
FS_Watcher.EnableRaisingEvents = true;
m_StartButton.Enabled = false;
m_StopButton.Enabled = true;
}
private void m_StopButton_Click(object sender, EventArgs e)
{
if (FS_Watcher != null)
FS_Watcher.Dispose();
FS_Watcher = null;
m_StartButton.Enabled = true;
m_StopButton.Enabled = false;
}
}
}أتمنى أن يكون هذا هو الجواب فإن لم يكن هو لا تتردد بالسؤال .........
الداعي لكم بالتوفيق
أبو المجد
لا تفعل إلا ما تستطيع أن تقوله ولا تقول إلا ما تسطيع أن تفعله
اللهم علمنا ما ينفعنا ونفعنا بما علمتنا وهب لنا من لدنك ولياً مرشدا
كلما أدبني الدهر أراني نقص عقلي ... وإذا ما زدت علماً زادني علماً بجهلي
أخوكم في الله أبو المجد
هيا نتعلم بعض المبادء لنطرق باب الإحتراف ************** جديد الدروس ( Application Domains and Assemblies)
التوقيت في دمشق:
<embed src="http://www.clocklink.com/clocks/0006-Gray.swf?TimeZone=R1T" width="200" height="240" wmode="transparent" type="application/x-shockwave-flash">
السلام عليكم
أخي أنا أريد التعامل مع التعريف وليس
File System Watcher
بعرف إني زوتا![]()
Be the change you want to see in the world
السلام عليكم ورحمة الله وبركاته
أخي ما زودنه
بس ممكن نعرف لماذا لم تحل مشكلتك بهذه الطريقة ...
مثال بسيط عن ما تريده ليس الضروري أن يكون كود حقيقي ولكن نريد أن نفهم الفكرة .....
لا تفعل إلا ما تستطيع أن تقوله ولا تقول إلا ما تسطيع أن تفعله
اللهم علمنا ما ينفعنا ونفعنا بما علمتنا وهب لنا من لدنك ولياً مرشدا
كلما أدبني الدهر أراني نقص عقلي ... وإذا ما زدت علماً زادني علماً بجهلي
أخوكم في الله أبو المجد
هيا نتعلم بعض المبادء لنطرق باب الإحتراف ************** جديد الدروس ( Application Domains and Assemblies)
التوقيت في دمشق:
<embed src="http://www.clocklink.com/clocks/0006-Gray.swf?TimeZone=R1T" width="200" height="240" wmode="transparent" type="application/x-shockwave-flash">
السلام عليكم<br><br>أخي أنا أقوم بصنع برنامج حماية وتوصلت إلى أن أفضل طريقة للحماية <br>والتحكم بالبرامج عند الفتح والنسخ هذا التعريف <br>ولم أعرف طريقة ربطه مع برنامجي <br>وقرأت أنا هناك داله تقوم بهذا وهي DeviceIOControl<br>ولا أعلم المزيد<br>وشكراً<br>
Be the change you want to see in the world
السلام عليكم ورحمة الله وبركاته
أخي الكريم أعتذر لعدم مساعدتك لأنني لا أملك أي فكرة عن هذا الأمر الذي كتبته ولكن بعد عملية بحث سريع عبر الغوغل وجدت لك أمثله كافية على ما أظن مع شرح تفصلي عن هذا الأمر أتمنى أن يساعدك في عملك
pinvoke_net DeviceIoControl (kernel32)
الداعي لكم بالتوفيق
أبو المجد
لا تفعل إلا ما تستطيع أن تقوله ولا تقول إلا ما تسطيع أن تفعله
اللهم علمنا ما ينفعنا ونفعنا بما علمتنا وهب لنا من لدنك ولياً مرشدا
كلما أدبني الدهر أراني نقص عقلي ... وإذا ما زدت علماً زادني علماً بجهلي
أخوكم في الله أبو المجد
هيا نتعلم بعض المبادء لنطرق باب الإحتراف ************** جديد الدروس ( Application Domains and Assemblies)
التوقيت في دمشق:
<embed src="http://www.clocklink.com/clocks/0006-Gray.swf?TimeZone=R1T" width="200" height="240" wmode="transparent" type="application/x-shockwave-flash">
السلام عليكم شكراً لك أخي وبارك الله فيك جربتها ومانفعت آسف على الإزعاج شكراً جزيلاً لك :lol: :happy:
Be the change you want to see in the world