Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

За 2005-05-05

Re: вывод текста на рабочий стол

Здравствуйте, Леонид.

Вы писали 5 мая 2005 г., 15:25:58:

Получи контекс рабочего стола. Если в Delphi то
cn:=GetDC(0);
Потом выводишь текст на контекст, или присваеваешь это значение канве.
Canvas.hendel:=dc; и Делай что хочешь.

   2005-05-05 21:33:12 (#362398)

Re[2]: Mathcad DLLs

Хай Victor!

Вы калякали Thursday, May 5, 2005, 2:55:38 AM:

>> Нужно узнать о входящих в эти библиотеки функциях (как, и
>> чем), а также информацию об их использовании.

> Имхо, есть такая штука как документация.

Знаю, читал такую штуку :))

> Если к каким то
> библиотекам она есть, то прежде всего надо изучать ее.

К библиотекам нет документации, только к самому Mathcad'у.

> Поэтому в любом случае надо прежде всего
> ответить на вопрос - оправдан ли такой подход.э

Ну да, оправдан, это не для распространения прога-то будет. Просто
очень нужно посчитать очень большие числа с плавающей запятой с
точностью 30 знаков. Ну и не только для этого, конечно...
Нужно по здоровенной формуле выполнять сложные расчеты, на которые
Mathcad тратит около 3 часов (AMD2500Mhz/256Mb). А потом рисовать
диаграмму........

> Но там можно видеть лишь символические имена (а откуда брать
> инфу о параметрах ?).

Вот именно что никак не узнать параметры... :(

   2005-05-05 21:20:57 (#362393)

Re[2]: Mathcad DLLs

Хай Rooslan!

Вы калякали Thursday, May 5, 2005, 7:51:39 PM:

> Если либа написана на C++ и использует соглашения именования,
> используемые сборщиком VC++, то Dependency Walker в соответствующем
> режиме покажет все параметры функций. Но сомневаюсь, что этот номер
> пройдет для Mathcad.

Вот именно, что я Delphi прогу пишу, а на C++ уже многовато
переписывать :(

   2005-05-05 21:20:53 (#362392)

Re[3]: Interactive logon

> at 14:37 /INTERACTIVE taskmgr

О, как! Давненько я на ключики стандартных утилит не смотрел. За это сенкс.
Однако, это не то, что требовалось. Компутер-то просыпается в экран
приветствия, то есть когда "текущего пользователя" нет, а если и имеются
запущеные интерактивные сеансы, то все они отключены. И только после
подключения к какому-нибудь из них (что можно сделать штатными
Win-средствами опять-таки только интерактивно) появляется этот самый
"текущий пользователь".
В общем, хотелось бы программное решение проблемы. Про шедулер - это я
просто пример приводил. С него-то всё и началось. А сейчас уже затянуло:
хочу
программно создать интерактивный сеанс.

--
С уважением, boroda
mailto:boroden***@s*****.ru

Номер выпуска : 4435
Возраст листа : 592 (дней)
Количество подписчиков : 517
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/362356
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   Шматко А.А. 2005-05-05 20:26:24 (#362356)

Re[2]: Interactive logon

Хаю ду ю ду Шматко А.А.?

Смотрю и вижу, как ты печатаешь умные вещи и дай-ка, думаю,
тоже что-нибудь напечатаю:

>> Кстати в каком месте ты настроил "Вход в качестве службы"? ...

ШАА> Диктую - записывай: ;)
ШАА> "Администрирование"\"Локальная политика безопасности"\"Локальные
ШАА> политики"\"Назначение прав пользователя"\"Вход в качестве службы".
ШАА> Там же и "Работа в режиме операционной системы", только ниже. По умолчанию
и
ШАА> там, и там пусто.

Спасибо.

ШАА> Стандартный шедулер (в частности) запускает запланированные задания в
ШАА> пакетном сеансе. Он отличается от интерактивного тем, что не предусматриает
ШАА> взаимодействия с пользователем, чем экономит системные ресурсы.

Короче все что из этого понял - попробуй

at 14:37 /INTERACTIVE taskmgr
может это тебе поможет, т.к. задания создаются в планировщике +
показываются на экране.

   2005-05-05 18:41:26 (#362301)

Re: Mathcad DLLs

Приветствую вас, Victor V. Vakchturov!

05.05.2005 1:55 вы писали:

> Есть в комплекте утилит, идущих вместе с Visual Studio утилита
> Dependency Walker - можно посмотреть все экспортируемые из модуля
> и импортируемые модулем функции (там все зависимости показаны).
> Может, есть и более продвинутые утилиты.
>
> Но там можно видеть лишь символические имена (а откуда брать
> инфу о параметрах ?).

Если либа написана на C++ и использует соглашения именования,
используемые сборщиком VC++, то Dependency Walker в соответствующем
режиме покажет все параметры функций. Но сомневаюсь, что этот номер
пройдет для Mathcad.

   2005-05-05 17:52:29 (#362270)

Re: Interactive logon

> Почти ни чего не понял что ты хочешь сотворить, но из того что понял,
> имхо, вытекает создание сервиса.

Нет. Сервисы тут ни причём. Впрочем, если без них не удастся, то окажутся
"причём".

> Вряд-ли это поможет твоим программам стать сервисом - сервис это ведь,
> имхо, не программа запущенная с правами сервиса, а именно сервис.

Так я и хотел получить программу, обладающую правами сервиса, чтобы не
писать сам сервис. Я-то экспериментировал. А сервисы писать (правда не
намного) и отлаживать (это уже посильнее) посложнее. Просто возникла мысль,
что только сервисы и имеют необходимые токены по умолчанию, и захотелось это
по-быстрому проверить.

> Кстати в каком месте ты настроил "Вход в качестве службы"? ...

Диктую - записывай: ;)
"Администрирование"\"Локальная политика безопасности"\"Локальные
политики"\"Назначение прав пользователя"\"Вход в качестве службы".
Там же и "Работа в режиме операционной системы", только ниже. По умолчанию и
там, и там пусто.

> Ты распиши поподробнее что именно ты хочешь сделать, а то лично я
> ничерта не понял.

Хорошо, поясню с чего всё началось.
Стандартный шедулер (в частности) запускает запланированные задания в
пакетном сеансе. Он отличается от интерактивного тем, что не предусматриает
взаимодействия с пользователем, чем экономит системные ресурсы. Впрочем,
если этот пользователь интерактивно "присеансился", то это задание будет
запущено именно в этом сеансе.
Меня пакетные сеансы не всегда устраивают. Например, дома компьютер у меня
по утрам работает будильником, включая на полную катушку WinAMP. Очень
удобно, так как можно распланировать этих будильников целую кучу, а
требуется их минимум три - мне, жене и дочери, все в разное время. Одна
беда - когда меня дома уже нет, WinAMP стартует в моей учётке, которая
понятное дело запаролена и вырубить его никто не сможет, а запускать в чужой
учётке - значит столкнуться с пакетным сеансом, который прекратить можно
(штатными Win-средствами) только "насильно". Вот и хотелось бы программно
запускать интерактивную сессию, чтобы WinAMP позднее стартовал в ней.
То, что это возможно, сомнению не подлежит. Ибо стандартный логон как-то же
срабатывает. Да и какой-то твикер умел запускать интерактивные сеансы и
переключаться между ними без предварительного выхода в экран приветствия. У
него это делалось горячими кнопками. Правда, он использвал свой сервис.

--
С уважением, boroda
mailto:boroden***@s*****.ru

Номер выпуска : 4432
Возраст листа : 592 (дней)
Количество подписчиков : 517
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/362253
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   Шматко А.А. 2005-05-05 17:24:13 (#362253)

Re: Interactive logon

Сразу скажу, что сам делал только LogonUser()/ImpersonateLoggedOnUser()
для пакетного входа. Там требовалось в локальных политиках
установить для новой учетной записи привилегию
"вход в качестве пакетного задания".

Все что написано ниже, просто мысли, на практике не проверял.

> Всё проходит без ошибок, кроме заключительно CreateProcessAsUser(), который
> завершается с GetLastError()==ERROR_PRIVILEGE_NOT_HELD.
> Как же это понимать-то?
>
В справке по CreateProcessAsUser() сказано, что нужны привилегии
SE_ASSIGNPRIMARYTOKEN_NAME и SE_INCREASE_QUOTA_NAME.
Они есть?

> Правда пакетные, а не интерактивные, но и с пакетными у
> меня такая же фигня.
>
Не могли бы Вы рассказать подробнее, чего Вы хотите добиться и что делаете?

В MSDN пишут, что для создания интерактивного процесса с помощью
CreateProcessAsUser() нужно указать в STARTUPINFO имя интерактивной
оконной станции (уж не знаю, как это правильно переводится) и
рабочего стола: "winsta0\default". Плюс перед вызовом CreateProcessAsUser()
надо для этой станции и рабочего стола изменить DACL
(в примере, который я видел, его просто сбросили).

Вы делаете именно это, или что-то другое?

> Я сильно подозреваю, что моему процессу не хватает какого-то токена.
> Вот только какого?
>
Помнится, когда я пытался заставить работать пакетный вход, пришлось
просто читать названия настроек локальной политики
безопасности, пока не обнаружил подходящую :(

> Правда, возможно это всё должно работать в качестве службы,
> а не обычного - пусть и под админом - приложения.
>
Вряд ли.
Хотя оконные станции и появились в связи с сервисами,
должно работать и для обычных процессов.

Номер выпуска : 4431
Возраст листа : 592 (дней)
Количество подписчиков : 517
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/362250
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   2005-05-05 17:21:12 (#362250)

Re: Interactive logon

Хаю ду ю ду Шматко А.А.?

Смотрю и вижу, как ты печатаешь умные вещи и дай-ка, думаю,
тоже что-нибудь напечатаю:

ШАА> Правда, возможно это всё должно работать в качестве службы, а не обычного
-
ШАА> пусть и под админом - приложения. Но в самом MSDN-е об этом вроде не
ШАА> упоминается.

Почти ни чего не понял что ты хочешь сотворить, но из того что понял,
имхо, вытекает создание сервиса.

ШАА> Да и пробовал я включать в локальных политиках во "Вход в
ШАА> качестве службы" свою и целевую учётки. Или я ошибаюсь, что это уравняло
бы
ШАА> права моего процесса со службой? Может быть надо было "Работа в режиме
ШАА> операционной системы"?

Вряд-ли это поможет твоим программам стать сервисом - сервис это ведь,
имхо, не программа запущенная с правами сервиса, а именно сервис.
Кстати в каком месте ты настроил "Вход в качестве службы"? Если можно
поподробнее, а то я давно как-то находил это, но потом забыл где, а
иногда это очень знать, но не помню где включать.

ШАА> У кого какие мысли, а лучше опыт?

Ты распиши поподробнее что именно ты хочешь сделать, а то лично я
ничерта не понял.

   2005-05-05 16:05:13 (#362186)

Interactive logon

Вот, понадобился программый сабж.
Не получается. Взял пример из MSDN по адресу "Security\Security
(General)\SDK Documentation\Authorization\Using Authorization\Using
Client/Server Access Control\Starting an Interactive Client Process" плюс
пара функций из "Security\Security (General)\SDK
Documentation\Authorization\Using Authorization\Using Client/Server Access
Control\Getting the Logon SID". Компилится, запускается, не работает. Всё
проходит без ошибок, кроме заключительно CreateProcessAsUser(), который
завершается с GetLastError()==ERROR_PRIVILEGE_NOT_HELD. Как же это
понимать-то? Исходные самплы из MSDN не работают.
Причём с помощью CreateProcessWithLogonW() можно заставить нужное приложение
запуститься под другой учёткой, но в текущей интерактивной сессии, вместо
собственной вновь создаваемой.
К тому же дело не в создании сессии. Ибо LogonUser() отрабатывает без
проблем, да и результат не зависит от того, создана ли нужная интерактивная
сессия заранее или нет. Тот же стандартный шедулер-то запускает сессими.
Правда пакетные, а не интерактивные, но и с пакетными у меня такая же фигня.
Я сильно подозреваю, что моему процессу не хватает какого-то токена. Вот
только какого?
Правда, возможно это всё должно работать в качестве службы, а не обычного -
пусть и под админом - приложения. Но в самом MSDN-е об этом вроде не
упоминается. Да и пробовал я включать в локальных политиках во "Вход в
качестве службы" свою и целевую учётки. Или я ошибаюсь, что это уравняло бы
права моего процесса со службой? Может быть надо было "Работа в режиме
операционной системы"?
Происходит это всё под WinXP rus SP2. Моя и целевая учётки - локальные.
Доменов нет. В качестве имени домена указываю "." как и советует MSDN.
У кого какие мысли, а лучше опыт?

--
С уважением, boroda
mailto:boroden***@s*****.ru

Номер выпуска : 4429
Возраст листа : 592 (дней)
Количество подписчиков : 517
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/362121
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   Шматко А.А. 2005-05-05 14:50:51 (#362121)

Borland BDE Merge Module

Здравствуйте.

У кого-нибудь есть модуль Borland BDE Merge Module версии 5.1.1
(файл .msm). Это файл BDE_ENT.msm (BDE ENTerprise - кажется так пишется).
Он необходим для создания MSI дистрибутивов. Он мне очень нужен, если у
кого есть, поделитесь. Бо инета у меня нету, что бы его скачать.

   Feniks 2005-05-05 14:26:00 (#362110)

Journey inside DC (Win32 API)

Glad to greet, Victor!

You seem to have written (Sunday, June 02, 2002):

VVV> Это, конечно, лучше в новом треде обсуждать :)

Сказано - сделано ;)

VVV> Короче, к данным битмапа, выбранного в контексте можно получить
VVV> доступ например так:

VVV> 1. Использовать функцию GetDIBits (просто получает данные в буфер
VVV> в формате аппаратно-независимого растра).

Да, я про неё уже читал, но меня смутило, что :
"
...function retrieves the bits of the specified compatible bitmap...
"
, а не непосредственно данные HDC.
Вообще я с GDI серьёзно никогда не работал, так что в голове большая
путаница (заранее прошу прощения), а справки MSDN не всегда
"дружелюбны" ;).

VVV> 2. Создать DIB секцию нужного формата (CreateDIBSection - при вызове
VVV> CreateDIBSection как раз указывается буфер, в котором будут храниться

VVV> данные изображения). А потом скопировать в нее исходный
VVV> аппаратно-зависимый растр при помощи BitBlt.

Но ведь в BitBlt надо передавать 2 HDC, а после CreateDIBSection есть
только HBITMAP?

VVV> Кстати, если задача сводится к "нарисовать при помощи GDI и получить
VVV> то, что нарисовано в виде буфера", то удобнее вообще сразу создать
VVV> DIB-секцию и выбрать ее в контекст устройства. Потом на этом контексте
VVV> рисовать.

В смысле сделать SelectObject(hDC,DIBitmap)?
Можно немного подробнее... Я попробовал, после CreateDIBSection буфер
заполняется полностью черным (ранее туда были выведены несколько
прямоугольников с разными кистями). Спасибо!

Alles Gute!

...In Code We Trust...

   2005-05-05 13:03:32 (#362054)

Re[2]: Ресурсы по 3D Max

Glad to greet, Alexey!

You seem to have written (Monday, May 02, 2005):

AK> Думаю, здесь нужно начать с сайта http://render.ru
AK> я в свое время учился по урокам с этого сайта. Там же есть хороший

Кста, немного оффтопом: насколько хорошо научился, в смысле ты что-то
серьёзное в студии делаешь или просто для развлечения?

Alles Gute!

...In Code We Trust...

   2005-05-05 13:03:22 (#362053)

Re[5]: Регистрация класса CPropertySheet (С++)

КО>> Чтобы перехватить все сообщения, идущие в окно CPropertySheet, можно
КО>> воспользоваться тем, что CPropertySheet наследуется от CWnd. В
КО>> CWnd есть виртуальная функция PreSubclassWindow(), которая позволяет
КО>> заменить функцию окна еще до того, как это сделает MFC.
КО>>
КО> А разве при этом все равно не возникает проблема с CREATESTRUCT, в
КО> которую должна передаваться информация о новом имени класса
КО> окна? Или я что-то не понимаю?
КО>
Такой метод мог быть полезен, только если нужно было бы добавить свою
функцию обработки сообщений создаваемого окна.
Экзотика, в общем. Класс так не заменить.
Тем более, что сообщения в этом случае все равно сначала обрабатываются
средствами MFC. Думаю, я был не прав, говоря, что так можно
получить полный контроль над ними.

VV> Проблема вообще состоит в том, что к этой самой CREATESTRUCT
VV> доступа не получить
VV>
Ну, если совсем уж точно, доступ можно получить. И MFC это делает,
используя SetWindowsHookEx() для установки WH_CBT.
Только окно к моменту вызова обработчика уже создано и
класс по-прежнему заменить нельзя.

VV> КО> Требовался обмен сообщениями между двумя приложениями.
VV> КО>
VV> Можно было сделать какое либо дочернее скрытое окно
VV> специально для обмена сообщениями
VV>
Это лучшее решение.
Можно еще воспользоваться RegisterWindowMessage() и PostThreadMessage(),
тогда не потребуется передавать в дочернее приложение
дескриптор окна, но это не так удобно.

Номер выпуска : 4424
Возраст листа : 592 (дней)
Количество подписчиков : 517
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/361925
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   2005-05-05 10:23:54 (#361925)
  • 1
  • 2