Win32API- GetForegroundWindows()

D

Diego Guti

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 :)
 
D

David Mullet

Diego said:
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
 
D

Diego Guti

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??
 
D

David Mullet

Diego said:
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
 
D

Diego Guti

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
 
M

Mario Ruiz

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 Mullet wrote in post #763686:
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,995
Messages
2,570,236
Members
46,822
Latest member
israfaceZa

Latest Threads

Top