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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблема с GetModuleHandle, не находит модуль, хоть тресни 
:(
    Опции темы
BattlePenguin
Дата 5.11.2008, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



День добрый!
пишу небольшую программку, но одна функция работает неправильно:
Код

#include <windows.h>
#include <tlhelp32.h>
#include "cons.h"
#include "camera.h"

BOOL KillProcess(char *ProcName)
{
    DWORD LastError;
    HANDLE hHandle;

    hHandle = GetModuleHandle((LPCWSTR)ProcName);
    LastError = GetLastError();
    BOOL fOk = TerminateProcess(hHandle, 1);
    return fOk;
}

если быть развернуто: в функцию передается указатель на строку, содержащую имя ехе-модуля процесса, который надо закрыть. А проблема в том, что что бы я не передавал процедуре GetModuleHandle она постоянно возвращает NULL. С полным путем тоже передавал. GetLastError говорит о том, что программа просто не находит нужного модуля. Грешил на привилегии - выполнял с SE_TCB_NAME, ноль эмоций.
Так что я уже просто малость в замешательстве, что ж собственно делать.
Еще конечно может быть проблема с приведением char* к LPCWSTR, но как это сделать иначе - я не в курсе
PM MAIL   Вверх
REZiaMIX
Дата 5.11.2008, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

#include <psapi.h>
#include <tlhelp32.h>
const int LARGE_ENOUGH = 2048;  

void KillProcess(LPCTSTR szModuleName)
{
        HANDLE pSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
            bool bIsok = false;
            PROCESSENTRY32 ProcEntry;
            ProcEntry.dwSize = sizeof(ProcEntry);
            if(Process32First(pSnap, &ProcEntry))bIsok=true;
            while (bIsok)
            {
                if(!_strcmpi(ProcEntry.szExeFile,szModuleName)){
                     HANDLE hProcess = ::OpenProcess(PROCESS_TERMINATE, FALSE, ProcEntry.th32ProcessID);
                     ::TerminateProcess(hProcess, -1);
                }
                if(Process32Next(pSnap, &ProcEntry))bIsok=true;
                else bIsok = false;
            }
            CloseHandle(pSnap);
}


Ваш вариант нерабочий т.к. 
Цитата

GetModuleHandle Function
Retrieves a module handle for the specified module. The module must have been loaded by the calling process.
© MSDN

Это сообщение отредактировал(а) REZiaMIX - 5.11.2008, 20:09


--------------------
user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0455 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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