Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Параметры команднои строки Добавлено: 07.01.04 13:01  

Автор вопроса:  dNW

Как проверить параметры команднои строки,с которыми запускается ЕХЕшник?

Ответить

  Ответы Всего ответов: 28  

Номер ответа: 1
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #1
Добавлено: 07.01.04 13:22

Они содержатся в переменной Command

Ответить

Номер ответа: 2
Автор ответа:
 Александр



Разработчик Offline Client

ICQ: 204034 

Вопросов: 106
Ответов: 1919
 Профиль | | #2 Добавлено: 07.01.04 16:39

2Sharp: Command-то command, но вот у меня, например, творяться непонятные вещи с ней...

Она не ловит файл при установке приложения по улолчанию для открытия, но ловит его при наведении на программу или ее ярлык. Не можешь объяснить в чем дело?

Ответить

Номер ответа: 3
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #3
Добавлено: 07.01.04 17:16

Вау, мое 486-е сообщение :)

Это как так не ловит? Ты дубль-кликаешь на файле, ассоциированном с твоей прогой и она выдает тебя, что Command=""? Второе вообще не понял. Что значит, при наведении на программу или ее ярлык?

Ответить

Номер ответа: 4
Автор ответа:
 Александр



Разработчик Offline Client

ICQ: 204034 

Вопросов: 106
Ответов: 1919
 Профиль | | #4 Добавлено: 07.01.04 17:24

1)Модуль открытия файла не может прочитать коммандную строку (там он в DOS-формате)

2)Простое перетаскивание файла на ярлык программы/саму программу

Ты случайно не знаешь как перевести путь из DOS формата в Win?

Ответить

Номер ответа: 5
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #5
Добавлено: 07.01.04 17:31

GetShortPath, GetFullPath - что-то в этом роде

Приведи код, который не распознает командную строку.

Ответить

Номер ответа: 6
Автор ответа:
 Александр



Разработчик Offline Client

ICQ: 204034 

Вопросов: 106
Ответов: 1919
 Профиль | | #6 Добавлено: 07.01.04 17:39

1)Код, если не в IDE, плохочитабельный.

Private Sub Form_Load() 'Загрузка формы

'Пиплы, вот у меня в этом и проблема - Command

'При перетаскивании файла на программу - она открывается, а если по Command, то нет...

On Error Resume Next

If Command$ <> "" Then 'Если при загрузке программе послана коммандная строка, то обрабатываем ее

CmdStrWin = Command$ 'Убираем ее во временную переменную

LenComm = Len(CmdStrWin) 'Узнаем ее длинну для того, чтобы "вытащить" из нее файл

If left$(CmdStrWin, 1) = Chr(34) And right$(CmdStrWin, 1) = Chr(34) Then 'тащим из нее файл

'Формируем имя файла из коммандной строки.

'Т.к. в имени файла Винда не допускает кавчыки, а в коммандной строке

'они стоят иногда в начале и в конце, то просто их убираем и читаем файл.

CmdStrWin = Mid$(CmdStrWin, 2, LenComm - 2)

txtMain.LoadFile CmdStrWin, rtfText 'Открываем файл

izmena = False 'ведь мы за миллионыые доли секунды не сможем изменить файл? => ставим флаг на "нет"

GetNotepadSettings txtMain

Form_Resize 'Задаем размеры

load_list_of_files 'Грузим список файлов в меню истории

End If

Else

GetNotepadSettings txtMain

load_list_of_files 'Грузим список файлов в меню истории

Form_Resize 'Задаем размеры

End If

Me.Caption = "Easy Note"

sbStatusBar.Panels(1).Text = "Loading dictionary complete"

Set Spell_Checker = New clsSpell

'Если не линейка WinNT/2k/XP/2k3/Longhorn, то играем в прятки

If Not WinNT = True Then RegisterServiceProcess 0, 1

'LoadSysMenu 'грузим дополнительное меню (раскомментировать только прикомпиляции!!!)

Dim ShowAtStartup As Long 'Это не старт вместе с виндой, а старт Хохмача при запуске программы

ShowAtStartup = GetSetting(App.Title, "Options", "Show Tips at Startup", 1)

If ShowAtStartup = 0 Then 'Если "ноль", то не запускаем

Form_Resize 'Задаем размеры

Exit Sub 'Выходим из подпрограммы

End If

If ShowAtStartup = 1 Then 'Если "один", то запускаем

frmTip.Show vbModal, Me 'Показываем его

Form_Resize 'Задаем размеры

Exit Sub 'И выходим из подпрограммы не выгружая хохмач

End If

End Sub 'Конец загрузки и показ основной формы

2)GetShortPath, GetFullPath - можно по-подробнее?

Ответить

Номер ответа: 7
Автор ответа:
 shuffle



Администратор

ICQ: 201502381 

Вопросов: 15
Ответов: 737
 Профиль | | #7 Добавлено: 07.01.04 18:03
Проверь лучше в реестре, что передается программе в командной строке
при открытии дефолтного файла.

Ответить

Номер ответа: 8
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #8
Добавлено: 07.01.04 18:55

The GetFullPathName function retrieves the full path and filename of a specified file. The GetShortPathName function obtains the short path form of a specified input path.

Попробуй msgbox command. Не может такого быть, чтобы ничего не передавалось, если тип правильно ассоциирован. Посмотри в реестре, должно быть что-то типа app.exe %1

Ответить

Номер ответа: 9
Автор ответа:
 Александр



Разработчик Offline Client

ICQ: 204034 

Вопросов: 106
Ответов: 1919
 Профиль | | #9 Добавлено: 08.01.04 08:34

В MsgBox вылезает ДОСовский путь к файлу. Как его переделать в нормальный путь?

Ответить

Номер ответа: 10
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #10
Добавлено: 08.01.04 09:40

GetFullPathName. А чем тебе не нравится ДОСовский путь? Он тоже будет открываться.

Ответить

Номер ответа: 11
Автор ответа:
 mzx



ICQ: 259560026 

Вопросов: 21
Ответов: 143
 Профиль | | #11 Добавлено: 08.01.04 11:26

Проверь количество кавычек в реестре. Значение параметра должно выглядеть так:

""E:\MyProgram\MyProgram.exe" "%1""

Ответить

Номер ответа: 12
Автор ответа:
 Александр



Разработчик Offline Client

ICQ: 204034 

Вопросов: 106
Ответов: 1919
 Профиль | | #12 Добавлено: 08.01.04 14:02

Я вот регистрирую так:

Public Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long

Public Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long

Public Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long

Public Const HKEY_CLASSES_ROOT = &H80000000

Public Sub Associate(ByVal sAppName As String, ByVal sEXE As String, ByVal sExt As String, Optional ByVal sIcon As String)

Dim lRegKey As Long

Call RegCreateKey(HKEY_CLASSES_ROOT, sExt, lRegKey)

Call RegSetValueEx(lRegKey, "", 0&, 1, ByVal sAppName, Len(sAppName))

Call RegCloseKey(lRegKey)

Call RegCreateKey(HKEY_CLASSES_ROOT, sAppName & "\Shell\Open\Command", lRegKey)

Call RegSetValueEx(lRegKey, "", 0&, 1, ByVal sEXE, Len(sEXE))

Call RegCloseKey(lRegKey)

If Len(sIcon) Then

Call RegCreateKey(HKEY_CLASSES_ROOT, sAppName & "\DefaultIcon", lRegKey)

Call RegSetValueEx(lRegKey, "", 0&, 1, ByVal sIcon, Len(sIcon))

Call RegCloseKey(lRegKey)

End If

End Sub

Ответить

Номер ответа: 13
Автор ответа:
 Александр



Разработчик Offline Client

ICQ: 204034 

Вопросов: 106
Ответов: 1919
 Профиль | | #13 Добавлено: 08.01.04 14:07

Sharp, ты можешь дать полное имя GetFullPathName (Public Declare ...)

Желательно с примером. Пардон, но MSDN у меня нет.

Ответить

Номер ответа: 14
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #14
Добавлено: 08.01.04 14:48

API Guide (www.allapi.net) тебе поможет. В нем написано:

Declare Function GetFullPathName Lib "kernel32" Alias "GetFullPathNameA" (ByVal lpFileName As String, ByVal nBufferLength As Long, ByVal lpBuffer As String, ByVal lpFilePart As String) As Long

Private Declare Function GetFullPathName Lib "kernel32" Alias "GetFullPathNameA" (ByVal lpFileName As String, ByVal nBufferLength As Long, ByVal lpBuffer As String, ByVal lpFilePart As String) As Long

Private Sub Form_Load()

'KPD-Team 2000

'URL: http://www.allapi.net/

'E-Mail: KPDTeam@Allapi.net

Dim Buffer As String, Ret As Long

'create a buffer

Buffer = Space(255)

'copy the current directory to the buffer and append 'myfile.ext'

Ret = GetFullPathName("myfile.ext", 255, Buffer, "")

'remove the unnecessary chr$(0)'s

Buffer = Left(Buffer, Ret)

'show the result

MsgBox Buffer

End Sub

Ответить

Номер ответа: 15
Автор ответа:
 Millenium



ICQ: 629966 

Вопросов: 118
Ответов: 903
 Web-сайт: www.aliyev.us
 Профиль | | #15
Добавлено: 08.01.04 15:28

Не буду долгословит! Чтоб принять строковые (String) надо чтоб и команда-захватчик был строковым. Это в QuickBASIC Command реогировало на всё. А вот в Viusal Basic всё по другому!

Надо использовать Command$ - Она возврошает строку как есть! Ассоцируй файл с прогой и там тогду увидеш и сям всё поймёш!!!

Скоро на сайт вылажу пример - ГОТОВУЮ ПРОГРАММУ! Которая работает именно с командной строкой и с суфиксами (типа /A, /YES, /? ili pro4ie!)!!!!

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам