скренсейвер
От: Аноним  
Дата: 29.10.06 21:58
Оценка:
Привет!

Где взять приличную доку на программирование скринсейверов на С++?
Или исходники, плиззз.

Пока.

08.11.06 17:50: Перенесено модератором из 'C/C++. Прикладные вопросы' — Odi$$ey
Re: скренсейвер
От: Аноним  
Дата: 30.10.06 07:16
Оценка:
А>Где взять приличную доку на программирование скринсейверов на С++?
А>Или исходники, плиззз.

В MSDN точно есть и то и другое. Думаю, что MSDN поиск или гугль найдут без проблем.
Re[2]: скренсейвер
От: Аноним  
Дата: 30.10.06 10:52
Оценка:
Здравствуйте, Аноним, Вы писали:

А>>Где взять приличную доку на программирование скринсейверов на С++?

А>>Или исходники, плиззз.

А>В MSDN точно есть и то и другое. Думаю, что MSDN поиск или гугль найдут без проблем.


Я думаю что скринсейверы — это не то, для чего требуется дока.

А что касается MSDN, то там про них почти ничего нет. Только функции ScreenSaverProc, DefScreenSaverProc, ScreenSaverConfigureDialog и RegisterDialogClasses. Ну и еще в качестве хелпа можно использовать файл <scrnsave.h>
Re: скренсейвер
От: Кодт Россия  
Дата: 30.10.06 11:51
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Где взять приличную доку на программирование скринсейверов на С++?


Платформа какая? Windows, Linux (KDE, Gnome, другие среды), другая ОС?
... << RSDN@Home 1.2.0 alpha rev. 655>>
http://files.rsdn.org/4783/catsmiley.gif Перекуём баги на фичи!
Re[3]: скренсейвер
От: Аноним  
Дата: 30.10.06 12:51
Оценка:
Здравствуйте, Аноним, Вы писали:
А>А что касается MSDN, то там про них почти ничего нет. Только функции ScreenSaverProc, DefScreenSaverProc, ScreenSaverConfigureDialog и RegisterDialogClasses. Ну и еще в качестве хелпа можно использовать файл <scrnsave.h>

Когда-то всё было — и статейка (может в их журнале) и пример. В посл. время наблюдаю как старые (но ценные) сведения в MSDN перекочевывают в какие-то закрома родины, где их днём с огнём не найдёшь. Поиск у них, ИМХО, на редкость дрянной — мне гугль часто находит в MSDN то, что собственный MSDN-вский поиск не находит.

Вот кое что из гугля, например

How to write a 32bit screen saver
CodeGuru: Screen Saver Template
Re[3]: скренсейвер
От: Аноним  
Дата: 30.10.06 12:56
Оценка:
Здравствуйте, Аноним, Вы писали:

А>А что касается MSDN, то там про них почти ничего нет.


Угу, старье, пару строк с ошибками, но и этого хватило. :-)

Санкс адестуд... :-)

Как програмно вызвать desc.cpl и где про его параметры вызова прочесть.

Скрин собрал. Но как програмно(при первом запуске) прописать этот скринсейвер в диалог свойств экрана, вызвать desc.cpl и установить позицию комбобоксы на него?


Все это про виндовс...
Re[4]: скренсейвер
От: Xander Zerge Россия www.zerge.com
Дата: 07.11.06 23:27
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Как програмно вызвать desc.cpl и где про его параметры вызова прочесть.

А>Скрин собрал. Но как програмно(при первом запуске) прописать этот скринсейвер в диалог свойств экрана, вызвать desc.cpl и установить позицию комбобоксы на него?

rundll32.exe desk.cpl,InstallScreenSaver c:\windows\system32\ssaver.scr
Серёжа Новиков,
программист
Re[5]: скренсейвер
От: Аноним  
Дата: 08.11.06 09:59
Оценка:
XZ>rundll32.exe desk.cpl,InstallScreenSaver c:\windows\system32\ssaver.scr

А оно у меня в другой папке c:\windows.0\system32\ssaver.scr

а у кого-то может ещё где...
Re[6]: скренсейвер
От: Xander Zerge Россия www.zerge.com
Дата: 08.11.06 12:39
Оценка:
Здравствуйте, <Аноним>, Вы писали:

XZ>>rundll32.exe desk.cpl,InstallScreenSaver c:\windows\system32\ssaver.scr

А>А оно у меня в другой папке c:\windows.0\system32\ssaver.scr
А>а у кого-то может ещё где...

Если InnoSetup, то путь будет выглядеть как "{sys}\ssaver.scr". Или вы не знаете, куда ставится сэйвер?
Серёжа Новиков,
программист
Re[7]: скренсейвер
От: Аноним  
Дата: 08.11.06 13:27
Оценка:
Здравствуйте, Xander Zerge, Вы писали:

XZ>Здравствуйте, <Аноним>, Вы писали:


XZ>>>rundll32.exe desk.cpl,InstallScreenSaver c:\windows\system32\ssaver.scr

А>>А оно у меня в другой папке c:\windows.0\system32\ssaver.scr
А>>а у кого-то может ещё где...

XZ>Если InnoSetup, то путь будет выглядеть как "{sys}\ssaver.scr". Или вы не знаете, куда ставится сэйвер? :)


Я же могу поставить его куда угодно. Потом в регистре прописать путь на него и порядок.
Если я его поставлю в свою любимую папку, desk.cpl его сам не увидит.
А кнопки бровсе я что-то не наблюдаю.
Если же я его посталю в правильную папку (даже не прописывая его в регистр, как дефолтный), то при вызове rundll32.exe ... , в комбобоксе будет аж два скринсейвера с одним и тем же названием и оба будут показывать на один ss.scr.

Один, которыя я поставил до вызова rundll32.exe (его desk.cpl находит сам) и другой, который rundll32.exe собирается инстолить моим же вызовом.

При повторном запуске desk.cpl (из командной строки или свойств дисплея) уже видит только один скринсейвер, как оно и есть на самом деле.

???

Есть ли способ вызвать deck.cpl с нужными параметрами без инстоляции?
Да и где же эти параметры задокументированы?
Re[8]: скренсейвер
От: Xander Zerge Россия www.zerge.com
Дата: 08.11.06 13:50
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Я же могу поставить его куда угодно. Потом в регистре прописать путь на него и порядок.

Не куда угодно, а туда, где его увидит система.

А>Если я его поставлю в свою любимую папку, desk.cpl его сам не увидит.

Вот-вот.

А>А кнопки бровсе я что-то не наблюдаю.

Какой кнопки? Где?!

А>Если же я его посталю в правильную папку (даже не прописывая его в регистр, как дефолтный), то при вызове rundll32.exe ... , в комбобоксе будет аж два скринсейвера с одним и тем же названием и оба будут показывать на один ss.scr.

Ещё раз, какая папка правильная?

А>Один, которыя я поставил до вызова rundll32.exe (его desk.cpl находит сам) и другой, который rundll32.exe собирается инстолить моим же вызовом.

Он ничего не инсталит, только пропишет его как дефолтный и тут же откроет вкладку Screensaver.

А>Есть ли способ вызвать deck.cpl с нужными параметрами без инстоляции?

С командной строки через rundll32...

А>Да и где же эти параметры задокументированы?

В гугле, ё-моё!
http://www.google.com/search?q=desk.cpl+parameters
http://www.robvanderwoude.com/rundll.html
Серёжа Новиков,
программист
Re[9]: скренсейвер
От: Аноним  
Дата: 09.11.06 09:53
Оценка:
А>>Я же могу поставить его куда угодно. Потом в регистре прописать путь на него и порядок.
XZ>Не куда угодно, а туда, где его увидит система.

Если я помогу системе, через регистр, то куда угодно.
В регистре прописывается полный путь на дефолтный скринсервер.
Система не увидит, а работать будет. Уже работает из c:\windows.0\system32\ss\ss.scr Попробую в корень или в любую другую папку.



Спасибо за ссылочки, посмотрим.
Re[10]: скренсейвер
От: Xander Zerge Россия www.zerge.com
Дата: 09.11.06 11:59
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>В регистре прописывается полный путь на дефолтный скринсервер.

А>Система не увидит, а работать будет. Уже работает из c:\windows.0\system32\ss\ss.scr Попробую в корень или в любую другую папку.
Зачем???
Серёжа Новиков,
программист
Re: скренсейвер
От: kaz  
Дата: 31.05.07 12:12
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Привет!


А>Где взять приличную доку на программирование скринсейверов на С++?

А>Или исходники, плиззз.

А>Пока.


Блин как меня бесят люди которые на вопрос отвечают типа: "ну это фогня вопрос", "это не то, для чего требуется дока". Ты что ответить не можешь, дать ссылку.

Короче отвечаю, как могу:
Во первых: в МСДН есть статья называется "Handling Screen Savers" почитай интересно.
Во вторыъх:
там ты найдеш описание 3-х ф-ий, которые ты можеш в тупую копи/паст (ScreenSaverProc, ScreenSaverConfigureDialog, RegisterDialogClasses) их объявление может не совпадать с твоим SDK, поэтому правильный declaretion посмотри в <ScrnSave.h>.

Как сделать 1-й скринсейвер:

вставляеш
#include <Windows.h>
#include <ScrnSave.h>
#include <strsafe.h>
#include <CommCtrl.h>
#pragma comment(lib,"scrnsave.lib")
#pragma comment(lib,"comctl32.lib")

вставляеш функции из МСДН-а, создаеш диалоги, определяеш переменные нужные, удаляеш лишние (у меня такие нашлись и CTRL+F5.Переименовываеш в *.scr ФСЕ.
P.S.Если последняя строчка не понятна RTFM WinAPI.
Re[2]: скренсейвер
От: Xander Zerge Россия www.zerge.com
Дата: 31.05.07 14:07
Оценка:
Здравствуйте, kaz, Вы писали:

kaz>Блин как меня бесят люди которые на вопрос отвечают типа: "ну это фогня вопрос", "это не то, для чего требуется дока". Ты что ответить не можешь, дать ссылку.


Ух какой злой, а главное, шустрый!

http://www.wischik.com/scr/
Находится гуглом за пять секунд по фразе "Screensaver Programming". Там пошире расписано для начинающих.
По-нормальному же, scrnsave.lib недостаточно, гибкости не хватает, не говоря уж об отсутствии поддержки многоэкранных систем, потому если по-взрослому, то писать надо всё своё.
Протокол же сам по себе простенький: это список параметров командной строки, строковый ресурс-название, да не забывать информировать систему через SPI_SETSCREENSAVERRUNNING. Это всё в MSDN действительно описано.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Серёжа Новиков,
программист
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.