ogeidix
December 26, 2008, 10:07pm
#1
Hi!
I’m playing with the API of Windows, but I haven’t found much
information about that (almost all is for VB -.- )
So I’d like to know where can I search for it.
Im trying to get de windows where the user is working, i have:
a = Win32API.new(‘user32’, ‘GetForegroundWindow’, [], ‘P’)
a.Call()
But it doesnt work… The GetForegroundWindow function doesnt need
params and it returns a handle of the windows, so i think it should
run…
Thanks.
P.S.: Sorry, English is not my first language
ogeidix
December 27, 2008, 12:36am
#2
Diego G. wrote:
Hi!
I’m playing with the API of Windows, but I haven’t found much
information about that (almost all is for VB -.- )
So I’d like to know where can I search for it.
Im trying to get de windows where the user is working, i have:
a = Win32API.new(‘user32’, ‘GetForegroundWindow’, [], ‘P’)
a.Call()
But it doesnt work… The GetForegroundWindow function doesnt need
params and it returns a handle of the windows, so i think it should
run…
Thanks.
P.S.: Sorry, English is not my first language
Try changing your last parameter from ‘P’ to ‘N’:
a = Win32API.new(‘user32’, ‘GetForegroundWindow’, [], ‘N’)
window = a.Call()
David
ogeidix
December 27, 2008, 11:10am
#3
Try changing your last parameter from ‘P’ to ‘N’:
a = Win32API.new(‘user32’, ‘GetForegroundWindow’, [], ‘N’)
window = a.Call()
David
Thanks, now it’s running :).
Just one more question. Now i got the handle of the window, any chance
to get the name of the window??
ogeidix
December 27, 2008, 6:38pm
#4
Diego G. wrote:
Try changing your last parameter from ‘P’ to ‘N’:
a = Win32API.new(‘user32’, ‘GetForegroundWindow’, [], ‘N’)
window = a.Call()
David
Thanks, now it’s running :).
Just one more question. Now i got the handle of the window, any chance
to get the name of the window??
You can use the GetWindowText API call. Pass it (1) your window handle,
(2) a string buffer into which the text is to be copied, and (3) the
maximum number of characters to copy to the buffer:
require ‘Win32API’
getForegroundWindow = Win32API.new(‘user32’, ‘GetForegroundWindow’, [],
‘L’)
getWindowText = Win32API.new(‘user32’, ‘GetWindowText’, [‘L’, ‘P’, ‘I’],
‘I’)
window_handle = getForegroundWindow.Call()
title_buffer = ’ ’ * 256
getWindowText.Call(window_handle, title_buffer, 256)
puts(title_buffer)
David
ogeidix
December 27, 2008, 7:08pm
#5
You can use the GetWindowText API call. Pass it (1) your window handle,
(2) a string buffer into which the text is to be copied, and (3) the
maximum number of characters to copy to the buffer:
require ‘Win32API’
getForegroundWindow = Win32API.new(‘user32’, ‘GetForegroundWindow’, [],
‘L’)
getWindowText = Win32API.new(‘user32’, ‘GetWindowText’, [‘L’, ‘P’, ‘I’],
‘I’)
window_handle = getForegroundWindow.Call()
title_buffer = ’ ’ * 256
getWindowText.Call(window_handle, title_buffer, 256)
puts(title_buffer)
David
Ok. Thank you very much !! Now It’s perfect.
Regards
Thanks a lot for the code
do you how is possible to get the text content of the browser when
displaying a flash app?
David M. wrote in post #763686:
Diego G. wrote:
Try changing your last parameter from ‘P’ to ‘N’:
recommend ffi, too, for windows api stuff:
https://github.com/ffi/ffi/wiki/Windows-Examples
win32api scares me.
On Mar 23, 8:32am, Roger P. [email protected] wrote:
recommend ffi, too, for windows api stuff:
https://github.com/ffi/ffi/wiki/Windows-Examples
win32api scares me.
Yeah, well, FFI scares me. It’s a PITA declaring structs, and it won’t
build with MSVC++.
Dan