Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не работает terminateprocess 
:(
    Опции темы
KuKHyT
Дата 17.1.2012, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 17.1.2012

Репутация: нет
Всего: нет



Собственно не работает на "ХРюше" terminateprocess .
На другом компьютере - все отлично работает (на нем windows 7).
А на ХР - никак.

Код такой:

Код

    #include "stdafx.h"
    #include "conio.h"
        #include <windows.h>
    #include <iostream>
    #include <Tlhelp32.h>
    #include <fstream>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    using namespace std;
    int date[6];

int KillProcByPid(DWORD pid) //функция "убивает" процесс по его PID
{
DWORD ExitCode;
HANDLE hp;
bool ret = true;

if(pid)
        {
        hp = OpenProcess(PROCESS_ALL_ACCESS, true, pid);
        if (hp)
                {
                GetExitCodeProcess(hp, &ExitCode);
                ret = TerminateProcess(hp, ExitCode);
                }
        else
                {
                return false;
                }
        }
else {return false;}
CloseHandle(hp);
return ret;
}

DWORD PIDByName(WCHAR * AProcessName) // функция возвращает PID процесса по его имени
{
  HANDLE pHandle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  PROCESSENTRY32 ProcessEntry;
  DWORD pid;
  ProcessEntry.dwSize = sizeof(ProcessEntry);
  bool Loop = Process32First(pHandle, &ProcessEntry);
  while (Loop)
    {
      if (wcsstr(ProcessEntry.szExeFile, AProcessName))
      {
                  pid = ProcessEntry.th32ProcessID;
                  CloseHandle(pHandle);
                  return pid;
      }
      Loop = Process32Next(pHandle, &ProcessEntry);
    }
    return 0;}

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
int l=0;
DWORD pid;
pid = PIDByName(L"mspaint.exe");
l=KillProcByPid(pid);
};}


Помогите, пожалуйста!
Заранее спасибо! ;)
PM MAIL   Вверх
GremlinProg
Дата 17.1.2012, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106





--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
KuKHyT
Дата 17.1.2012, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 17.1.2012

Репутация: нет
Всего: нет



Эм... В делфи не шарю. Как в С++ перевести этот код?
PM MAIL   Вверх
GremlinProg
Дата 17.1.2012, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(KuKHyT @  17.1.2012,  15:49 Найти цитируемый пост)
Эм... В делфи не шарю

от делфи там только паскаль )

ну смотри тогда, как включить привилегию: http://support.microsoft.com/kb/131065/en-us
конкретно: SetPrivilege


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
KuKHyT
Дата 17.1.2012, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 17.1.2012

Репутация: нет
Всего: нет



WM_CLOSE через sendmassage тоже не работает :(
Тоже дело в привилегиях?

Добавлено через 7 минут и 49 секунд
Попытался разобрать в коде и адаптировать его под свою программу. Нифига не вышло. Пожалуйста, скиньте мне сюда тупо код, который установит привилегии для команды terminateprocess?
PM MAIL   Вверх
GremlinProg
Дата 18.1.2012, 07:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(KuKHyT @  17.1.2012,  16:31 Найти цитируемый пост)
WM_CLOSE через sendmassage тоже не работает :(

в API нет такой функции
Цитата(KuKHyT @  17.1.2012,  16:31 Найти цитируемый пост)
Тоже дело в привилегиях?

никогда о таком не слышал

что значит не работает?

Добавлено через 11 минут и 44 секунды
Цитата(KuKHyT @  17.1.2012,  16:31 Найти цитируемый пост)
скиньте мне сюда тупо код, который установит привилегии для команды terminateprocess?

скопируй из примера функцию SetPrivilege
и вызови ее:
Код

...
::OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken );
SetPrivilege( hToken, SE_DEBUG_NAME, TRUE );
hProcess = ::OpenProcess( ... );
SetPrivilege( hToken, SE_DEBUG_NAME, FALSE );
::TerminateProcess(hProcess, ... );
::CloseHandle( hToken );
::CloseHandle( hProcess );
...

в примере же все есть, см. функцию main
Цитата(KuKHyT @  17.1.2012,  15:49 Найти цитируемый пост)
В делфи не шарю

c C/C++ тоже проблемы?


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0454 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.