На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! user posted image
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.

Соблюдайте общие правила форума

Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как запустить программу/файл? (и дождаться ее завершения)
5. Как перехватить API-функции, поставить hook? (перехват сообщений от мыши, клавиатуры - внедрение в удаленное адресное прстранство)
... (продолжение следует) ...

Внимание:
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки - бан.
Мат в разделе - бан на три месяца...

Полезные ссылки:
user posted image MSDN Library user posted image FAQ раздела user posted image Поиск по разделу user posted image Как правильно задавать вопросы


Выразить свое отношение к модераторам раздела можно здесь: user posted image Rouse_, user posted image Krid

Модераторы: Rouse_, Krid
Страницы: (3) 1 2 [3]  все  ( Перейти к последнему сообщению )  
> Как узнать процесс родителя. , нужно для плагина...
    Ясно, спасибо. Правда насколько я знаю, системный таймер на NT тикает каждые 10 мс (тогда же планировщик потоков получает управление), так что соблюсти документированную дискретность 100 нс никак не получится. Или это я с прямым углом перепутал?
      В действительности срабатывает он намного чаще 10 мс. Иначе пропала бы возможность работы с мультимедийными таймерами :)
        Цитата Rennigth @
        Вроде без особых косяков...

        Да. На первый взгляд, не видно :)

        P.S.
        Цитата Rennigth @
        Желание дамы - закон!

        Вот бы везде было так, как на форумах по программированию :)
          Уважаемые!!! ПОМОГИТЕ!!!! :huh:
          Ни кто не пособит- как туже самую задачу воспроизвести на Visual Basic 6.0 ???

          т.е. меня интересует, КАК узнать имя процесса запустившего мою программу, но через VB?

          СПАСИБО огромное любому, кто хоть что то посоветует ;) ! )))))
            Точно так-же, берешь приведенный код и переписываешь его на VB.
              Rouse
              Александр

              В том то и проблема, у меня не выходит (если честно, то я не спец в программировании, тока VB изучаю, а тут совсем др. язык).. Помогите, плиз, если можете)
              Спасибо.
                Цитата akkorn @
                В том то и проблема, у меня не выходит (если честно, то я не спец в программировании, тока VB изучаю, а тут совсем др. язык).. Помогите, плиз, если можете)
                Спасибо.


                Ты думаешь Розыч спец в VB?
                ЛУчше задать вопрос в соответствующем разделе форума.
                  Демо
                  Александр

                  А КТО ЕСТЬ ТАКОЙ огромный спец, кто мог бы это провернуть???
                  Пасиб))
                    Пожалуй, апну тему.
                    Использую приведенный выше код.
                    GetModuleFileNameExA на некоторых компьютерах возвращает ошибку,
                    Getlasterror = 299, запрос Readprocessmemory или writeprocessmemory выполнен только частично.
                    Оно же "Only part of a ReadProcessMemory or WriteProcessMemory request was completed." или ERROR_PARTIAL_COPY.
                    Пробовал увеличить буффер - дело не в этом. GetModuleFileNameExW дает ровно тот же результат - либо обе работают, либо обе нет.

                    Работает на WindowsXP x86, Windows2003 x86, Windows 2003 x64.
                    Не работает: словил только на Win2003x64, запущенном под Oracle VirtualBox, но есть и другие эпизоды.

                    Сделал мощный дебаг, в Memo выводится все и на каждом шаге. Функции GetModuleFileNameEx передается нормальный хендл.
                    Приложение 32битное, в диспетчере задач отмечено как *32. Возможно, как-то связано. Запуск в режиме совместимости с любой другой ОС во первых, не решает задачу, во вторых - выдается тот же результат. Запустившее приложение еще в памяти, не тот случай когда бы оно успело закрыться. Как фиксить?

                    ---
                    еще порылся и выяснил, что ошибка возникает только при запуске приложения из проводника (Explorer.exe) либо через CMD.exe на некоторых 64-битных системах. Запуск другой программой определяется.
                    Решается использованием GetProcessImageFileNameA, которая дает путь в виде \Device1\PArtition2\windows\explorer.exe или типа того, но сойдет.
                    Надеюсь, GetProcessImageFileNameA есть на всех системах и не будет "точка входа не найдена"... Рекомендуемую QueryFullProcessImageName в системных библиотеках не нашел, в модулях Delphi тем более.
                    Сообщение отредактировано: Виталь -
                      Цитата Виталь @
                      QueryFullProcessImageName

                      Minimum supported client Windows Vista [desktop apps only]
                      Minimum supported server Windows Server 2008 [desktop apps only]
                      Header WinBase.h (include Windows.h)
                      Library Kernel32.lib
                      DLL Kernel32.dll
                      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                      0 пользователей:
                      Страницы: (3) 1 2 [3]  все


                      Рейтинг@Mail.ru
                      [ Script execution time: 0,0443 ]   [ 16 queries used ]   [ Generated: 16.09.25, 15:10 GMT ]