Kit |
Отправлено: 02.02.2004, 18:13 |
|
Не зарегистрирован
|
Запускаю программу в win2k:
ShellExecute ( NULL, "open", "view.exe", NULL, NULL, SW_SHOWDEFAULT);
Пытаюсь закрыть:
HANDLE hwnd=FindWindow(NULL,"view");
if(hwnd)DestroyWindow(hwnd);
Хэндл определяется, но окно не закрывается...
Пытаюсь определить что за хрень:
char *lpMsgBuf;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
(LPTSTR) &lpMsgBuf,
0,
NULL);
MessageBox( NULL, lpMsgBuf, "GetLastError", MB_OK|MB_ICONINFORMATION );
delete lpMsgBuf ;
Получаю:
"Отказано в доступе"
Пытаюсь получить доступ:
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
// Get a token for this process.
if (!OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
ShowMessage("OpenProcessToken");
// Get the LUID for the shutdown privilege.
LookupPrivilegeValue(NULL,
SE_TAKE_OWNERSHIP_NAME,
&tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1; // one privilege to set
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
// Get the shutdown privilege for this process.
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,
(PTOKEN_PRIVILEGES)NULL, 0);
// Cannot test the return value of AdjustTokenPrivileges.
if (GetLastError() != ERROR_SUCCESS)
ShowMessage("AdjustTokenPrivileges");
ВОПРОС!!!
Какую привелегию нужно получить или как по другому закрыть работающую программу в NT и нетолько??? |
|
Valdemar |
Отправлено: 03.02.2004, 09:24 |
|
Мастер участка
Группа: Участник
Сообщений: 433
|
Вот так можно закрыть WindowsCommander
CODE | HANDLE hwnd=FindWindow("TWINDOWSCMD",NULL);
if (hwnd)
SendMessage(hwnd,WM_CLOSE,NULL,NULL); | |
|
Kit |
Отправлено: 04.02.2004, 12:53 |
|
Не зарегистрирован
|
Спасибо , действительно помогло! |
|
|