Что-то непонятно с CommandLineToArgvW Возвращает две перменные, первая кол-во аргументов. Второй массив из аргументов. Вот у меня вопрос: "как из него вытащить строковую перменную"? Что делать, думаю прочитав исходник станет понятно чего хочу добиться. Сам я начинающий прошу сильно не пинать. Вотъ код: Код (Text): include \masm32\include\user32.inc include \masm32\include\shell32.inc includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib includelib \masm32\lib\shell32.lib .data MsgCaption db 'gamma',0 MsgBoxTxtErr db 'Error',0 .data? nArgs dd ? ; кол-во аргументов szArglist dd ? ; масив аргументов commandStr LPWSTR ? .code _st: invoke GetCommandLineW invoke CommandLineToArgvW,eax, offset nArgs mov [szArglist],eax cmp szArglist,0 jne _next invoke MessageBox, NULL,addr MsgBoxTxtErr, addr MsgCaption, MB_OK _exit: invoke ExitProcess,0 _next: mov ebp,0 _test: cmp ebp,nArgs jne _message_arg jmp _exit _message_arg: add ebp,1 invoke MessageBox,0,addr [szArglist+ebp],addr MsgCaption, MB_OK jmp _test end _st
Что-то типа. mov esi, pszArglist mov ebx, i mov eax, [esi+ebx*4] ; В eax - указатель на строку с i-м аргументом.
Сейчас попробую. Но строчка mov eax,[esi+ebx*4] немного смущает. Почему *4? Кстати а можно? mov MsgTxt, [esi+ebx*4]? Или Мsg будет отображать адрес, вместо содержимого?
jershell 4 - размер элементов (Scale Factor). Может быть 1,2,4 или 8. В интеловских мануалах 3-30 Vol. 1.
долго ломал себе голову потом все дошло. Помимо указателя, необходимо вызвать функцию MessageBoxW, а я вызывал энси вариант. Вопрос, т.к W вариант переменную MsgBoxCaption отображает в виде квадратиков, то что можно сделать, чтоб был юникод вариант, что-то с такой мелочью и не понятно.(