Здравствуйте, уважаемые эксперты. Дополнение к вопросу 1358. Я получаю привилегии SE_TCB_NAME (вроде бы), но LogonUser по-прежнему выдает ошибку о недостаточности прав (только в win2k и NT, в XP все работает ништяк). Какие еще привилегии нужны, как их правильно получать? Есть ли альтернатива LogonUser (интересуют все функции для которых нужна аутентификация системного пользователя)? В приложении процедура получения привелегий.
Добрый день, Byter! попробуй так var ProcessID : DWORD; ProcessHandle : THandle; ThreadHandle : THandle; begin ProcessID := GetCurrentProcessID; ProcessHandle := OpenProcess(PROCESS_SET_INFORMATION, false,ProcessID); SetPriorityClass(ProcessHandle, REALTIME_PRIORITY_CLASS); ThreadHandle := GetCurrentThread; SetThreadPriority(ThreadHandle, THREAD_PRIORITY_TIME_CRITICAL); end;
Ответ отправлен: 01.03.2004, 15:39 Отправитель: Pawel Отвечает sir henry
Приветствую Вас, Byter! Попробуйте вместо функции LogonUser() использовать CreateProcessAsUser(). Она более удобна чем предыдущая, если Вам просто нужно запустить какую-то программу от имени нетекущего пользователя. Ответ отправлен: 01.03.2004, 04:19 Отправитель: sir henry
Вопрос № 1367
Как сделать СкринШот, только куска экрана? Ну типа чтобы пользователь мог сам определить этот кусок?!
Доброе время суток, Scorp! Вопрос некорректен тем, что не отмечено, в чем пишете программу. От этого и ответы будут неточные :)) Чтобы получить скриншот части экрана, используется GetDC для GetDesktopWindow. API функция BitBt используется для передачи картинки десктопа в DesktopBitmap. GetDC(GetDesktopWindow) получает дескриптор контекста устройства дисплея для указанного окна - окна возвращённого функцией GetDesktopWindow Ответ отправлен: 02.03.2004, 13:04 Отправитель: Boriss Отвечает Bob Johnson
Добрый день, Scorp! > СкринШот, только куска экрана? Открой DC десктопа и скопируй оттуда нужный прямоугольник. См. GetDC. > NEWFF.narod.ru - это бесплатные программы, игры, утилиты, статьи. А это к чему?
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 28.02.2004, 23:34 Отправитель: Bob Johnson Отвечает Pawel
Приветствую Вас, Scorp! См приложение. "NEWFF.narod.ru - это бесплатные программы, игры, утилиты, статьи." - а это к чему???
Приложение: Ответ отправлен: 01.03.2004, 15:36 Отправитель: Pawel Отвечает samum2000
Доброе время суток, Scorp! Исползуй function BitBlt( hdcDest: HDC; // дескриптор конечного контекста устройства nXDest, // коорд. x верхнего левого угла конечного прямоугольника nYDest, // коорд. y верхнего левого угла конечного прямоугольника nWidth, // ширина конечного прямоугольника nHeight: Integer; // высота конечного прямоугольника hdcSrc: HDC; // дескриптор исходного контекста устройства nXSrc, // коорд. x верхнего левого угла исходного прямоугольника nYSrc: Integer; // коорд. y верхнего левого угла исходного прямоугольника dwRop: DWORD // код растровой операции ): Boolean; Например, так: Var MyBitmap: TBitmap; Begin ... MyBitmap:=TBitmap.Create; MyBitmap.Width:=20; MyBitmap.Height:=20; BitBlt(MyBitmap.Canvas.Handle, 0,0,20,20, GetDC(GetDesktopWindow),100,100,SrcCopy); ... end. Ответ отправлен: 01.03.2004, 12:06 Отправитель: samum2000
Вопрос № 1368
Надо определять кусок экрана, так чтобы нажал я кнопку определилось на чало координат, нажал в то место где надо остановиться и определился прямоугольник, мне код нужен!!!
Приветствую Вас, Scorp! Типа так: DC:=GetDC(0); BitBlt(ScrImage.Canvas.Handle,0,0,ScrImage.Width,ScrImage.Height,DC,0,0,SrcCopy); ReleaseDC(0,DC);
Ответ отправлен: 02.03.2004, 13:13 Отправитель: Boriss Отвечает Pawel
Приветствую Вас, Scorp! Что есть " кусок экрана"? Имеется в виду десктоп? или форма? Начато координат - это точка 0,0. Позиция мыши на момент клика - это и есть вторая точка. Метд опредиления позиции мыши зависит от п.1 Ответ отправлен: 01.03.2004, 15:34 Отправитель: Pawel
Вопрос № 1369
Добрый вечер Уважаемые эксперты! Подскажите мне пожалуйста, если можно, то с примером кода, как мне программно создать и разместить ярлык на рабочем столе? За ранее благодарен за любую информацию. С Ув. Дмитрий.
Приложение: Ответ отправлен: 29.02.2004, 18:56 Отправитель: CJ Отвечает Snowm@n
Добрый день, Дмитрий! Создание ярлыков на рабочем столе, меню "пуск", панели быстрого запуска (гляди в приложение).
Приложение: Ответ отправлен: 01.03.2004, 19:47 Отправитель: Snowm@n Отвечает samum2000
Добрый день, Дмитрий! uses ShlObj, ComObj, ActiveX; procedure CreateLink(const PathObj, PathLink, Desc, Param: string); var IObject: IUnknown; SLink: IShellLink; PFile: IPersistFile; begin IObject := CreateComObject(CLSID_ShellLink); SLink := IObject as IShellLink; PFile := IObject as IPersistFile; with SLink do begin SetArguments(PChar(Param)); SetDescription(PChar(Desc)); SetPath(PChar(PathObj)); end; PFile.Save(PWChar(WideString(PathLink)), FALSE); end;
Ответ отправлен: 01.03.2004, 12:09 Отправитель: samum2000 Отвечает Pawel
Добрый день, Дмитрий! Полнофункциональная функция для создания ярлыка с определенными параметрами. uses Windows, ShlObj, OLE2; function CreateLink(SrcFile,LnkFile,Descr:string):HRESULT; var hres:HRESULT; psl:IShellLinkA; ppf:IPersistFile; wsz:array[0..MAX_PATH-1] of word; begin hres:=CoCreateInstance(CLSID_ShellLink, nil,CLSCTX_INPROC_SERVER, IID_IShellLinkA, psl); if (SUCCEEDED(hres)) then begin psl.SetPath(PChar(SrcFile)); psl.SetDescription(PChar(Descr)); hres:=psl.QueryInterface(IID_IPersistFile, ppf); if (SUCCEEDED(hres)) then begin MultiByteToWideChar(CP_ACP, 0, PChar(LnkFile), -1, @wsz, MAX_PATH); hres:=ppf.Save(@wsz, TRUE); ppf.Release; end; end; CreateLink:=hres; end; Ответ отправлен: 01.03.2004, 15:30 Отправитель: Pawel Отвечает Boriss
Доброе время суток, Дмитрий!
Приложение: Ответ отправлен: 02.03.2004, 13:53 Отправитель: Boriss
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.