Проблема с CommandLine

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Stas
Новичок
Новичок
 
Сообщения: 25
Зарегистрирован: 20.05.2003 (Вт) 20:10

Проблема с CommandLine

Сообщение Stas » 22.10.2003 (Ср) 20:48

У меня такая проблема:
Функция GetCommandLine возвращает не значение командной
строки, а адрес памяти в котором это значение хранится.
VB разумеется не имеет встроеных функций для прямого
обращения к ячейкам памяти. Подскажите как это сделать
при помощи API. Я конечно заставил прогу работать с
командной строкой на при помощи какой-то мелко библиотеки
от Desaware в которую по их словам якобы включены функции
которые трудно риализовать на вб. Там и была функция которая
мне нужна. Это конечно хорошо но хотелось бы без посторонних
библиотек.
Зарание спасибо за помощь.
I'll give to you all what i know

Demonx
Бывалый
Бывалый
 
Сообщения: 237
Зарегистрирован: 25.06.2003 (Ср) 0:08
Откуда: Литва/Висагинас

Сообщение Demonx » 23.10.2003 (Чт) 1:12

Command()

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 23.10.2003 (Чт) 8:40

Хм.
Скажу я так.
Если функция возвращает указатель на строку, то сей указатель можно объявить как long, и тогда придётся юзать CopyMemory, а можно объявить как string, и ничего юзать не придётся. Ибо string суть bstr*, но даже если возвращают lpstr*, VB справится.
Код: Выделить всё
Declare Function GetCommandLine Lib "kernel32" Alias "GetCommandLineA" () As String

Различие GetCommandLine и Command в том, что первая возвращает строку запуска самой проги и аргументы запуска, а вторая - только аргументы.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Vi
Постоялец
Постоялец
 
Сообщения: 739
Зарегистрирован: 25.01.2002 (Пт) 11:03
Откуда: Россия, Ижевск

Сообщение Vi » 23.10.2003 (Чт) 9:09

Ибо string суть bstr*, но даже если возвращают lpstr*, VB справится.

Вот именно, что string суть bstr, но все остальные - lpstr и lpolestr - отнюдь не строки vb.
У меня код
Код: Выделить всё
Declare Function GetCommandLine Lib "kernel32" _
            Alias "GetCommandLineA" () As String
Dim s As String
s = GetCommandLine

вылетает. Вот тебе и строка.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! (с) КВН

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 23.10.2003 (Чт) 9:23

Что-то вы, батенька, мудрите.
Код: Выделить всё
Option Explicit

Private Declare Function GetCommandLine Lib "kernel32" Alias "GetCommandLineA" () As String

Private Sub Form_Load()
  Dim a As String
  a = GetCommandLine
  MsgBox a
End Sub
Прекрасно работает!
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot и гости: 11

    TopList