Jak pobrać uchwyt okna nad którym znajduje się kursor
Adam Boduch
Aby pobrać uchwyt okna nad którym znajduje się kursor, wystarczy skorzystać z funkcji API - WindowFromPoint oraz GetCursorPos. Oto kod dla Win32 oraz dla .NET:
// .NET
uses Windows, System.Text; // <-- potrzebny moduł
var
P : TPoint;
H : THandle;
Buffer : StringBuilder;
begin
{ utworzenie klasy }
Buffer := StringBuilder.Create(128);
{ pobranie pozycji kursora }
GetCursorPos(P);
{ pobranie uchwytu okna }
H := WindowFromPoint(P);
{ dla przykładu - pobranie tekstu okna nad którym znajduje się kursor }
GetWindowText(H, Buffer, Buffer.Capacity);
{ Buffer.ToString zawiera tekst okna }
Buffer.Free;
end;
// Win32
uses Windows;
var
P : TPoint;
H : THandle;
Buffer : array[1..128] of Char;
begin
{ pobranie pozycji kursora }
GetCursorPos(P);
{ pobranie uchwytu okna }
H := WindowFromPoint(P);
{ dla przykładu - pobranie tekstu okna nad którym znajduje się kursor }
GetWindowText(H, Buffer, SizeOf(Buffer));
{ Buffer zawiera tekst okna }
end;
Można także skożystać z kodu "Jak wyciągnąć hasło ukryte pod gwiazdkami?" ze stronki http://www.tomex.kom.pl/index.php?page=programowanie&program=delphi&faq=26
Adam: prawda, że zamierzasz napisać książkę o .NET w Delphi? :>
Wersja Dla BCB :
np:
Dodajemy Komponent TTimer i :
Unit1.h :
public: // User declarations
//TPoint P;
tagPOINT P;
THandle H;
char Buffer[127];
Unit1.cpp :
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
GetCursorPos(&P);
int a = GetWindowText(WindowFromPoint(P), Buffer, sizeof(Buffer));
Caption = IntToStr(a);
}
Działa dobrze ;-)
hehe :) Wez sie nie odzywaj jak, nie wiesz o czy mowisz... :) Łatwo powiedziec jest do dupy, jak nie wiesz co to jest dokladnie... :-/
nie ma jak to Win32 ,NET jest do d**y nawet nie ma tam [delphi]showmessage('')[/delphi]