Jump to content

Recommended Posts

Posted (edited)

Hello,

I'm again programing with ASM in AutoIt. Now I've problem with DOS functions.

I want to create the easiest function - console output.

My code:

#include <Memory.au3>
 
Global Const $pRemoteCode = _MemVirtualAlloc(0, 512, $MEM_COMMIT, $PAGE_EXECUTE_READWRITE)
Global Const $tCodeBuffer = DllStructCreate("byte[512]", $pRemoteCode)
 
$Text = "Hello"
$tString = DllStructCreate("char[" & StringLen($Text) + 1 & "]")
$pString = DllStructGetPtr($tString)
DllStructSetData($tCodeBuffer, 1, _
  "0x" & _
  "66BA" & Hex(Binary($pString))  ; mov dx, string ptr
  "B409" & _       ; mov ah, 9
  "CD21" & _       ;int 0x21
  "C3" _           ; ret
  )
$Ret = DllCall("user32.dll", "int", "CallWindowProcW", _
  "ptr", $pRemoteCode, _
  "int", 0, _
  "int", 0, _
  "int", 0, _
  "int", 0)
MsgBox(32, "", $Ret[0])
Edited by Ramzes

Sorry for my bad English but nobody is perfect. [font=arial, helvetica, sans-serif]Ramzes[/font]

Posted (edited)

Last I checked, AutoIt is for Windows. To run 'int 21h' you'd need to be running in DOS or a DOS emulator, and the code would need to be in a compiled 16-bit program (or 32-bit with DOS/4gw extensions).

*edit: confusing sentence

Edited by Ascend4nt
Posted

@Ascend4nt

You wrote 'confusing sentence' so I think it's possible, yes? If I'm wrong - correct me.

Sorry for my bad English but nobody is perfect. [font=arial, helvetica, sans-serif]Ramzes[/font]

Posted

'Confusing sentence' was the reason for the edit. It's not possible. You are probably confusing Windows Console applications with DOS programs.

Posted

Thanks for reply.

So commands like copy, run etc. aren't working too?

I don't understand how AutoIt uses standard functions like FileRead, FileCopy or Run.

Sorry for my bad English but nobody is perfect. [font=arial, helvetica, sans-serif]Ramzes[/font]

Posted

DOS-style commands work in the Console, but they are running under Windows, the same as AutoIt. With a compiled 16-bit DOS program, it can run under a DOS-emulator or VM, or even under NTVDM for that matter (which only operates under 32-bit O/S's). But again, for all these environments, the code has to be executed from a compiled DOS program.

Posted

Thank you again. Now I understand everything.

Topic to close.

Sorry for my bad English but nobody is perfect. [font=arial, helvetica, sans-serif]Ramzes[/font]

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...