meh Here is an example of how to use TWAPI to 'draw' letters in an open MS paint window:
## Draws any text passed to the 'type' procedure in an active
## untitled MS Paint window.
## BUG: First line of text seems to call a newline one character
## before the actual line end.
## Maximum columns (characters across)
set max_cols 20
## Maximum rows (lines of characters)
set max_rows 8
puts "MAX_X_LET\=$max_cols"
puts "MAX_Y_LET\=$max_rows"
#####
puts "init"
package require twapi
puts "findwin"
set win [lindex [split [twapi::find_windows -text "untitled - Paint"]] 0]
puts "targetdraw"
set origin_x [lindex [split [twapi::get_window_coordinates $win]] 0]
set origin_y [lindex [split [twapi::get_window_coordinates $win]] 1]
twapi::move_mouse [expr $origin_x+70] [expr $origin_y+50]
puts "proceed"
set lines 0
set max_rows [expr $max_rows-1]
proc select_curvetool {} {
global win
puts "select_curvetool"
set origin_x [lindex [split [twapi::get_window_coordinates $win]] 0]
set origin_y [lindex [split [twapi::get_window_coordinates $win]] 1]
twapi::move_mouse [expr $origin_x+45] [expr $origin_y+175]
twapi::click_mouse_button left
twapi::move_mouse [expr $origin_x+30] [expr $origin_y+305]
twapi::click_mouse_button left
}
proc select_brushtool {} {
global win
puts "select_brushtool"
set origin_x [lindex [split [twapi::get_window_coordinates $win]] 0]
set origin_y [lindex [split [twapi::get_window_coordinates $win]] 1]
twapi::move_mouse [expr $origin_x+45] [expr $origin_y+135]
twapi::click_mouse_button left
twapi::move_mouse [expr $origin_x+25] [expr $origin_y+260]
twapi::click_mouse_button left
}
proc select_circletool {} {
global win
puts "select_circletool"
set origin_x [lindex [split [twapi::get_window_coordinates $win]] 0]
set origin_y [lindex [split [twapi::get_window_coordinates $win]] 1]
twapi::move_mouse [expr $origin_x+20] [expr $origin_y+230]
twapi::click_mouse_button left
twapi::move_mouse [expr $origin_x+20] [expr $origin_y+265]
twapi::click_mouse_button left
}
proc reset_curvetool {} {
puts "reset_curvetool"
select_brushtool
select_curvetool
}
proc drawletter {letter} {
puts "drawletter $letter"
set origin_x [lindex [split [twapi::get_mouse_location]] 0]
set origin_y [lindex [split [twapi::get_mouse_location]] 1]
string tolower $letter
select_brushtool
twapi::move_mouse $origin_x $origin_y
switch $letter {
default {
return
}
a {
twapi::move_mouse $origin_x [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+20] $origin_y
after 10
twapi::move_mouse [expr $origin_x+40] [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse [expr $origin_x+10] [expr $origin_y+40]
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+30] [expr $origin_y+40]
twapi::send_input {{mouse 0 0 -lup}}
}
b {
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse $origin_x [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
twapi::send_input {{mouse 0 0 -lup}}
select_curvetool
twapi::move_mouse $origin_x $origin_y
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse $origin_x [expr $origin_y+40]
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse $origin_x [expr $origin_y+20]
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+40] [expr $origin_y+20]
twapi::send_input {{mouse 0 0 -lup}}
twapi::send_input {{mouse 0 0 -lup}}
reset_curvetool
twapi::move_mouse $origin_x [expr $origin_y+40]
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse $origin_x [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse $origin_x [expr $origin_y+60]
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+40] [expr $origin_y+60]
twapi::send_input {{mouse 0 0 -lup}}
}
c {
select_curvetool
twapi::move_mouse [expr $origin_x+20] $origin_y
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse $origin_x [expr $origin_y+20]
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse $origin_x $origin_y
twapi::click_mouse_button left
twapi::click_mouse_button left
select_brushtool
twapi::move_mouse $origin_x [expr $origin_y+20]
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse $origin_x [expr $origin_y+60]
twapi::send_input {{mouse 0 0 -lup}}
select_curvetool
twapi::move_mouse $origin_x [expr $origin_y+60]
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+20] [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse $origin_x [expr $origin_y+80]
twapi::click_mouse_button left
select_brushtool
twapi::move_mouse [expr $origin_x+20] [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+40] [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse [expr $origin_x+20] $origin_y
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+40] $origin_y
twapi::send_input {{mouse 0 0 -lup}}
}
d {
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse $origin_x [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
twapi::send_input {{mouse 0 0 -lup}}
select_curvetool
twapi::move_mouse $origin_x $origin_y
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse $origin_x [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse $origin_x [expr $origin_y+40]
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+40] [expr $origin_y+40]
twapi::send_input {{mouse 0 0 -lup}}
}
e {
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse $origin_x [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse $origin_x $origin_y
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+40] $origin_y
twapi::send_input {{mouse 0 0 -lup}}
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse $origin_x [expr $origin_y+40]
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+40] [expr $origin_y+40]
twapi::send_input {{mouse 0 0 -lup}}
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse $origin_x [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+40] [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
}
f {
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse $origin_x [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse $origin_x $origin_y
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+40] $origin_y
twapi::send_input {{mouse 0 0 -lup}}
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse $origin_x [expr $origin_y+40]
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+30] [expr $origin_y+40]
twapi::send_input {{mouse 0 0 -lup}}
}
g {
select_curvetool
twapi::move_mouse [expr $origin_x+20] $origin_y
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse $origin_x [expr $origin_y+40]
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse $origin_x $origin_y
twapi::click_mouse_button left
twapi::click_mouse_button left
reset_curvetool
twapi::move_mouse $origin_x [expr $origin_y+40]
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+40] [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse $origin_x [expr $origin_y+80]
twapi::click_mouse_button left
twapi::click_mouse_button left
reset_curvetool
twapi::move_mouse [expr $origin_x+40] [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+20] [expr $origin_y+50]
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse [expr $origin_x+40] [expr $origin_y+50]
twapi::click_mouse_button left
reset_curvetool
twapi::move_mouse [expr $origin_x+20] $origin_y
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+40] [expr $origin_y+30]
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse [expr $origin_x+40] $origin_y
twapi::click_mouse_button left
}
h {
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse $origin_x [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse [expr $origin_x+40] $origin_y
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+40] [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse $origin_x [expr $origin_y+40]
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+40] [expr $origin_y+40]
twapi::send_input {{mouse 0 0 -lup}}
}
i {
twapi::move_mouse [expr $origin_x+20] $origin_y
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+20] [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse $origin_x $origin_y
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+40] $origin_y
twapi::send_input {{mouse 0 0 -lup}}
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse $origin_x [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+40] [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
}
j {
twapi::move_mouse [expr $origin_x+20] [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse $origin_x [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse $origin_x [expr $origin_y+50]
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse $origin_x [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse [expr $origin_x+20] [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+20] $origin_y
twapi::send_input {{mouse 0 0 -lup}}
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse $origin_x $origin_y
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+40] $origin_y
twapi::send_input {{mouse 0 0 -lup}}
twapi::send_input {{mouse 0 0 -lup}}
}
k {
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse $origin_x [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse $origin_x [expr $origin_y+40]
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+40] $origin_y
twapi::send_input {{mouse 0 0 -lup}}
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse $origin_x [expr $origin_y+40]
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+40] [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
}
l {
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse $origin_x [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse $origin_x [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+40] [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
}
m {
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse $origin_x [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse $origin_x $origin_y
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+40] $origin_y
twapi::send_input {{mouse 0 0 -lup}}
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse [expr $origin_x+20] $origin_y
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+20] [expr $origin_y+40]
twapi::send_input {{mouse 0 0 -lup}}
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse [expr $origin_x+40] $origin_y
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+40] [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
twapi::send_input {{mouse 0 0 -lup}}
}
n {
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse $origin_x [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse [expr $origin_x+40] $origin_y
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+40] [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse $origin_x $origin_y
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+40] [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
}
o {
select_circletool
twapi::move_mouse [expr $origin_x+40] $origin_y
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse $origin_x [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
}
p {
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse $origin_x [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
select_curvetool
twapi::move_mouse $origin_x $origin_y
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse $origin_x [expr $origin_y+40]
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse [expr $origin_x+40] [expr $origin_y+20]
twapi::click_mouse_button left
}
q {
select_curvetool
twapi::move_mouse [expr $origin_x+20] $origin_y
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse $origin_x [expr $origin_y+40]
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse $origin_x $origin_y
twapi::click_mouse_button left
reset_curvetool
twapi::move_mouse $origin_x [expr $origin_y+40]
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+20] [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse $origin_x [expr $origin_y+80]
twapi::click_mouse_button left
reset_curvetool
twapi::move_mouse [expr $origin_x+20] [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+40] [expr $origin_y+40]
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse [expr $origin_x+40] [expr $origin_y+80]
twapi::click_mouse_button left
reset_curvetool
twapi::move_mouse [expr $origin_x+40] [expr $origin_y+40]
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+20] $origin_y
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse [expr $origin_x+40] $origin_y
twapi::click_mouse_button left
select_brushtool
twapi::move_mouse [expr $origin_x+40] [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+20] [expr $origin_y+60]
twapi::send_input {{mouse 0 0 -lup}}
}
r {
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse $origin_x [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
select_curvetool
twapi::move_mouse $origin_x $origin_y
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse $origin_x [expr $origin_y+40]
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse [expr $origin_x+40] [expr $origin_y+20]
twapi::click_mouse_button left
select_brushtool
twapi::move_mouse $origin_x [expr $origin_y+40]
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+40] [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
}
s {
select_curvetool
twapi::move_mouse [expr $origin_x+20] $origin_y
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse $origin_x [expr $origin_y+20]
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse $origin_x $origin_y
twapi::click_mouse_button left
reset_curvetool
twapi::move_mouse $origin_x [expr $origin_y+20]
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+20] [expr $origin_y+40]
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse $origin_x [expr $origin_y+40]
twapi::click_mouse_button left
reset_curvetool
twapi::move_mouse [expr $origin_x+20] [expr $origin_y+40]
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+40] [expr $origin_y+60]
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse [expr $origin_x+40] [expr $origin_y+40]
twapi::click_mouse_button left
reset_curvetool
twapi::move_mouse [expr $origin_x+40] [expr $origin_y+60]
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+20] [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse [expr $origin_x+40] [expr $origin_y+80]
twapi::click_mouse_button left
select_brushtool
twapi::move_mouse [expr $origin_x+20] [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse $origin_x [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse [expr $origin_x+20] $origin_y
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+40] $origin_y
twapi::send_input {{mouse 0 0 -lup}}
}
t {
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+40] $origin_y
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse [expr $origin_x+20] $origin_y
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+20] [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
}
u {
select_curvetool
twapi::move_mouse $origin_x [expr $origin_y+40]
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+20] [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse $origin_x [expr $origin_y+80]
twapi::click_mouse_button left
reset_curvetool
twapi::move_mouse [expr $origin_x+20] [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+40] [expr $origin_y+40]
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse [expr $origin_x+40] [expr $origin_y+80]
twapi::click_mouse_button left
select_brushtool
twapi::move_mouse $origin_x [expr $origin_y+40]
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse $origin_x $origin_y
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse [expr $origin_x+40] [expr $origin_y+40]
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+40] $origin_y
twapi::send_input {{mouse 0 0 -lup}}
twapi::send_input {{mouse 0 0 -lup}}
}
v {
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+20] [expr $origin_y+80]
twapi::move_mouse [expr $origin_x+40] $origin_y
twapi::send_input {{mouse 0 0 -lup}}
}
w {
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse $origin_x [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse $origin_x [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+40] [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse [expr $origin_x+20] [expr $origin_y+40]
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+20] [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse [expr $origin_x+40] $origin_y
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+40] [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
}
x {
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+40] [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse [expr $origin_x+40] $origin_y
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse $origin_x [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
}
y {
twapi::move_mouse [expr $origin_x+40] $origin_y
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse $origin_x [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse [expr $origin_x+20] [expr $origin_y+40]
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse $origin_x $origin_y
twapi::send_input {{mouse 0 0 -lup}}
}
z {
twapi::move_mouse $origin_x $origin_y
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+40] $origin_y
twapi::send_input {{mouse 0 0 -lup}}
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse $origin_x [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse [expr $origin_x+40] [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
twapi::move_mouse [expr $origin_x+40] $origin_y
twapi::send_input {{mouse 0 0 -ldown}}
twapi::move_mouse $origin_x [expr $origin_y+80]
twapi::send_input {{mouse 0 0 -lup}}
}
}
twapi::move_mouse [expr $origin_x+40] $origin_y
}
proc newline {} {
global win lines
puts "newline"
set cur_y [lindex [split [twapi::get_mouse_location]] 1]
set origin_x [lindex [split [twapi::get_window_coordinates $win]] 0]
twapi::move_mouse [expr $origin_x+70] [expr $cur_y+100]
incr lines
}
proc advanceletter {} {
global win
puts "advanceletter"
set cur_x [lindex [split [twapi::get_mouse_location]] 0]
set cur_y [lindex [split [twapi::get_mouse_location]] 1]
twapi::move_mouse [expr $cur_x+20] $cur_y
}
proc type {str} {
global max_cols max_rows lines win
puts "targetdraw"
twapi::set_foreground_window $win
set origin_x [lindex [split [twapi::get_window_coordinates $win]] 0]
set origin_y [lindex [split [twapi::get_window_coordinates $win]] 1]
twapi::move_mouse [expr $origin_x+70] [expr $origin_y+50]
set strlen [string length $str]
puts "recv \[$str\] \($strlen\)"
set done 0
while {$done<$strlen} {
set chklin [expr $done % $max_cols]
if {$chklin == [expr $max_cols-1]} {
if {$lines >= $max_rows} {
puts "ERR_NOSPACE_Y"
set lines 0
return
} else {
newline
}
}
drawletter [string range $str $done $done]
advanceletter
incr done
}
set lines 0
}Basically you change max_cols and max_rows depending on the size of the MS paint drawing area avaliable, and then pass the text to be drawn to the 'type' procedure. If the script runs out of space for the text, it will stop execution and print "ERR_NOSPACE_Y". Characters are drawn within a 40x80 box. The script currently only draws letters, with all unknown characters represented as spaces.
I apologise if this is not the correct place for this, but I'm sure it will prove useful or entertaining for someone :)
ro: looks very entertaining! will try it out after some rest, looks like a great laugh :)