Запуск скринсейвера
От: y0prst  
Дата: 21.10.05 07:13
Оценка:
Я пишу менеджер скринсейверов. Моя проблема описывается очень просто: я не могу запустить скринсейвер по имени файла. Следующий код запускает конфигурацию скринсейвера:
STARTUPINFO si;
si.cb = sizeof(si);
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
ZeroMemory( &pi, sizeof(pi) );
CreateProcess (
    filename, //LPCTSTR lpApplicationName,
    NULL, //LPTSTR lpCommandLine,
    NULL, //LPSECURITY_ATTRIBUTES lpProcessAttributes,
    NULL, //LPSECURITY_ATTRIBUTES lpThreadAttributes,
    false, //BOOL bInheritHandles,
    0, //DWORD dwCreationFlags,
    NULL, //LPVOID lpEnvironment,
    NULL, //LPCTSTR lpCurrentDirectory,
    &si, //LPSTARTUPINFO lpStartupInfo,
    &pi//LPPROCESS_INFORMATION lpProcessInformation
);

Никакие значения lpCommandLine (а я пробовал -s, /s, s) не изменяют такого поведения (скринсейвер не показывается).

Кроме того, я пытался импортировать функцию ScreenSaverProc из файла скринсейвера, но, судя по всему, её там нет (по крайней мере, указатель на неё после попытки импорта -- нулевой).
Вот код импорта:
HMODULE ScreensaverLibrary = LoadLibrary(filename);
FARPROC ScreenSaverProc = GetProcAddress(ScreensaverLibrary, "ScreenSaverProc"); // значение ScreenSaverProc - 0.
Re: Запуск скринсейвера
От: sjukov Украина  
Дата: 21.10.05 07:51
Оценка:
ShellExecute( NULL, "open", "c:\\screensave.exe", "-s", "c:\\", SW_SHOW );
Вот в таком варианте получилось, если переименовать *.scr в *.exe .
Если убрать "-s" и оставить пустой параметр "-s" то отобразится окно настроек скринсейвера.


"y0prst" <45523@users.rsdn.ru> сообщил/сообщила в новостях следующее: news:1447729@news.rsdn.ru...
>Я пишу менеджер скринсейверов. Моя проблема описывается очень просто: я не могу запустить скринсейвер по имени файла. Следующий код запускает конфигурацию скринсейвера:
>
> STARTUPINFO si;
> si.cb = sizeof(si);
> PROCESS_INFORMATION pi;
> ZeroMemory( &si, sizeof(si) );
> ZeroMemory( &pi, sizeof(pi) );
> CreateProcess (
> filename, //LPCTSTR lpApplicationName,
> NULL, //LPTSTR lpCommandLine,
> NULL, //LPSECURITY_ATTRIBUTES lpProcessAttributes,
> NULL, //LPSECURITY_ATTRIBUTES lpThreadAttributes,
> false, //BOOL bInheritHandles,
> 0, //DWORD dwCreationFlags,
> NULL, //LPVOID lpEnvironment,
> NULL, //LPCTSTR lpCurrentDirectory,
> &si, //LPSTARTUPINFO lpStartupInfo,
> &pi//LPPROCESS_INFORMATION lpProcessInformation
> );
>

> Никакие значения lpCommandLine (а я пробовал -s, /s, s) не изменяют такого поведения (скринсейвер не показывается).
>
> Кроме того, я пытался импортировать функцию ScreenSaverProc из файла скринсейвера, но, судя по всему, её там нет (по крайней мере, указатель на неё после попытки импорта -- нулевой).
> Вот код импорта:
>
> HMODULE ScreensaverLibrary = LoadLibrary(filename);
> FARPROC ScreenSaverProc = GetProcAddress(ScreensaverLibrary, "ScreenSaverProc"); // значение ScreenSaverProc - 0.
>
Posted via RSDN NNTP Server 1.9
Re[2]: Запуск скринсейвера
От: y0prst  
Дата: 21.10.05 21:47
Оценка:
Здравствуйте, sjukov, Вы писали:

S>ShellExecute( NULL, "open", "c:\\screensave.exe", "-s", "c:\\", SW_SHOW );

S>Вот в таком варианте получилось, если переименовать *.scr в *.exe .
S>Если убрать "-s" и оставить пустой параметр "-s" то отобразится окно настроек скринсейвера.

Воспользовался вашим кодом для запуска скринсейвера. Для конфигурирования оставил прежний, ибо итак работает
А .scr в .exe обязательно переименовывать? У меня в win-xp итак работает...
Re[3]: Запуск скринсейвера
От: sjukov Украина  
Дата: 21.10.05 23:50
Оценка:
Ну раз работает, значит слава Богу Как я понял у меня с типом файлов *.scr ассоциирован AutoCAD и поэтому
хранитель экрана у меня открывается в среде AutoCAD ShellExecute аналогочен тому как если бы ты в проводнике
дважды кликнул на .scr файле.

"y0prst" <45523@users.rsdn.ru> сообщил/сообщила в новостях следующее: news:1449328@news.rsdn.ru...
> Здравствуйте, sjukov, Вы писали:
>
> S>ShellExecute( NULL, "open", "c:\\screensave.exe", "-s", "c:\\", SW_SHOW );
> S>Вот в таком варианте получилось, если переименовать *.scr в *.exe .
> S>Если убрать "-s" и оставить пустой параметр "-s" то отобразится окно настроек скринсейвера.
>
> Воспользовался вашим кодом для запуска скринсейвера. Для конфигурирования оставил прежний, ибо итак работает
> А .scr в .exe обязательно переименовывать? У меня в win-xp итак работает...
Posted via RSDN NNTP Server 1.9
Re: Запуск скринсейвера
От: goto Россия  
Дата: 22.10.05 01:19
Оценка:
Здравствуйте, y0prst, Вы писали:

Y>Кроме того, я пытался импортировать функцию ScreenSaverProc из файла скринсейвера, но, судя по всему, её там нет (по крайней мере, указатель на неё после попытки импорта -- нулевой).


Да, сейчас многие не используют ScreenSaverProc. Просто win32-приложение с расширением .scr.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.