![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 28.02.2011
Сообщений: 3
|
![]()
Здравствуйте!
Есть задача, нужно записать в переменную, число. Значение это нужно взять из одного из запущенных приложений, подскажите пожалуйста, как это сделать, если известен адрес значения. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
OpenProcess
ReadProcessMemory CloseHandle Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#3 |
Регистрация: 28.02.2011
Сообщений: 3
|
![]()
Спасибо. Задача частично решена:
const WindowTitle = 'Project1_1'; ZnachAdress = $0045CBE8; var Form1: TForm1; Wnd : THandle; ProcessId, ProcHandle, MainZnach : integer; rw : cardinal; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin Wnd := FindWindow(nil,WindowTitle); GetWindowThreadProcessId(Wnd, @ProcessId); ProcHandle := OpenProcess(PROCESS_ALL_ACCESS,fals e,ProcessId); ReadProcessMemory(ProcHandle,ptr(Zn achAdress),@MainZnach,4,rw); Label1.caption := FloatToStr(MainZnach); Closehandle(ProcHandle); End end; end. Но теперь появился другой вопрос. WindowTitle = 'Project1_1'. но как быть если название окна программы постоянно меняется? вернее название программы в окне есть, но перед ним постоянно менятся значения. в этом случае нужно будет вызывать список всех запущенных процессов и выбирать нужный, либо же можно вобще не использовать название окна? |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
может вам стоит привязатся к имени процесса?
или к классу окна?(а не его заголовку) Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#5 |
Регистрация: 28.02.2011
Сообщений: 3
|
![]()
Пробую получить класс окна, т.к. предполагаю что как и имя заголовка будет изменятся и имя процесса. чтобы узнать класс окна пользую след.:
procedure TForm1.Timer1Timer(Sender: TObject); var nm:array [0..100] of char; begin GetClassName(WindowFromPoint(Mouse. CursorPos),Nm,sizeof(nm)); caption:=nm; end; Класс окна у нужного приложения не определяется. не определяется почему то только у него, со всеми остальными окнами работает. есть какой либо еще способ определить класс окна? P.S. Наверняка делаю что то не так, ибо не програмист, делфи держу в руках меньше недели, ранее если где то и писал то только какиенибуть скрипты, ну и когда то давно QBasic юзал... стала задача, решил автоматизировать некоторые процессы, пришлось взять в руки делфи. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Получение данных из TStringGrid стороннего приложения | BeerDrinker | Win Api | 9 | 31.01.2011 17:53 |
Защита стороннего приложения | Mifody | Общие вопросы Delphi | 1 | 25.03.2010 13:19 |
Работа с компонентами стороннего приложения | imprezident | Win Api | 1 | 30.05.2009 22:12 |
Как определить класс стороннего приложения. | Son | Win Api | 6 | 25.11.2008 11:52 |
Смена иконки стороннего приложения | Wiedzmin | Win Api | 2 | 01.05.2007 16:19 |