Запуск скринсейвера
От: 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.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.