Author Topic: Invoke external exe/command.  (Read 4907 times)

bomz

  • Member
  • **
  • Posts: 60
Re: Invoke external exe/command.
« Reply #30 on: December 16, 2022, 12:38:23 PM »
Code: [Select]
.386
.model flat, stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
 
.data
_si STARTUPINFO <0>
_pi PROCESS_INFORMATION <0>
cmd db "cmd.exe",0
EnvVar db 'test',0
EnvVarVal db 'Masm',0

.code
start:
invoke  SetEnvironmentVariable,addr EnvVar,addr EnvVarVal
mov _si.cb,size STARTUPINFO
invoke CreateProcess,0,addr cmd,0,0,TRUE,0,0,0,addr _si,addr _pi
invoke ExitProcess,NULL
end start

in child cmd console echo %test% work
parent cmd console destroy with echo %test%
something for beginning

bomz

  • Member
  • **
  • Posts: 60
Re: Invoke external exe/command.
« Reply #31 on: December 19, 2022, 01:09:49 PM »
 :rolleyes:
STARTUPINFO any influence at all. restart cmd?
Code: [Select]
setlocal EnableDelayedExpansion
endlocal
Code: [Select]
.data
_si STARTUPINFO <sizeof STARTUPINFO,0,0,offset EnvVar,550,550,300,300,0,0,0,0,0,0,0,0,0,0>
_pi PROCESS_INFORMATION <0,0,0,0>
cmd db 'cmd.exe /c color 9f & echo %test% & pause',0
EnvVar db 'test',0
EnvVarVal db 'Masm',0

.code
start:
invoke  SetEnvironmentVariable,addr EnvVar,addr EnvVarVal
invoke CreateProcess,0,addr cmd,0,0,TRUE,0,0,0,addr _si,addr _pi
invoke ExitProcess,NULL
end start
« Last Edit: December 19, 2022, 02:31:07 PM by bomz »

TimoVJL

  • Member
  • *****
  • Posts: 1318
Re: Invoke external exe/command.
« Reply #32 on: December 19, 2022, 09:07:42 PM »
It only put environment variable for running process, don't change CMD environment variables.

EDIT
https://devblogs.microsoft.com/oldnewthing/20150915-00/?p=91591
« Last Edit: December 20, 2022, 01:54:07 AM by TimoVJL »
May the source be with you

bomz

  • Member
  • **
  • Posts: 60
Re: Invoke external exe/command.
« Reply #33 on: December 20, 2022, 01:11:15 PM »
It only put environment variable for running process, don't change CMD environment variables.

EDIT
https://devblogs.microsoft.com/oldnewthing/20150915-00/?p=91591

Quote
.data
_si      STARTUPINFO <sizeof STARTUPINFO,0,0,offset EnvVar,0,0,0,0,0,0,0,0,0,0,0,0,0,0>
_pi      PROCESS_INFORMATION <0,0,0,0>
cmd      db 'cmd.exe /c color 9f & echo %test% & echo %test1% & pause',0
EnvVar      db 'test',0
EnvVarVal   db 'Masm',0

.code
start:
   invoke  SetEnvironmentVariable,addr EnvVar,addr EnvVarVal
   invoke CreateProcess,0,addr cmd,0,0,TRUE,0,0,0,addr _si,addr _pi
   invoke ExitProcess,NULL
end start

Quote
@echo off
color 0A
cd /d %~dp0
set test1=test
noname
goto :eof
« Last Edit: December 20, 2022, 06:56:31 PM by bomz »

bomz

  • Member
  • **
  • Posts: 60
Re: Invoke external exe/command.
« Reply #34 on: December 23, 2022, 11:48:00 PM »

bomz

  • Member
  • **
  • Posts: 60
Re: Invoke external exe/command.
« Reply #35 on: December 25, 2022, 05:59:58 PM »
hard to understand why batch command 'set=', work with files and can't with console input. (console pipe eng.?)
only in real hand regimes. may be 13,10 as wrong bytes... hook cmd?

anybody know which keys need to be excluded?
Code: [Select]
;invoke crt__getch
;invoke ExitProcess,0

invoke GetStdHandle,STD_INPUT_HANDLE
mov ebx,eax
@@:
invoke ReadConsoleInput,ebx,addr Input,3136,addr _rb
cmp Input.KeyEvent.bKeyDown,1
je @B
cmp Input.MouseEvent.dwEventFlags,0
jne @B
cmp Input.MouseEvent.dwControlKeyState,0
je @B
movzx eax,Input.KeyEvent.wVirtualKeyCode
cmp eax,VK_SHIFT
jb @F
cmp eax,VK_CAPITAL
jbe @B
cmp eax,VK_SCROLL
je @B
@@:
invoke ExitProcess,0
end start