Page 5 of 6

Re: Advanced Batch features via auxiliary .exe programs

Posted: 09 Feb 2017 23:32
by Sounak@9434
@aGerman: Cool Tool! :D
Thanks Steffen.
Just a few things:-
1) Does conin stands for console input ? I know it's not a serious question, just asking though.
2) Is it possible to have a timer, so that if no input is given within a specified amount of time conin.exe will close itself? I'm too nit picky, am I?
3)
aGerman wrote:Also I used the technique that I learned from carlos in order to skip the overhead caused by the main function in C.

Is the technique available for public? :mrgreen:

Re: Advanced Batch features via auxiliary .exe programs

Posted: 10 Feb 2017 07:00
by aGerman
Sounak@9434 wrote:1) Does conin stands for console input ?

Yes. (Exactly as noted in the batch code.)

Sounak@9434 wrote:3) Is the technique available for public?

Everything noted in the source code. It's GCC specific. The underlying __start routine will be overridden.

Sounak@9434 wrote:2) Is it possible to have a timer, so that if no input is given within a specified amount of time conin.exe will close itself?

Sure.

Code: Select all

@echo off &setlocal EnableDelayedExpansion

:: conin.exe - Read Console Input
:: timeout: %errorlevel% = 0
:: type:    %errorlevel%>>29 (0=keyboard, 1=left click, 2=right click, 3=mouse move)
:: key:     %errorlevel% (either character code or (for extended keys) 256 + key code)
:: mouse:   row = (%errorlevel%>>14)&0x3FFF, column = %errorlevel%&0x3FFF

:: the utility times out after the passed number of milliseconds, it will wait infinite if you don't pass an argument

for /l %%i in () do (
  conin.exe 1000
  set /a "key=!errorlevel!, type=key>>29, y=(key>>14)&0x3FFF, x=key&0x3FFF"

  if !key! == 0 (
    echo timeout
  ) else if !type!==1 (
    echo mouse left  x=!x!, y=!y!
  ) else if !type!==2 (
    echo mouse right x=!x!, y=!y!
  ) else if !type!==3 (
    echo mouse move  x=!x!, y=!y!
  ) else (
    echo keyboard !key!
  )
)


Steffen

Re: Advanced Batch features via auxiliary .exe programs

Posted: 10 Feb 2017 10:02
by Sounak@9434
@aGerman: Thank you very much steffen. The latest version works beautifully. Thanks again.
aGerman wrote:
Sounak@9434 wrote:3) Is the technique available for public?

Everything noted in the source code. It's GCC specific. The underlying __start routine will be overridden.


Whoa! :shock: Never realized that was the trick. I have to try it out next time for sure. :)

Re: Advanced Batch features via auxiliary .exe programs

Posted: 10 Feb 2017 14:52
by aGerman
I had to update the tool because the console mode was not reset if the timeout elapsed.
But now I don't want to occupy Antonio's thread any longer... :wink:

Steffen

Re: Advanced Batch features via auxiliary .exe programs

Posted: 10 Feb 2017 23:58
by Sounak@9434
aGerman wrote:But now I don't want to occupy Antonio's thread any longer... :wink:


:mrgreen:

That reminds me my initial request was for Antonio to update his getmouse.exe . Maybe he doesn't want to add keyboard support to a tool named getmouse.exe :D

Thanks though you all. You people are a great help.

Re: Advanced Batch features via auxiliary .exe programs

Posted: 03 Jan 2018 01:10
by thefeduke
I ran into a limitation in the use of window.exe with no operands to get the TITLE of the current window. For some time, I have been handling some cases like this:

Code: Select all

:: . . .
Rem Window.exe returns blanks when Title + 3 + Command exceeds 60
    If NOT Defined Ttl Set "WinTtl=Undetermined - error, blank or too long to handle."
(EndLOCAL & If /I "%~1" NEQ "" (Set "%1=%WinTtl%") Else Echo.%WinTtl%)
:: . . .
Like most of your auxiliary .exe programs, it runs without complaint. The lack of output is the only indication. Would this be a firm limitation of the Windows interfaces that you use to get the information?

John A.

Re: Advanced Batch features via auxiliary .exe programs

Posted: 06 Feb 2019 23:47
by cha_lan_cito
Hello,
Uups, I was trying to check if your StdDate.exe pgm could help me, but my Windows 10 - 64 bits OS says that "16 bit pgms are not compatible"
May be you may provide me with a pgm version for at least 32 bits (or better 64 bits)?
Best regards.
Juan Manuel Carrillo Campos

Re: Advanced Batch features via auxiliary .exe programs

Posted: 07 Feb 2019 13:55
by aGerman
How did you get the tool? In the initial post you will find a download link for all tools compressed in a ZIP file. I can ensure you that the StdDate.exe in this archive is a 32Bit executable and it's running without any problems on Win10 x64, too.

Steffen

Re: Advanced Batch features via auxiliary .exe programs

Posted: 09 Aug 2020 09:20
by nsky
Hi all!
I tested the CursorPos program and suddenly came across a question to which I have not yet found an answer.
The problem is as follows.
CursorPos description wrote:
Get or set cursor position.

CursorPos [[±]col [±]row]

If no parameter is given, return current cursor position as col+(row<<16) in ERRORLEVEL.

If any coordinate have sign, the position given is relative to the current one.

If cursor is moved, the Ascii code of the character at new position is returned in ERRORLEVEL.
Me debug printing did not help me answer the question - how to get Ascii code of the character at new cursor position.
My debug script is inherently very simple as it consists of repeating blocks.

Code: Select all

:: chkCursorPos.cmd
@echo off
setlocal enableDelayedExpansion
pushd %~dp0

cls
echo.A
echo. B
echo.  C
echo.   D
<nul set /p =qwErty

CursorPos.exe
::GetCoords Cols= Lines=
set /a "$X=%ErrorLevel%&0xFFFF, $Y=(%ErrorLevel%>>16)&0xFFFF, $E=%ErrorLevel%"
>%~nx0.log (
	echo.step0: backup current cursor pos?
	echo.CursorPos.exe
	echo.current pos:
	set $
	echo.::::::::::::::::::::
)
>nul pause

CursorPos.exe 0 0
set /a "_X=%ErrorLevel%&0xFFFF, _Y=(%ErrorLevel%>>16)&0xFFFF, _E=%ErrorLevel%"
>>%~nx0.log (
	echo.step1: move new pos 0 0    - simbol "A"
	echo.CursorPos.exe 0 0
	echo.
	set _
	echo.====================
)
>nul pause

CursorPos.exe +1 +1
set /a "_X=%ErrorLevel%&0xFFFF, _Y=(%ErrorLevel%>>16)&0xFFFF, _E=%ErrorLevel%"
>>%~nx0.log (
	echo.step2: move new pos +1 +1 - simbol "B"
	echo.3: CursorPos.exe +1 +1
	set _
	echo.-------------------
)
>nul pause

CursorPos.exe 1 1
set /a "_X=%ErrorLevel%&0xFFFF, _Y=(%ErrorLevel%>>16)&0xFFFF, _E=%ErrorLevel%"
>>%~nx0.log (
	echo.step2': move pos 1 1      - simbol "B"
	echo.3: CursorPos.exe 1 1
	set _
	echo.:::::::::::::::::::
)
>nul pause

CursorPos.exe +1 +1
set /a "_X=%ErrorLevel%&0xFFFF, _Y=(%ErrorLevel%>>16)&0xFFFF, _E=%ErrorLevel%"
>>%~nx0.log (
	echo.step3: move new pos +1 +1  - simbol "C"
	echo.CursorPos.exe +1 +1
	set _
	echo.-------------------
)
>nul pause

CursorPos.exe 1 1
set /a "_X=%ErrorLevel%&0xFFFF, _Y=(%ErrorLevel%>>16)&0xFFFF, _E=%ErrorLevel%"
>>%~nx0.log (
	echo.step3': move pos 1 1       - simbol "B"
	echo.3: CursorPos.exe 1 1
	set _
	echo.:::::::::::::::::::
)
>nul pause

CursorPos.exe +2 +2
set /a "_X=%ErrorLevel%&0xFFFF, _Y=(%ErrorLevel%>>16)&0xFFFF, _E=%ErrorLevel%"
>>%~nx0.log (
	echo.step4: move new pos +2 +2  - simbol "D"
	echo.CursorPos.exe +2 +2
	set _
	echo.-------------------
)
>nul pause

CursorPos.exe -1 +1
set /a "_X=%ErrorLevel%&0xFFFF, _Y=(%ErrorLevel%>>16)&0xFFFF, _E=%ErrorLevel%"
>>%~nx0.log (
	echo.step5: move new pos -1 +1  - simbol "E"
	echo.CursorPos.exe -1 +1
	set _
	echo.-------------------
)
>nul pause

CursorPos.exe %$E%
>>%~nx0.log (
	echo.step6: restore pos 
	echo.CursorPos.exe %$E%
	set $
	echo.====================
)
>nul pause
exit /b
Debug txt-file:

Code: Select all

step0: backup current cursor pos?
CursorPos.exe
current pos:
$E=262150
$X=6
$Y=4
::::::::::::::::::::
step1: move new pos 0 0    - simbol "A"
CursorPos.exe 0 0

_E=262150
_X=6
_Y=4
====================
step2: move new pos +1 +1 - simbol "B"
3: CursorPos.exe +1 +1
_E=0
_X=0
_Y=0
-------------------
step2': move pos 1 1      - simbol "B"
3: CursorPos.exe 1 1
_E=65537
_X=1
_Y=1
:::::::::::::::::::
step3: move new pos +1 +1  - simbol "C"
CursorPos.exe +1 +1
_E=65537
_X=1
_Y=1
-------------------
step3': move pos 1 1       - simbol "B"
3: CursorPos.exe 1 1
_E=131074
_X=2
_Y=2
:::::::::::::::::::
step4: move new pos +2 +2  - simbol "D"
CursorPos.exe +2 +2
_E=65537
_X=1
_Y=1
-------------------
step5: move new pos -1 +1  - simbol "E"
CursorPos.exe -1 +1
_E=196611
_X=3
_Y=3
-------------------
step6: restore pos 
CursorPos.exe 262150
$E=262150
$X=6
$Y=4
====================
ErrorLevel values are 5-6-digit numbers in the debug log.
It does not seem that they, in addition to the coordinates, contain an Ascii code character.

Has anyone got the Ascii character codes via CursorPos? Give an example.

Re: Advanced Batch features via auxiliary .exe programs

Posted: 10 Aug 2020 10:58
by aGerman
If I run your script the log file contains

Code: Select all

step0: backup current cursor pos?
CursorPos.exe
current pos:
$E=262150
$X=6
$Y=4
::::::::::::::::::::
step1: move new pos 0 0    - simbol "A"
CursorPos.exe 0 0

_E=65
_X=65
_Y=0
====================
step2: move new pos +1 +1 - simbol "B"
3: CursorPos.exe +1 +1
_E=66
_X=66
_Y=0
-------------------
step2': move pos 1 1      - simbol "B"
3: CursorPos.exe 1 1
_E=66
_X=66
_Y=0
:::::::::::::::::::
step3: move new pos +1 +1  - simbol "C"
CursorPos.exe +1 +1
_E=67
_X=67
_Y=0
-------------------
step3': move pos 1 1       - simbol "B"
3: CursorPos.exe 1 1
_E=66
_X=66
_Y=0
:::::::::::::::::::
step4: move new pos +2 +2  - simbol "D"
CursorPos.exe +2 +2
_E=68
_X=68
_Y=0
-------------------
step5: move new pos -1 +1  - simbol "E"
CursorPos.exe -1 +1
_E=69
_X=69
_Y=0
-------------------
step6: restore pos 
CursorPos.exe 262150
$E=262150
$X=6
$Y=4
====================
This seems to be the expected behavior. So, unfortunately I can't reproduce your issues.

Steffen

Re: Advanced Batch features via auxiliary .exe programs

Posted: 10 Aug 2020 11:36
by Aacini
It seems there are two versions of CursorPos.exe! I found this new Help file:

Code: Select all

NEW: CursorPos version 1.2

This version includes two modifications:
- When the cursor is moved, the value returned is previous cursor position.
- If coordinates have this form: -cols +0 and the resulting column is negative,
  the position is adjusted to the end of previous line.
It seems that in the last .zip file I posted the new version of the code, but forgot to update the Help text.

I'll try to post here an old, version 1, of CursorPos.exe

Antonio

Re: Advanced Batch features via auxiliary .exe programs

Posted: 10 Aug 2020 12:42
by aGerman
Oh. In this case ignore my previous comment. The tool I tested with was from spring 2016 :lol:

Steffen

Re: Advanced Batch features via auxiliary .exe programs

Posted: 10 Aug 2020 13:08
by Aacini
Thanks Steffen. Could you post it here in a .zip file?

Antonio

Re: Advanced Batch features via auxiliary .exe programs

Posted: 10 Aug 2020 13:37
by aGerman
Sure I can :)

Steffen

Re: Advanced Batch features via auxiliary .exe programs

Posted: 12 Aug 2020 04:04
by nsky
Well!
The new version from 2016.03.16 works as stated.
It remains to update the link to download the entire package from the first post of the topic (downloaded 2214 times).
Thanks!