· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Командная строка

. 1 . 2 . 3 . >>

Посл.отвђт Сообщенiе


Дата: Янв 8, 2004 17:38:21 · Поправил: Безпощадный даос

Есть такой код:
.data
run db 1024 dup(0)
lenCmdLine dd 0
pzParam dd 0
pzCmdLine	dd 0
.code
start:
invoke GetCommandLine
mov pzCmdLine, eax
	mov	edi, eax
	invoke	lstrlen, eax
	mov	lenCmdLine, eax
	xor	ecx, ecx
	.while ecx<lenCmdLine
		.if byte ptr [edi]==" "
			inc	edi
			mov	pzParam, edi
			.break
		.endif
		inc	ecx
		inc	edi
	.endw	
	xor	edi, edi
	xor	ecx, ecx
invoke dw2a, pzParam, addr run
invoke MessageBox,0,addr run,addr run,MB_OK


Почему-то в в MessageBox'е цифры вместо параметра.
Подскажите где ошибка ?


Дата: Янв 8, 2004 17:44:31


Дата: Янв 8, 2004 17:48:37

WELL12
Как то нудно без отладчика.
А ошибка известна. Ты не тот адрес строки передаёшь.

Проверь какие адреса поступают в invoke dw2a, pzParam, addr run


Дата: Янв 8, 2004 17:50:32

Или самый прикольный пример by Quantum
.386
.model flat, stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
include \masm32\include\shlwapi.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\shlwapi.lib

.data
cmd_args dd 0

.CODE
start:
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
xor ecx,ecx
   invoke MessageBox,ecx,cmd_args,ecx,ecx
   invoke ExitProcess,ecx
end start


Дата: Янв 8, 2004 17:53:20

Некоторое время назад написал это, думал можэт
кому то пригодитса. :)

477334785__test2.zip


Дата: Янв 8, 2004 17:58:16

WELL12

Твой исходник ваще не правильный, а если путь проходит через Program Files ??


Дата: Янв 8, 2004 18:00:51 · Поправил: merlin

[Поправка]
Sorry Asterix. Думал это ко мне...


Дата: Янв 8, 2004 18:04:19

Asterix
Этот код я позаимствовал у KetilO, хотя вполне возможно, что и он его откуда-то сплагиатил, например: из MSDN :-)


Дата: Янв 8, 2004 19:14:57

Мне надо сформировать строку для запуска проги с параметрами

.data
cons db "proga.exe",0
run db 1024 dup(0)
cmd_args dd 0
StartupInfo STARTUPINFO <>
ProcessInfo PROCESS_INFORMATION <>
.CODE
start:
invoke GetCommandLine
invoke PathGetArgs,eax
mov cmd_args,eax

invoke MessageBox,0,cmd_args,cmd_args,MB_OK

invoke lstrcat, addr run, addr cons
invoke lstrcat, addr run, addr cmd_args

invoke MessageBox,0,addr run,addr run,MB_OK

Почему так не получается ?


Дата: Янв 8, 2004 19:16:52
Правка

Кхм, кхм…
Простите, что вмешиваюсь, а какая задача требуется?
Пропарсить параметры коммандной строки или получить имена файлов, которые передаются ей?


Дата: Янв 8, 2004 19:22:12

IceStudent
Это в принципе лоадер. Он принимает параметры с командной строки, а потом грузит нужную прогу с такими же параметрами. Вот.


Дата: Янв 8, 2004 19:25:15 · Поправил: Toxic

Quantum
Да чего там сплагиатил. Просто он использовал несколько полезных API. Я сам частенько использую подобные приемы.


Дата: Янв 8, 2004 19:25:51

WELL12

Напиши с какими параметрами, например /nologo или /00401000


Дата: Янв 8, 2004 19:30:04

Asterix
Строковые параметры типа /start или /reg


Дата: Янв 8, 2004 19:32:24

Asterix
Вообще при запуске параметр только один

. 1 . 2 . 3 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.115