Uchwyt okna

0

jak pobrac uchwyt aktywnego okna, chodzi o tekst w tej belce
wiem ze cos moze takiego getwindowhandle, ale nie wiem jak tego uzyc, czy ktos moglby mi podpowiedziec??

0

to jest findwindow! jak po caption szukasz to będzie findwindow(nil, 'caption') a jak po nazwie klasy to odwrotnie

0

ok, ale jak przypisac nazwe aktywnego okna do zmiennej typu np.string??

0

wybaczcie ze pisze drugi post pod rzad ale chcialbym aby ktos mi odpowiedzial, nigdzie nie moge znalezc opisu funkcji findwindow...
jak pobrac tekst aktywnego okna do string (nie chodzi o moj program)

do dolu: thx
ps. nie mam pomocy SDK, ale sobie poradzilem

0

GetActiveWindow + GetWindowText + F1 (WINDOWS SDK!!) + FAQ
Gdyby Ci zależało to byś znalazł.

0

oto wyniki mojej pracy:

procedure TForm1.Button1Click(Sender: TObject);
var
h: thandle;
pc: pchar;
begin
h:=getactivewindow;
getwindowtext(h,pc,20);
edit1.text:=strpas(pc);
end;

dziala ale tylko dla mojego programu, jak to poprawic aby pobieral uchwyt kazdego aktywnego okna, nie tylko mojego programu, potem nastapi reakcja na tresc okienka
(to nie trojan tylko program zabezpieczajacy)

0

i tu sie pojawia problem bo po nacisnieciu button1 to twoj program jest aktywny... wiec moze po prostu wstaw to do timera potem niech porownuje czy aktywne okienko jest juz na liscie i jezeli tak to nie dodaje go do listy...

0

dobra, zrobilem juz to.
a kod powinien wygladac mniej wiecej tak:

[b]function [/b]NT_InternalGetWindowText(Wnd: HWND): string;
[b]type [/b]
TInternalGetWindowText = function(Wnd: HWND; lpString: PWideChar;
nMaxCount: Integer): Integer;
stdcall;
[b]var [/b]
hUserDll: THandle;
InternalGetWindowText: TInternalGetWindowText;
lpString: array[0..MAX_PATH] of WideChar;
oemStr: PChar;
[b]begin [/b]
Result := '';
hUserDll := GetModuleHandle('user32.dll');
if (hUserDll > 0) then
[b]begin [/b]@InternalGetWindowText := GetProcAddress(hUserDll, 'InternalGetWindowText');
if Assigned(InternalGetWindowText) then
[b] begin [/b]
InternalGetWindowText(Wnd, lpString, SizeOf(lpString));
Result := string(lpString);
[b] end;
end;
end; [/b]

[b]procedure [/b]TForm1.Timer1Timer(Sender: TObject);
[b]begin[/b]
edit1.text:=NT_InternalGetWindowText(GetForegroundWindow);
[b]end;[/b]

dzieki wam ze chcieliscie pomoc...

1 użytkowników online, w tym zalogowanych: 0, gości: 1