PDA

View Full Version : آموزش: ارسال Command به برنامه و بکارگیری پارامترهای آن



ROSTAM2
سه شنبه 10 آبان 1401, 20:08 عصر
سلام به همه.
مبحث این تاپیک در مورد ارسال دستور یا Command به برنامه و استفاده از پارامترهای آن موضوع جالب و کاربردیه که برای برنامه نویس های ویندوز دونستن اون لازمه.

از طریق command می شه بین دو اپلیکیشن ویندوز و یا یک کنسول اپ و ویندوز اپ ارتباط برقرار کرد و پارامترهایی رو برای مدیریت به هر کدوم از اونها ارسال کرد.

و همچنین با استفاده از command در رجیستری ویندوز می شه آدرس فایلها با پارامترهای دلخواه برای مدیریت فایل در برنامه به برنامه ارسال کرد.

اگر در این زمینه اطلاعاتی دارید حتما در این تاپیک به اشتراک بگذارید.

ROSTAM2
سه شنبه 10 آبان 1401, 20:20 عصر
اینجا یک کنسول اپلیکیشن و یک ویندوز اپلیکیشن داریم که می تونیم با استفاده از کنسول اپ به ویندوز اپ پارامترهایی رو ارسال کنیم که اطلاعات فیلدهای برنامه (ویندوز اپ) رو تکمیل کنه و همچنین تغییر بده.

فیلد های برنامه چند برچسب و یک جعبه تصویر هست که اطلاعات یک پروفایل رو نمایش می دن که با ارسال پارامترهای معین شده از طریق command به ویندوز اپ تمام اطلاعات پروفایل برای نمایش فراهم می شه.

این کد سورس برنامه کنسول اپ هست که با تایپ set تمام اطلاعاتی که لازمه رو چاپ می کنه و با کمک اون اطلاعات می شه پارامترهای command رو تکمیل کرد و خوبی اون این هست که هر پارامتر اختیاری هست و اگر برای تغییر نیاز بود یکی از اون فیلدها رو مقداردهی کنیم کافیه از همون پارامتر به تنهایی استفاده کنیم:

مثلا: Set /n:ROSTAM این پارامتر اطلاعات نام پروفایل رو فراهم می کنه:

Module Module1
Dim WithEvents DestinationProcess As Process
Sub Main()
Dim Command As String = ""
Dim DestinationApp As String = String.Format("{0}{1}", My.Application.Info.DirectoryPath, _
"\DestinationApp.exe")
Dim params() As String = {""}


Dim Args As String = ""
Do Until Command.ToLower = "quit"
Console.Write("Send Info>")
Command = Console.ReadLine
Console.WriteLine()
params = Command.Split(Space(1))
Select Case params(0).ToLower
Case "set", "setinfo"
Args = ""
If params.Length > 1 Then
For i = 1 To params.Length - 1
Args += params(i) + If(i = params.Length - 1, "", Space(1))
Next
DestinationProcess = Process.Start(DestinationApp, Args)
Else
Console.WriteLine("Use Set Command with Parameters {[/n:<name>] [/f:<family>] [/b:<birthday>] [/m:<mobile>] [/ph:<phone>] [/i:<image file path>]}")
End If
End Select
Console.WriteLine()
Loop
End Sub


End Module


دانلود سورس کنسول اپ:

154144

ادامه در پست بعدی...

ROSTAM2
سه شنبه 10 آبان 1401, 20:32 عصر
ادامه پست شماره 2:

در مورد ویندوز اپلیکیشن باید به این موارد توجه کرد:

1- در خصوصیات پروژه (Project Properties) و سربرگ Application گزینه Make single instance application باید فعال بشه، تا هر بار پارامترها به همون برنامه اجرا شده ارسال بشه و برنامه با پنجره مجزا اجرا نشه.
2- با استفاده از کلید View Application Events به بخش رویدادهای برنامه رفته و رویداد StartupNextInstance از برنامه رو انتخاب و این کد رو در اون رویداد به کار می گیرید(در سورس برنامه قابل دانلود موجود است.):


Partial Friend Class MyApplication
Dim ci As New Customer
Private Sub MyApplication_StartupNextInstance(sender As Object, e As Microsoft.VisualBasic.ApplicationServices.StartupN extInstanceEventArgs) Handles Me.StartupNextInstance
Dim Params() As String = e.CommandLine.ToArray
Dim Command(-1) As String
For i = 0 To Params.Length - 1
Command = Params(i).Split(":")
Select Case Command(0).ToLower
Case "/n", "/name" : ci.Name = Command(1)
Case "/f", "/family" : ci.Family = Command(1)
Case "/b", "/birthday" : ci.Birthday = Command(1)
Case "/m", "/mobile" : ci.Mobile = Command(1)
Case "/ph", "/phone" : ci.Phone = Command(1)
Case "/i", "/image" : ci.Image = Command(1)
End Select
Next
My.Forms.Form1.SetInfo(ci)
End Sub
End Class


همچنین برنامه ویندوز اپ یک فرم داره که توسط متود setInfo فیلدهای اون از جمله برچسب ها و جعبه تصویر پر می شه.
و برنامه یک کلاس با عنوان customer داره که برای پر کردن فیلدها از اون کلاس کمک گرفته می شه:


Public Class Customer
Private NameValue As String
Public Property Name() As String
Get
Return NameValue
End Get
Set(ByVal value As String)
NameValue = value
End Set
End Property
Private FamilyValue As String
Public Property Family() As String
Get
Return FamilyValue
End Get
Set(ByVal value As String)
FamilyValue = value
End Set
End Property
Private BirthdayValue As String
Public Property Birthday() As String
Get
Return BirthdayValue
End Get
Set(ByVal value As String)
BirthdayValue = value
End Set
End Property
Private MobileValue As String
Public Property Mobile() As String
Get
Return MobileValue
End Get
Set(ByVal value As String)
MobileValue = value
End Set
End Property
Private PhoneValue As String
Public Property Phone() As String
Get
Return PhoneValue
End Get
Set(ByVal value As String)
PhoneValue = value
End Set
End Property
Private ImageValue As String
Public Property Image() As String
Get
Return ImageValue
End Get
Set(ByVal value As String)
ImageValue = value
End Set
End Property


End Class


که همه اینها در سورس برنامه برای دانلود موجود هست:

154145

ROSTAM2
سه شنبه 10 آبان 1401, 20:40 عصر
Form1 پنجره اصلی ویندوز اپ هست که از طریق کنسول اپ پارامترها برای پر کردن فیلدها به اون ارائه می شه با دستور Set:

با بکارگیری دستور Set به تنهایی اطلاعات برای راهنمایی چاپ می شه.

پارامترها(اختیاری):

/n:<نام>
/f:<نام خانوادگی>
/b:<تاریخ تولد>
/m:<موبایل>
/ph:<تلفن>
/i:<تصویرپروفایل>


دموی برنامه:

154147