![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
CreateProcessWithLogonW [D5, Win2k]
AlexTregubov © (2003-09-09 16:07:00)
Мастера!!! Подскажите, как с этой функцией работать.
Весь день бьюсь с ней и никак не могу одолеть.
Постоянно Access Violation возникает, хотя вроде бы все верно.
Заранее спасибо
Игорь Шевченко (2003-09-09 17:05:00) [1]
И еще: как объявлены переменные strUserName и прочие ?
Игорь Шевченко (2003-09-09 17:03:00) [2]
И где же наконец, GetLastError ? точно, телепатов ищем :)
clickmaker (2003-09-09 17:02:00) [3]
Сорри, нужно
constlpStartupInfo: STARTUPINFO, а то скорей всего опять AV будет
clickmaker (2003-09-09 16:57:00) [4]
Правильней так:
function CreateProcessWithLogonW(
const lpUsername: PWideChar; // user"s name
const lpDomain: PWideChar; // user"s domain
const lpPassword: PWideChar; // user"s password
dwLogonFlags: Cardinal; // logon option
const lpApplicationName: PWideChar; // executable module name
lpCommandLine: PWideChar; // command-line string
dwCreationFlags: Cardinal; // creation flags
lpEnvironment: Pointer; // new environment block
const lpCurrentDirectory: PWideChar; // current directory name
lpStartupInfo: TStartupInfo; // startup information
varlpProcessInfo: TProcessInformation // process information
): BOOL; stdcall;
В lpProcessInfo она возвращает инфу о процессе, поэтому var.
Либо и lpStartupInfo и lpProcessInfo обозначить как Pointer и передавать @SInfo и @PInfo
AlexTregubov (2003-09-09 16:45:00) [5]
unit Win2kUtils;
interface
uses
Windows;
function CreateProcessWithLogonW(
lpUsername: PWideChar; // user"s name
lpDomain: PWideChar; // user"s domain
lpPassword: PWideChar; // user"s password
dwLogonFlags: integer; // logon option
lpApplicationName: PWideChar; // executable module name
lpCommandLine: PWideChar; // command-line string
dwCreationFlags: integer; // creation flags
lpEnvironment: Pointer; // new environment block
lpCurrentDirectory: PWideChar; // current directory name
lpStartupInfo: TStartupInfo; // startup information
lpProcessInfo: TProcessInformation // process information
): boolean; stdcall;
implementation
function CreateProcessWithLogonW; external "Advapi32.dll" name "CreateProcessWithLogonW";
end.
clickmaker (2003-09-09 16:44:00) [6]
Понятно, что там она есть )
В дельфях она как описана?
AlexTregubov (2003-09-09 16:41:00) [7]
Она есть в Advapi32.dll
BOOL CreateProcessWithLogonW(
LPCWSTR lpUsername, // user"s name
LPCWSTR lpDomain, // user"s domain
LPCWSTR lpPassword, // user"s password
DWORD dwLogonFlags, // logon option
LPCWSTR lpApplicationName, // executable module name
LPWSTR lpCommandLine, // command-line string
DWORD dwCreationFlags, // creation flags
LPVOID lpEnvironment, // new environment block
LPCWSTR lpCurrentDirectory, // current directory name
LPSTARTUPINFOW lpStartupInfo, // startup information
LPPROCESS_INFORMATION lpProcessInfo // process information
);
clickmaker (2003-09-09 16:38:00) [8]
А как описана функция? В Д5 source ее ведь нет
AlexTregubov (2003-09-09 16:24:00) [9]
Вот пример
ZeroMemory(@SInfo,SizeOf(SInfo));
SInfo.cb:=SizeOf(SInfo);
ZeroMemory(@PInfo,SizeOf(PInfo));
if not CreateProcessWithLogonW(PWideChar(strUserName),
nil,
PWideChar(strPassword),
0,
PWideChar(strAppName),
nil,
CREATE_DEFAULT_ERROR_MODE or
CREATE_NEW_CONSOLE or
CREATE_NEW_PROCESS_GROUP,
nil,
nil,
SInfo,
Pinfo)
then ShowMessage("Не работает");
clickmaker (2003-09-09 16:12:00) [10]
Такое впечатление, что тут не форум по дельфи, а конкурс телепатов какой-то...
Хоть бы код публиковали, уважаемые вопрошающие, а ?