الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

الحصول على مسار النافذة النشطة في الوندوز؟

بدأه NOUR ALDEEN في 8 أكتوبر 2011 · 13 رد · 1,098 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

كيف لي أن أفعل مثل هذا الموضوع في سي شارب

http://www.arabteam2...howtopic=248026

ولكن بدلاً من نص النافذة أريد مسارها

أو أريد الحصول على مسار النافذة عند فتها

وشكراً

Be the change you want to see in the world


#2

لم افهم السؤال جيداً ،،

كيف ان تعرف مسار الشاشة؟!

يمكن انك تقصد مسار البرنامج

Application.StartupPath

هل هذا ما تريده؟

#3

السلام عليكم

أي شاشة تقصد عليها أخي

أنا أريد معرفة مسارات النوافذ النشطة في ويندوز

مثلاً أنا قمت بفتح مجلد الويندوز في قرص السي ومجلد قرص D

أريد الحصول على أنهما مفتوحان عن طريق برنامجي

أرجو أن أكون قد أوضحت الفكرة

Be the change you want to see in the world


#4

هذا أول إجابة لي بعد عودتي يعني بعدني (طازه) يعني بدكم تتحملوا أخطائي وجهلي بستخدام خيارات المنتدى الجديد.

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 EnumWindowsExplorerOpenWindows
{
    public partial class Form1 : Form
    {
        private System.Windows.Forms.Button button1;
        private System.Windows.Forms.ListBox listBox1;
        private System.ComponentModel.IContainer components = null;

        private delegate bool EnumWindowsProc(IntPtr hWnd, IntPtr lParam);

        [DllImport("user32", CharSet = CharSet.Auto, SetLastError = true)]
        internal static extern int GetWindowText(IntPtr hWnd, [Out, MarshalAs(UnmanagedType.LPTStr)]StringBuilder lpString, int nMaxCount);
        [DllImport("user32", CharSet = CharSet.Auto, SetLastError = true)]
        internal static extern int GetClassName(IntPtr hWnd, [Out, MarshalAs(UnmanagedType.LPTStr)]StringBuilder lpClassName, int nMaxCount);
        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        private static extern bool EnumWindows(EnumWindowsProc callback, IntPtr extraData);

        const string WINDOWS_EXPLORER_CLASS_NAME = "CabinetWClass";

        public Form1()
        {
            InitializeComponent();
        }

        #region Windows Form Designer generated code

        private void InitializeComponent()
        {
            this.button1 = new System.Windows.Forms.Button();
            this.listBox1 = new System.Windows.Forms.ListBox();
            this.SuspendLayout();
            // 
            // button1
            // 
            this.button1.Location = new System.Drawing.Point(454, 430);
            this.button1.Name = "button1";
            this.button1.Size = new System.Drawing.Size(75, 23);
            this.button1.TabIndex = 0;
            this.button1.Text = "button1";
            this.button1.UseVisualStyleBackColor = true;
            this.button1.Click += new System.EventHandler(this.button1_Click);
            // 
            // listBox1
            // 
            this.listBox1.FormattingEnabled = true;
            this.listBox1.Location = new System.Drawing.Point(13, 13);
            this.listBox1.Name = "listBox1";
            this.listBox1.Size = new System.Drawing.Size(543, 329);
            this.listBox1.TabIndex = 1;
            // 
            // Form1
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(568, 479);
            this.Controls.Add(this.listBox1);
            this.Controls.Add(this.button1);
            this.Name = "Form1";
            this.Text = "Form1";
            this.ResumeLayout(false);

        }

        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #endregion

        private void button1_Click(object sender, EventArgs e)
        {
            System.Diagnostics.Process[] Processes = System.Diagnostics.Process.GetProcessesByName("explorer");

            foreach (System.Diagnostics.Process Process in Processes)
            {
                StringBuilder lpString = new StringBuilder(1024);
                int CharactersLength = GetWindowText(Process.MainWindowHandle, lpString, 1024);
                EnumWindows(EnumWindowsProc_CallBack, IntPtr.Zero);
                listBox1.Items.Add(lpString.ToString());
            }
        }

        private bool EnumWindowsProc_CallBack(IntPtr hWnd, IntPtr lParam)
        {
            StringBuilder lpClassName = new StringBuilder(1024);
            int CharactersLength = GetClassName(hWnd, lpClassName, 1024);

            if (CharactersLength > 0 && WINDOWS_EXPLORER_CLASS_NAME.Equals(lpClassName.ToString(), StringComparison.OrdinalIgnoreCase))
            {
                StringBuilder lpString = new StringBuilder(1024);
                CharactersLength = GetWindowText(hWnd, lpString, 1024);
                listBox1.Items.Add(lpString.ToString());
            }

            return true;
        }
    }
}

إذا لم تستطيع أن تدرك ما بداخل الكود فسألني لعل الخطأ في ما كتبت أنا..

أتمنى من الله أن تكون هذه غايتك وإجابتك

تم تعديل هذه المشاركة بواسطة TarekNajem04 في 10 أكتوبر 2011 في 00:45

لا تفعل إلا ما تستطيع أن تقوله ولا تقول إلا ما تسطيع أن تفعله

اللهم علمنا ما ينفعنا ونفعنا بما علمتنا وهب لنا من لدنك ولياً مرشدا

كلما أدبني الدهر أراني نقص عقلي ... وإذا ما زدت علماً زادني علماً بجهلي

أخوكم في الله أبو المجد

هيا نتعلم بعض المبادء لنطرق باب الإحتراف ************** جديد الدروس ( 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">

#5

السلام عليكم

شكراً لك أخي

بكفي إنك جاوبت وبس

جاري التجربة

بارك الله فيك

Be the change you want to see in the world


#6

أخي هذا يعرض نص النافذة وليس مسارها

Be the change you want to see in the world


#7

ولا يهمك أخي بإذن الله شغلتك بسيطة

خطوة واحد: Add reference

قم بإضافة مرجع لهذه المكتبة (C:\Windows\System32\shdocvw.dll)

ثم أضف كماند آخر إلى النافذة وأكتب هذا الكود في حدث الكليك:

            SHDocVw.ShellWindows ShellWindows = new SHDocVw.ShellWindows();

            foreach (SHDocVw.InternetExplorer IE in ShellWindows)
            {
                if (Path.GetFileNameWithoutExtension(IE.FullName).Equals("explorer", StringComparison.OrdinalIgnoreCase))
                {
                    if (!String.IsNullOrWhiteSpace(IE.LocationURL))
                    {
                        Uri URL = new Uri(IE.LocationURL);
                        listBox1.Items.Add(URL.AbsolutePath);
                    }
                }
            }

لتتعرف على جميع الخصائص لهذه المكتبة:MSDN Browser Extensions

تم تعديل هذه المشاركة بواسطة TarekNajem04 في 9 أكتوبر 2011 في 18:18

1

لا تفعل إلا ما تستطيع أن تقوله ولا تقول إلا ما تسطيع أن تفعله

اللهم علمنا ما ينفعنا ونفعنا بما علمتنا وهب لنا من لدنك ولياً مرشدا

كلما أدبني الدهر أراني نقص عقلي ... وإذا ما زدت علماً زادني علماً بجهلي

أخوكم في الله أبو المجد

هيا نتعلم بعض المبادء لنطرق باب الإحتراف ************** جديد الدروس ( 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">

#8

السلام عليكم

أخي أولا شكراً لك

ثانياً لم تنجح إضافة الملف

C:\Windows\System32\shdocvw.dll

وماذا تقصد بـ

اقتباس
ثم أضف كماند آخر إلى النافذة وأكتب هذا الكود في حدث الكليك:

Be the change you want to see in the world


#9

لإضافة الملف تكون على النحو التالي:

من القائمة project أضغط على الامر Add Reference وعند ظهور النافذة إذهب إلى الخيار (Browse) وفي خانة النص (File Name) قم بلصق مسار الملف ومن ثم إضغط على الأمر (الكماند الذي لم تعرفه) OK في هذه الحالة نكون قد أضفنا مرجع لهذه المكتبة لنستطيع أن نستخدم ما تحتويه من كود مكتوب مسبقاً.

إنتقل إلى تصميم النافذة وقم بإضافة كنترول جديد من النوع (Button) وبعد عملية أضافة الكنترول إضغط بزر الفأرة نقرتين لتفتح لك نافذة البرمجة الخاصة بالحدث كليك وهنا إلصق الكود المكتوب في الرد السابق

لا تتردد في السؤال إذا لم يكن هو الجواب المناسب

لا تفعل إلا ما تستطيع أن تقوله ولا تقول إلا ما تسطيع أن تفعله

اللهم علمنا ما ينفعنا ونفعنا بما علمتنا وهب لنا من لدنك ولياً مرشدا

كلما أدبني الدهر أراني نقص عقلي ... وإذا ما زدت علماً زادني علماً بجهلي

أخوكم في الله أبو المجد

هيا نتعلم بعض المبادء لنطرق باب الإحتراف ************** جديد الدروس ( 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">

#10

السلام عليكم

أخي لقد قمت بهذه الخطوات

ولكن هناك مشكلة عند إظافة الملف

Be the change you want to see in the world


#11

ياريت تكتب نوع الخطأ الذي يظهر عندك لمعرفة المشكلة.

في البداية تأكد من وجود الملف في المسار المحدد لديك وإن لم تجده قم بالبحث عنه.

أقرأ هذه المقالة عسى تفيدك في حل مشكلة الملف إذا كان معطوب.

SHDOCVW.dll is possibly corrupt - How do I fix this?

1

لا تفعل إلا ما تستطيع أن تقوله ولا تقول إلا ما تسطيع أن تفعله

اللهم علمنا ما ينفعنا ونفعنا بما علمتنا وهب لنا من لدنك ولياً مرشدا

كلما أدبني الدهر أراني نقص عقلي ... وإذا ما زدت علماً زادني علماً بجهلي

أخوكم في الله أبو المجد

هيا نتعلم بعض المبادء لنطرق باب الإحتراف ************** جديد الدروس ( 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">

#12

السلام عليكم

شكراً لك أخي لقد أتعبتك معي

إتبعت الطريقة ولم تنجح

هذه هي المشكلة

post-222991-032140800 1318176957_thumb.j

المرفقات
error.JPG

Be the change you want to see in the world


#13

أخي الكريم المشكلة ليست في الطريقة لأنني قمت بتجربته على أنظمة ويندوز المتاحة لدي مثل XP SP2-3 و win7x23 و win7x64

لديك خطأ في نظام التشغيل إم أن تقوم بإعادة تنزيل (تسطيب) الإنترنت إكسبلورر أو الطامة الكبرى إعادة إصلاح نظام التشغيل.

ونأسف لعدم رايتك نتيجة ما تصنع في الوقت الحالي.

نلتقي بعد صيانة النظام لديكم

سأقوم بوضع بعض الروابط عسى تفيدك في إصلاح المسكلة في النظام

http://h10025.www1.hp.com/ewfrf/wc/document?lc=en&cc=us&dlc=en&product=435775&docname=c00229756

http://www.iefaq.info/index.php?action=artikel&cat=24&id=31&artlang=en

http://social.msdn.microsoft.com/Forums/en-CA/winformsdesigner/thread/5f14d33c-fc55-415e-816e-666e89b68a92الداعي لك بالتوفيق

أبو المجد

1

لا تفعل إلا ما تستطيع أن تقوله ولا تقول إلا ما تسطيع أن تفعله

اللهم علمنا ما ينفعنا ونفعنا بما علمتنا وهب لنا من لدنك ولياً مرشدا

كلما أدبني الدهر أراني نقص عقلي ... وإذا ما زدت علماً زادني علماً بجهلي

أخوكم في الله أبو المجد

هيا نتعلم بعض المبادء لنطرق باب الإحتراف ************** جديد الدروس ( 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">

#14

السلام عليكم

شكراً لك أخي وبارك الله فيك

لقد حللت المشكلة قبل ردك الجميل هذا

وهذا المشروع للإفادة

EnumWin.zip

وألف شكر لك

Be the change you want to see in the world


مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…