Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 06.09.2007, 16:29   #11
Alter
Профессионал
 
Аватар для Alter
 
Регистрация: 06.08.2007
Адрес: Пустота
Сообщений: 2,230
Репутация: 1000
По умолчанию

Цитата:
Сообщение от Tokolist Посмотреть сообщение
вот довольно таки неплохая статья по этому поводу
_http://rsdn.ru/article/qna/baseserv/enumproc.xml
Что-то неншёл там как путь к файлу запущенной программы определить. Тем тем более там на "Сях" написано. Лучше бы что-нибудь на Delphi или Pascal. Первое предпочтительнее.
Alter вне форума   Ответить с цитированием
Старый 06.09.2007, 21:01   #12
rpy3uH
добрый няша
СуперМодератор
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Адрес: Солнечное Тбилиси
Сообщений: 4,806
Репутация: 2006
По умолчанию

вот код на дельфи
Код:
function GetFullNameByPID(PID: DWORD): string;
var
 hProcess, Readed: DWORD;
 Info: PROCESS_BASIC_INFORMATION;
 ProcessParams: Pointer;
 UniFileName: TUnicodeString;
 FileName: array[0..MAX_PATH] of WideChar;
begin
 Result := '';
 ZeroMemory(@FileName, MAX_PATH * SizeOf(WideChar));
 hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, false, PID);
 if ZwQueryInformationProcess(hProcess, ProcessBasicInformation, @Info,
      SizeOf(PROCESS_BASIC_INFORMATION), nil) = STATUS_SUCCESS then
  begin
   if ReadProcessMemory(hProcess, pointer(dword(Info.PebBaseAddress) + $10), @ProcessParams,
        SizeOf(pointer), Readed) and
      ReadProcessMemory(hProcess, pointer(dword(ProcessParams) + $38), @UniFileName,
        SizeOf(TUnicodeString), Readed)  and
      ReadProcessMemory(hProcess, UniFileName.Buffer, @FileName,
                        UniFileName.Length, Readed) then
        begin
          Result := WideCharToString(FileName);
        end;
   end;
 CloseHandle(hProcess);
end;
но нужны дополнительные структуры и надо много стуктур
вот некоторые
Код:
 NTStatus = cardinal;
Код:
PUnicodeString = ^TUnicodeString;
  TUnicodeString = packed record
    Length: Word;
    MaximumLength: Word;
    Buffer: PWideChar;
  end;
Код:
Function ZwQueryInformationProcess(
                                ProcessHandle:THANDLE;
                                ProcessInformationClass:DWORD;
                                ProcessInformation:pointer;
                                ProcessInformationLength:ULONG;
                                ReturnLength: PULONG):NTStatus;stdcall;
                                external 'ntdll.dll';
Код:
PROCESS_BASIC_INFORMATION = packed record
   ExitStatus: BOOL;
   PebBaseAddress: pointer;
   AffinityMask: PULONG;
   BasePriority: dword;
   UniqueProcessId: ULONG;
   InheritedFromUniqueProcessId: ULONG;
  end;
если ещё будут ошибки скажи
rpy3uH вне форума   Ответить с цитированием
Старый 07.09.2007, 01:04   #13
Tokolist
Пользователь
 
Аватар для Tokolist
 
Регистрация: 04.09.2007
Сообщений: 19
Репутация: 44
По умолчанию

Цитата:
Сообщение от Alter Посмотреть сообщение
Что-то неншёл там как путь к файлу запущенной программы определить. Тем тем более там на "Сях" написано. Лучше бы что-нибудь на Delphi или Pascal. Первое предпочтительнее.
Честно говоря, язык программирования в данном случае играет второстепенную роль
а то что Вы там не нашли как это сделать значит, что Вы плохо искали
но, к счастью, у Вас уже есть готовый пример реализации одного из способов на Delphi
Tokolist вне форума   Ответить с цитированием
Старый 17.10.2007, 23:22   #14
Alter
Профессионал
 
Аватар для Alter
 
Регистрация: 06.08.2007
Адрес: Пустота
Сообщений: 2,230
Репутация: 1000
По умолчанию

Хоть что-то есть
Alter вне форума   Ответить с цитированием
Старый 07.05.2009, 02:37   #15
Diktofon
 
Регистрация: 07.05.2009
Сообщений: 5
Репутация: 10
По умолчанию

А как получить доступ к компонентам чужой программы (один исполняемый файл, в котором реализован графический интерфейс) через MATLAB? У меня есть exe-шник, у него на форме парочка Edit Text и пара кнопок. Меня интересует: есть ли хоть какая то возможность получить к этим компонентам доступ из MATLABа? По возможности, оперировать ими, т.е. изменять значения текстовых строк в Edit Text и вызывать действие "нажатия" кнопок?

Да, забыл упомянуть, что я не в курсе, на чем написан exe-шник. Может быть, это С, но я не уверен.

Последний раз редактировалось rpy3uH; 11.05.2009 в 20:52.
Diktofon вне форума   Ответить с цитированием
Старый 11.05.2009, 20:48   #16
Diktofon
 
Регистрация: 07.05.2009
Сообщений: 5
Репутация: 10
По умолчанию

никто не в курсе? а из Delphi такое возможно?
Diktofon вне форума   Ответить с цитированием
Старый 11.05.2009, 20:53   #17
rpy3uH
добрый няша
СуперМодератор
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Адрес: Солнечное Тбилиси
Сообщений: 4,806
Репутация: 2006
По умолчанию

если надо получить доступ из MATLAB к твоей проге, то такое врядли получится.
rpy3uH вне форума   Ответить с цитированием
Старый 11.05.2009, 21:39   #18
Diktofon
 
Регистрация: 07.05.2009
Сообщений: 5
Репутация: 10
По умолчанию

rpy3uH, а какими другими способами можно получить доступ к этим компонентам? Как я понял, вышеописанные процедуры относятся к получению доступа из Delphi к программам, написанным на Delphi. Если моя программа была написана, скажем, на С, и я хочу получить к ней доступ из Delphi, эти процедуры будут работать?
Diktofon вне форума   Ответить с цитированием
Старый 11.05.2009, 22:11   #19
Пепел Феникса
Модератор
Заслуженный модератор
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 21,003
Репутация: 3436

icq: 446843180
skype: phoenix_proger
По умолчанию

язык не важен
я из Дельфи получал доступ к прогам на С
таам используется ВИНАпи, а он и в африке ВИНАпи

просто программы на Дельфи имеют свои названия классов окон
а у С свои
__________________
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума   Ответить с цитированием
Старый 12.05.2009, 21:04   #20
rpy3uH
добрый няша
СуперМодератор
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Адрес: Солнечное Тбилиси
Сообщений: 4,806
Репутация: 2006
По умолчанию

Diktofon, я неправильно понял задачу. Надо из Delphi-программы получить доступ к программе MATLAB, так можно, но надо очень сильно захотеть.
rpy3uH вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Управление чужой программой через WEB. MethSpeed Безопасность, Шифрование 9 20.07.2008 14:45
Получить содержимое Memo в чужой программе. Иллидан Win Api 14 12.05.2008 14:39
открытие документа в чужой программе joker Win Api 2 22.10.2007 16:59
Управление чужой прогой MAcK Win Api 2 30.01.2007 15:02


17:34.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.