:: Не фоксом единым
Найти десктопы
PaulWist
Автор

Сообщений: 14601
Дата регистрации: 01.04.2004
Задача.

Надо пройти по всем десктопам существующих в данный момент на компе. Нашел примерно следующую последовательность действий

OpenInputDesktop - EnumDesktopWindows - CloseDesktop

DECLARE OpenInputDesktop in user32 ;
Integer dwFlags, ;
fInherit, ;
integer dwDesiredAccess
DECLARE EnumDesktopWindows in user32 ;
integer hDesktop, ;
integer lpfn, ;
integer lParam
DECLARE CloseDesktop IN user32 ;
integer hDesktop


НО, спотыкаюсь OpenInputDesktop, ф-ия возвращат .t. , хотя должна вернуть

Цитата:
Return Value
If the function succeeds, the return value is a handle to the desktop that receives user input. When you are finished using the handle, call the CloseDesktop function to close it.
If the function fails, the return value is NULL. To get extended error information, call GetLastError

dwDesiredAccess = 0 && 0x0040L
hndDesckTop = 0
hndDesckTop = OpenInputDesktop(0x0001, .t., dwDesiredAccess)
?hndDesckTop
?CloseDesktop(hndDesckTop)

и кстати кто такой 0x0040L


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Найти десктопы
PaulWist
Автор

Сообщений: 14601
Дата регистрации: 01.04.2004
Ну, дятел

DECLARE INTEGER OpenInputDesktop in user32 ;
Integer dwFlags, ;
fInherit, ;
integer dwDesiredAccess

ну это по первому вопросу, а второй пока открыт.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Найти десктопы
Влад Колосов

Сообщений: 22664
Откуда: Ростов-на-Дону
Дата регистрации: 05.05.2005
Цитата:
кстати кто такой 0x0040L
Скорее всего тип "Long".


------------------
Совершенство - это не тогда, когда нельзя
ничего прибавить, а тогда, когда нечего убавить.
Ratings: 0 negative/0 positive
Re: Найти десктопы
PaulWist
Автор

Сообщений: 14601
Дата регистрации: 01.04.2004
Это понятно, как его фоксу скормить?


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Найти десктопы
Влад Колосов

Сообщений: 22664
Откуда: Ростов-на-Дону
Дата регистрации: 05.05.2005
Не знаю По идее, в фоксе int 4-х байтный, т.е. и есть long. В других языках int может быть 2-байтным.
Полагаю, сначал надо получить перечисление (список) десктопов, а потом из него подставлять значения в OpenInputDesktop.


------------------
Совершенство - это не тогда, когда нельзя
ничего прибавить, а тогда, когда нечего убавить.
Ratings: 0 negative/0 positive
Re: Найти десктопы
ssa

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
Какого типа параметр fInherit в определении первой функции?

Еще меня смущает вот этот вызов
hndDesckTop = OpenInputDesktop(0x0001, .t., dwDesiredAccess)
Параметр неизвестного типа и ему еще присваивают значение, тип которого в API вроде как отсутствует напрочь.


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Найти десктопы
PaulWist
Автор

Сообщений: 14601
Дата регистрации: 01.04.2004
Вот

Цитата:
OpenInputDesktop
Opens the desktop that receives user input.

HDESK WINAPI OpenInputDesktop(
DWORD dwFlags,
BOOL fInherit,
ACCESS_MASK dwDesiredAccess
);

Parameters
dwFlags
[in] This parameter can be zero or the following value.Value Meaning
DF_ALLOWOTHERACCOUNTHOOK
0x0001 Allows processes running in other accounts on the desktop to set hooks in this process.

fInherit
[in] If this value is TRUE, processes created by this process will inherit the handle. Otherwise, the processes do not inherit this handle.


dwDesiredAccess
[in] Access to the desktop. For a list of access rights, see Desktop Security and Access Rights.

вроде как не .t. не противиречит описанию.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)




Исправлено 1 раз(а). Последнее : PaulWist, 23.04.07 17:46
Ratings: 0 negative/0 positive
Re: Найти десктопы
ssa

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
Паш, ты думаешь фоксовый Logical и API-шный BOOL - одно и тоже?
Сейчас под рукой нет виндушных H-файлов, в них где-то и определяется этот тип, посмотри. Это или True=0 или,наоборот, не 0.


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Найти десктопы
PaulWist
Автор

Сообщений: 14601
Дата регистрации: 01.04.2004
Сергей, ну да уже проверил либо 0 либо 1.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 5 (Гостей: 5)

© 2000-2024 Fox Club 
Яндекс.Метрика