PDA

View Full Version : سوال: کمک در نوشتن یک شرط زمانی درباز کردن فایل exe



1234
چهارشنبه 01 مهر 1388, 05:39 صبح
سلام دوستان عزیزم :
من این برنامه رو نوشتم اما خطا می ده ممکنه کمکم کنین خطاشو برطرف کنم؟
(private void timer1_Tick(object sender, EventArgs e
}
; (ArrayList al = new System.Collections.ArrayList(0
;Process[] p
; (" p = Process.GetProcessesByName("Iexplore
; ( ++ for (int i = 0; i < p.Length; i
}
; ( al.Add(p[i].Id
{
; int j
; ( " Process.Start("iexplore
; (System.Threading.Thread.Sleep(10000
; Process[] p2
;( " p2 = Process.GetProcessesByName("Iexplore
( for (j = 0; j < p2.Length; j++
}
; j = p2.Length
( if (j < 5
; continue
else
}
( if (j > 5
}
( ( if (!al.Contains(p2[j].Id
}
; () p2[j].Kill
{ {
{
{
{
error این برنامه در زیر آوردم لطفا ببینید و کمکم کنین ! در این برنامه می خوام دریک تایم خاصی که تنظیم کردم برنامه 5 تا اکسپلورر باز کنه و اگه بیشتر شد اون اکسپلورری که داره تازه داره باز میشه یعنی ششمی رو killکنه و اگه کاربر یکی رو بست برنامه خودش یکی دیگه باز کنه

(تو این خط ( () if (!al.Contains(p2[j].Id
این خطا رو میده و میگه Index was outside the bounds of the array.
index out ofrange exception waunhandled)

Parham.D
چهارشنبه 01 مهر 1388, 09:34 صبح
کدهای شما خوانا نیست. اما قکر میکنم که ایراد از متغیر J باشه. مقدار J بیشتر از اندازه‏ای که P2 قبول میکنه اضافه شده.

Reza_Yarahmadi
چهارشنبه 01 مهر 1388, 11:07 صبح
لطفا کدهاتون رو بین تگ code یا Source بنویسید (علامت # و <> در بین ابزارهای بالا!!) :چشمک:
فکر کنم مشکل از خط زیر باشه

j = p2.Length;دقیقا متوجه نشدم این کد قراره چه کاری کنه! :گیج: ولی چند مورد هست که به نظر مشکل داره
تغییر شمارنده حلقه توی اولین دستور از بلاک حلقه به طوری که شرط شمارنده نقض بشه چندان مرسوم نیست.

for(j = 0;j < p2.Length;j++)
{
j = p2.Length;
....چون اندیس آرایه ها از 0 شروع میشه برای دسترسی به آخرین عنصر از آرایه باید یک واحد از طول آرایه کم کرد

j = p2.Length - 1;اگه حلقه رو به صورت زیر تغییر بدید فکر کنم راحتتر و خوانا تر باشه

for(j = 5;j < p2.Length;j++)
{
if(!al.Contains(p2[j].Id)
p2[j].Kill();
}

1234
چهارشنبه 01 مهر 1388, 20:23 عصر
سلام دوستان :دستتون درد نکنه که جواب دادین
اما به جوابی که می خواستم نرسیدم اصلا دوبار توضیح میدم لطفا کمک کنین برام جواب بدین
برنامه ای که بتونه 5 تا صفحه وب رو همیشه باز نگه داره یعنی وقتی که برنامه اجرا می شه از اول 5 تا صفحه اینترنت اکسپلورر رو با فاصله زمانی 1000 میلی ثانیه باز کنه و حالا کاربر هریک اکسپلورری را که ببنده برنامه بیاد بجاش یکی دیگه جدید باز کنه یعنی برنامه تو شرطش این باشه که اگه تعداد صفحات از 5 تا بیشتر داره میشه ششمین اجرا رو kill کنه و اگه کاربر یک اکسپلورر رو خودش بست برنامه بیاد یکی بجاش باز کنه که در هر صورت 5 تا صفحه باز وجود داشته باشه
اگه میشه کمکم کنین هر چی فکر می کنم نمیدونم چطوری کاملش کنم ( افسرده شدم )
ممنون

Reza_Yarahmadi
چهارشنبه 01 مهر 1388, 22:31 عصر
کد زیر رو امتحان کنید ببینید کارتون رو راه میندازه یا نه!
Process[] P1 = Process.GetProcessesByName("iexplore");
for (int i = 0; i < 5 - P1.Length; i++)
{
Process.Start("iexplore");
Thread.Sleep(1000);
}
for (int i = 5; i < P1.Length; i++)
P1[i].Kill();

1234
چهارشنبه 01 مهر 1388, 23:31 عصر
سلام ! دستورات شرطیشو نمی دونستم که حالا به دانسته هایم اضافه شد! با تشکر فراوان !