منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : هام جدا ( جلب عدد الـ Items من ListBox في برنامج اخر )
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
السلام عليكم ورحمة الله
استخدم دوال api مثل FindWindowEx للحصول علي المقبض ثم SendMessage لارسال امر معين وهكذا
اريد جلب عدد الـ Items من ListBox ثم الدوران عليهم بتكرار For واختيار واحد واحد
وجزاكم الله خيرا
ان شاء الله ساقوم بعمل درس لذلك قريبا
العملية سهلة وانا نفذتها ، شوف الصورة المتحركة





اذا ماظهرت :

إقتباس :http://im70.gulfup.com/XqqFwP.gif

الكود الي استعملته لتنفيذ الحركة :-

PHP كود :
[DllImport("user32.dll"CharSet CharSet.Auto)]
        static 
extern IntPtr SendMessage(IntPtr hWndUInt32 MsgIntPtr wParamIntPtr lParam);

        [
DllImport("user32.dll"SetLastError true)]
        public static 
extern IntPtr FindWindowEx(IntPtr parentHandleIntPtr childAfterstring classNamestring windowTitle);

        const 
uint LB_GETCONUNT 0X018B;
        const 
uint LB_SETCURSEL 0x0186;

        private 
void button1_Click(object senderEventArgs e)
        {
            
IntPtr mainWindowHwnd = (IntPtr)int.Parse(textBox1.TextSystem.Globalization.NumberStyles.AllowHexSpecifier);
            
            
            
//جلب مقبض اللست بوكس
            
IntPtr lisboxHandle FindWindowEx(mainWindowHwndIntPtr.Zero"WindowsForms10.LISTBOX.app.0.33c0d9d",
                
null);

            
//جلب عدد العناصر في اللست بوكس
            
int count = (int)SendMessage(lisboxHandleLB_GETCONUNTIntPtr.ZeroIntPtr.Zero);

            for (
int i 0counti++)
            {
                
//تحديد العناصر
                
SendMessage(lisboxHandle,LB_SETCURSEL, (IntPtr)iIntPtr.Zero);
                
System.Threading.Thread.Sleep(400);
            }
            
MessageBox.Show("تم");
        } 

علما بان الكود يختلف من برنامج لاخر خاصة الclass name (لازم تجيبه من spy++)

ان شاء الله اسوي لك شرح عن هالموضوع عشان تعتمد على نفسك وتعرف تتحكم في اي برنامج اخر

اليوم انا فاضي على نص الليل يمكن اسوي مقالة عن هالموضوع

بس قولي هذا كل الي تحتاجه عشان اطبق الشرح عليه لو بعد تحتاج شيئ !!



وعذرا على اي تقصير
جزاك الله خيرا
والله انا عارف مدي انشغالك الله تعالي لك التوفيق والسداد
وفي انتظار الشرح باذن الله تعالي
ارجو توضيح ما هي البرمترات التي تمرر للدالة SendMessage
في الانتظار باذن الله تعالي
السلام عليكم و رحمة الله و بركاته،

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

و وضعت أيضاً في المثال جلب عناصر الـListBox من البرنامج الآخر إلى برنامجك

كما وضعت الرسائل التي تخص الـListBox في الدالة SendMessage

و السلام عليكم و رحمة الله و بركاته .
ما شاء الله لا قوة الا بالله
روعة بارك الله فيك
اسئل الله تعالي ان يجعله في موازين حسناتك
ولي رجاء
عند تحديد الـ Items من ListBox لا يتم تنفيذ الحدث lstItems.SelectedIndexChanged

ضيف الكود تنفهم قصدي
إقتباس : Private Sub lstItems_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstItems.SelectedIndexChanged
Me.Label1.Text = Me.lstItems.Text
End Sub
انهيت برنامجي تبقي هذه النقطة فقط
للرفع
انزين حركة SendKeys الي راويتك اياها تطلق حدث IndexChanged
الصفحات : 1 2