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

نسخة كاملة : كيفية فتح البرنامج اكتر من مرة بشروط معينة
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم

عندى برنامج مكون من فورم 1

بجانب البرنامج يوجد ملفين نصى
1.txt الخاص بعدد مرات تشغيل البرنامج
2.txt يوجد به عناصر سوف تضاف لليست بوكس فى البرنامج

الفورم يحتوى على ليست بوكس

فى الملف رقم 1 هكتب فيه رقم والرقم دا يكون عدد مرات تشغيل البرنامج

يعنى مثلا لو كتبت فيه 5 يبقا البرنامج يفتح نفسه 5 مرات

ثانيا الملف رقم 2 نفترض ان به 100 عنصر

والبرنامج فتح مثلا 5 مرات عايز بقا يقسم عدد العناصر على البرامج المفتوحة مثلا هو مفتوح 5 مرات

و 100 على 5 = 20

يبقا كدا المفروض كل برنامج منهم هيضاف لليست بوكس بتاعته 20 عنصر

يبقا كدا المطلوب

هو فتح البرنامج بعدد مرات معينة من اختيار المستخدم و تقسيم عدد العناصر على البرامج المفتوحة

اتمنى يكون الطلب واضح

شكرا لكم مقدما
اذا كان (بجانب البرنامج يوجد ملفين نصى) وكان البرنامج في مجلد البرامج Program Files فستحتاج لصلاحيات الكتابة.
(06-05-17, 08:34 PM)mansoor كتب : [ -> ]اذا كان (بجانب البرنامج يوجد ملفين نصى) وكان البرنامج في مجلد البرامج Program Files فستحتاج لصلاحيات الكتابة.

هههه شكرا لك للتنبيه ولكن اخى الغالى لا اظن ان الصلاحيات هى مشكلة بالنسبة لى اكتر من عمل كود يفعل المطلوب
نعم جوابي للتنبيه فقط، ولكن الباقي أتركه لم سبق له الدخول في مسألة عدد مرات التشغيل وبقية التفاصيل التي في الموضوع.
ياريت لو تشاركنا بمثال يمكن نقدر نساعد

الموضوع بخصوص الحمايه اخي مسعد ؟!
مظبوط كلامي؟
(07-05-17, 01:52 AM)zinom كتب : [ -> ]ياريت لو تشاركنا بمثال يمكن نقدر نساعد

الموضوع بخصوص الحمايه اخي مسعد ؟!
مظبوط كلامي؟

تفضل http://vb4arb.com/vb/attachment.php?aid=14157

لا ليس الغرض منه الحماية وانما انجاز بعض الاعمال
شكرا لكم جميعا

تم المساعدة بواسطة صديق خارج المنتدى

والحل

'Current Process
Dim proc As Process = Process.GetCurrentProcess()

'All running processes with the same name
Dim procs() As Process = Process.GetProcessesByName(proc.ProcessName)
'////////////////////////////////////////////////////////////////////////////////'
'Read settings file
'Should be first line = Instances:5 , second line = DataLength:1000
Dim settings() As String = File.ReadAllLines(Path.Combine(APATH, "Settings.txt"))

'Read how many instances the user want
Dim instances As Integer = Integer.Parse(settings(0).Replace("Instances:", ""))

'Get data file length
Dim len As Integer = Integer.Parse(settings(1).Replace("DataLength:", ""))
'////////////////////////////////////////////////////////////////////////////////'

'Check if this one is the first instance
If procs.Length = 1 Then
'Open the program n times
For index = 1 To instances - 1
Process.Start(proc.ProcessName)
System.Threading.Thread.Sleep(200)
Next
ElseIf procs.Length > instances Then
MessageBox.Show("Cannot create more instances")
System.Environment.Exit(0)
End If


Dim skip As Integer = (procs.Length - 1) * (len \ instances)
'if proces.Length == instances take (len - skip) else take (len / instances)
'to make sure there is no leftover data
Dim take As Integer = If(procs.Length = instances, (len - skip), (len \ instances))


'Read the data
data = File.ReadLines(Path.Combine(APATH, "2.txt")).Skip(skip).Take(take).ToArray()
ListBox1.Items.AddRange(data)
'For debugging, Show HM instances are running & data[0] - data[max] in the title
Text = procs.Length & ":" & data(0) & ":" & data(data.Length - 1)