|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Окт 16, 2003 20:39:44 Как определить место в коммандной строке, где оканчивается путь к файлу и его название и начинаются параметры запуска? GetCurrentDirectory - выдаст текущую директорию и эту часть в коммандной строке можно обрезать. Как можно определить название запущенного файла? |
|
|
Дата: Окт 16, 2003 21:06:44 · Поправил: Asterix |
|
|
Дата: Окт 16, 2003 21:20:49 Asterix Виноват, исправлюсь :) |
|
|
Дата: Окт 17, 2003 00:24:50 Можно ещё так: invoke GetCommandLine
invoke PathGetArgs,eax
mov cmd_args,eax
mov al,[eax]
; Если параметры заключены в кавычки - убрать кавычки!
.IF al != 0
.IF al == '"'
invoke PathUnquoteSpaces,cmd_args
mov cmd_args,eax
.ENDIF
.ENDIFВ cmd_args теперь указатель на параметры запуска.
PathGetArgs и PathUnquoteSpaces ресолвятся через shlwapi.lib, вроде. Эти чудесные апишки поддерживаются даже в NT4!!! |
|
|
Дата: Окт 17, 2003 17:08:54 Или вот так
call GetCommandlineA
mov esi,eax
work__:
lodsb
test al,al
jz exit__
cmp al,20h
je exit__
jmp work__
; здесь еси указывает на первый
; параметр если он есть
|
|
|
Дата: Окт 17, 2003 17:10:47 тьфу забыл в конце exit__: |
|
|
Дата: Окт 17, 2003 17:27:15 sl0n Так нельзя ;-) |
|
|
Дата: Окт 17, 2003 18:06:02 Винда по разному может оформить командную строку, например, заключить путь и имя в "", и добавить много пробелов перед параметрами. |
|
|
Дата: Окт 17, 2003 18:43:11 · Поправил: Asterix Добавлять пробелы она не должна, но они содержатся в пути, например Program Files. |
|
|
Дата: Окт 17, 2003 20:37:15 Kba3iM0go Asterix Так поэтому и существуют PathGetArgs и PathUnquoteSpaces. Я этот код подсмотрел в SimEd by KetilO. |
|
|
Дата: Окт 17, 2003 21:09:53 Quantum А в win98 работает? |
|
|
Дата: Окт 18, 2003 02:06:52 · Поправил: Quantum Asterix Конечно! Я теперь их только и юзаю. Если в следующих виндах что-то изменится в формате параметров командной строки, этот код всё равно будет работать, назло Биллу Гейтсу :))) |
|
|
Дата: Окт 18, 2003 03:09:12 Quantum Сейчас пришлю тебе что-то на мыло :-))) |
|
|
Дата: Окт 18, 2003 11:46:44 Asterix Добавлять пробелы она не должна Конечно не должна, но иногда добавляет. Эти грабли замечены были на w2k(RUS, Prof). В общем - как я отсекаю параметры: stdcall GetCommandLine lea esi,[eax+1] mov ah,[esi-1] cmp ah,'"' je @f mov ah,' ' @@: lodsb test al,al jz no cmp al,ah jne @b @@: lodsb test al,al jz no cmp al,' ' je @b @@: dec esi stdcall MessageBox ,NULL,esi,'parameters:',0 no: stdcall ExitProcess ,0 |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.069 |