Форум: "Начинающим";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];
ВнизEnumThreadWindows Найти похожие ветки
← →
Pasha L © (2005-11-02 19:49) [0]Простите за наглость. Кто-нибудь. Объясните на примере, как пользоваться EnumThreadWindows
← →
Fay © (2005-11-02 20:17) [1]BOOL CALLBACK EnumProc(
HWND hwnd,
LPARAM lParam)
{
// Send a WM_CLOSE to destroy the window, because DestroyWindow
// does not work across threads.
SendMessage(hwnd, WM_CLOSE, 0, 0);
return TRUE;
}
BOOL ConsoleCtrlHandler(
DWORD dwCtrlType)
{
if (dwCtrlType == CTRL_LOGOFF_EVENT && dwGuiThreadId != 0)
{
SetThreadDesktop(GetThreadDesktop(dwGuiThreadId));
EnumThreadWindows(dwGuiThreadId, EnumProc, 0);
}
return FALSE;
}
← →
Pasha L © (2005-11-02 23:05) [2]И что это вы мне написали
← →
Zeqfreed © (2005-11-02 23:57) [3]Pasha L © (02.11.05 23:05) [2]
> И что это вы мне написали
Вам написали пример использования, насколько я понимаю..function EnumProc(wnd : HWND; lParam : Cardinal) : Boolean;
begin
Form1.Memo1.Lines.Add(IntToStr(wnd));
Result := true;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Clear;
EnumThreadWindows(GetWindowThreadProcessId(HWND_DESKTOP), @EnumProc, 0);
end;
Вот мой вариант :)
← →
Pasha L © (2005-11-03 00:18) [4]Спасибо большое
← →
GuAV © (2005-11-03 00:19) [5]Zeqfreed © (02.11.05 23:57) [3]
> Вот мой вариант :)
Он, кстати, с ошибками.
← →
Pasha L © (2005-11-03 00:42) [6]в чем они заключаются?
← →
GuAV © (2005-11-03 10:35) [7]Во первых,
> BOOL CALLBACK EnumProc(
Т.е. нужно объявить эту функцию с директивой stdcall
Во вторых,
> : Boolean;
Это неверно, т.к. в оригинальном объявлении использован тип BOOL, имеющий размер 4 байта, а у Boolean - 1 байт. Ошибка скорее может проявится при возвращении значения False и то не всегда, но тем не мениее это ошибка.
При точном переводе объявление выглядит так:
function EnumProc(hwnd: HWND; lParam: LPARAM): BOOL; stdcall;
Однако я бы объявлял так:
function EnumProc(wnd: HWND; Param: LPARAM): DWORD; stdcall;
и возвращал бы 1 заместо true, 0 заместо false.
Это связано с тем, что в некоторых callback функциях идёт проверка на равенство сишному TRUE, которое равно 1, а не на любое ненулевое значение.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.035 c