PDA

View Full Version : پارامتر برنامه های exe



jafar_ho
چهارشنبه 20 دی 1385, 14:51 عصر
با سلام به دوستان
سؤال اینکه چگونه می توان پارامتر های یک برنامه را که در توابعی مثل shell در vb یا مثل آن کاربرد دارد به دست آورد .
به عنوان مثال در اجرای notpad می توان فایل مورد نظر را به آن فرستاد تا باز کند .
در مورد بقیه برنامه ها چطور؟؟؟؟؟؟؟؟؟
با تشکر

Payman62
چهارشنبه 20 دی 1385, 18:18 عصر
اگه فایل های داسی ویندوز باشن با زدن اسم فایل و ?/ جلوی اسم (با 1 فاصله بینشون) پارامتر ها رو بهت میده.

Ner'zhul Arthas
چهارشنبه 20 دی 1385, 21:19 عصر
اگر درست منظورتون رو فهمیده باشم میتونید به جای شل از این ای پی آی استفاده کنید:


Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long


خودش میفهمه فایل با چی باید باز شه.

برای استفاده ازش هم باید به روش زیر عمل کنید:




ShellExecute Me.hwnd, "open", "adrese file ba namesh", vbNullString, "adrese file bedoone namesh", 1

jafar_ho
پنج شنبه 21 دی 1385, 14:26 عصر
اگر درست منظورتون رو فهمیده باشم میتونید



با تشکر

منظورم چیزی مثل تابع زیر است


Call Shell("Rundll32.exe user,exitwindows")


که در آن برای فایل آرگومان هایش هم فرستاده شده

همان روش دوستمان Payman62 جواب داد
یعنی
Call Shell("Rundll32.exe /?")

به هر حال متشکرم

jafar_ho
پنج شنبه 21 دی 1385, 14:29 عصر
اگه فایل های داسی ویندوز باشن با زدن اسم فایل و ?/ جلوی اسم (با 1 فاصله بینشون) پارامتر ها رو بهت میده.


با تشکر

نظر شما درست بود و جواب داد .
البته در تمام برنامه ها , نه فقط برنامه های داس

مجددا متشکرم

sohrab o
پنج شنبه 21 دی 1385, 20:45 عصر
یه نمونه مثل وینمپ


Preparations


Add 1 Command Button to your form.
Click the button to associate the .xxx extension with your application.

Module Code

Declare Function RegCreateKey Lib "advapi32.dll" Alias _
"RegCreateKeyA" (ByVal hKey As Long, _
ByVal lpSubKey As String, phkResult As Long) As Long
Declare Function RegSetValue Lib "advapi32.dll" Alias _
"RegSetValueA" (ByVal hKey As Long, _
ByVal lpSubKey As String, ByVal dwType As Long, _
ByVal lpData As String, ByVal cbData As Long) As Long

' Return codes from Registration functions.
Public Const ERROR_SUCCESS = 0&
Public Const ERROR_BADDB = 1&
Public Const ERROR_BADKEY = 2&
Public Const ERROR_CANTOPEN = 3&
Public Const ERROR_CANTREAD = 4&
Public Const ERROR_CANTWRITE = 5&
Public Const ERROR_OUTOFMEMORY = 6&
Public Const ERROR_INVALID_PARAMETER = 7&
Public Const ERROR_ACCESS_DENIED = 8&

Public Const HKEY_CLASSES_ROOT = &H80000000
Public Const MAX_PATH = 260&
Public Const REG_SZ = 1



Form Code

Private Sub Command1_Click()

Dim sKeyName As String 'Holds Key Name in registry.
Dim sKeyValue As String 'Holds Key Value in registry.
Dim ret& 'Holds error status if any from API calls.
Dim lphKey& 'Holds created key handle from RegCreateKey.

'This creates a Root entry called "MyApp".
sKeyName = "MyApp"
sKeyValue = "My Application"
ret& = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, lphKey&)
ret& = RegSetValue&(lphKey&, "", REG_SZ, sKeyValue, 0&)

'This creates a Root entry called .XXX associated with "MyApp".
'You can replace ".XXX" with your wanted extension
sKeyName = ".XXX"
'replace all "MyApp" below with your application name
sKeyValue = "MyApp"
ret& = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, lphKey&)
ret& = RegSetValue&(lphKey&, "", REG_SZ, sKeyValue, 0&)

'This sets the command line for "MyApp".
sKeyName = "MyApp"
'replace c:\mydir\my.exe with your exe file. In this example,
'All the .XXX files will be opened with the file c:\mydir\my.exe
sKeyValue = "c:\mydir\my.exe %1"
ret& = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, lphKey&)
ret& = RegSetValue&(lphKey&, "shell\open\command", REG_SZ, _
sKeyValue, MAX_PATH)
'************************************************* ******
'That's All!
'Now to test this program, after you associate the .XXX files with
'c:\mydir\my.exe (In this example), start a new project, and
'copy the following 3 lines to your form (uncomment the lines)

'Private Sub Form_Load()
' MsgBox Command
'End Sub

'compile the program to my.exe file, and put it in c:\mydir directory.
'Now go back to Windows and change the name of one of your files
'To Test.xxx and double click on it. It will be opened with the program
'c:\mydir\my.exe and it will pop up message box: "c:\Test.xxx"
'************************************************* **********
End Sub