Witam, bawię się ostatnio operacjami na FindWindow. Napotkałem problem - obsługa 2 okien o tej samej nazwie. Chciałbym, żeby program mógł obsługiwać 2 odpalone programy o tej samej nazwie (Tu Word). Jak mam kombinować?
0
0
Pogoogluj za przykładami funkcji EnumWindows. Następnie w procedurze obsługi EnumWindows pobieraj tytuł okna i sprawdzaj czy jest w nim słowo na ktorym Tobie zależy. Znalezione uchwyty możesz przechować w tablicy i do jej elemntów później się odwoływać. Jednak jeżeli chodzi o Word to można go przecież obslugiwać jak nie przez DDE to na pewno przez OLE i zmienne typu Variant. Jednak w tym drugim Ci nie pomoge, bo komunikowałem się tak jedynie z OO Calciem w jednej swojej aplikacji, ponieważ używam OO, a nie Office'a. Jednak w google powinno dać się znaleźć sporo przykładów jak się komunikowac z Officem.
0
olesio nie szalej z tym kombajnem EnumWindows do takiego czegoś wystarczy:
const
TITLE = 'Kalkulator';
var
hWin: HWND;
buf: array[0..255] of Char;
begin
hWin:= FindWindow(nil, TITLE);
while (hWin <> 0) do
begin
GetWindowText(hWin, buf, SizeOf(buf));
if (buf = TITLE) then
Memo1.Lines.Add(IntToHex(hWin, 8)); //to tylko przyklad ale musisz jakos przechowywac uchwyty
hWin:= GetNextWindow(hWin, GW_HWNDNEXT);
end;
end;