![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 01.01.2010
Сообщений: 5
|
![]()
Добрый день.
Возможно мой вопрос очень глуп и уже осуждался... Но я не нашел решения проблемы... Вот в чем суть: есть программа написанная на С#, которая генерирует случайное, либо кому как нравиться, псевдо-случайное, большое, определяется числом бит, число. Как запустить программу из приложения Delphi 7 я знаю, в принципе, shellexecute с этим справляется, если я даже не ошибаюсь можно сделать так что бы программа запустилась в фоновом режиме. Но мне нужно узнать значение числа которое получилось на выходе программы. Я пробовал искать в сети но не чего не нашел... Использовать файл либо реестр и т.п. средства передачи числа не рассматривается... Переписать программу на Delphi тоже не вариант. Так вот может кто знает как получить значение переменной другой программы, или хотя бы подскажите как это назвать что бы поиск в сети принес больший результат. Заранее спасибо. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
Нельзя. 1 процесс не может влезть адресное пространство другой программы.
Хотя можно это при помощи CreateRemoteThread, но только если знаете, где искать. |
![]() |
![]() |
![]() |
#3 |
Регистрация: 01.01.2010
Сообщений: 5
|
![]()
Zloi Talib, прошу если вы такой умный подскажите как быть? А просто спамить не стоит...
Человек_Борща, я посмотрел функцию которую вы указали, в принципе суть ясна, но появился такой вопрос. При использование данной функции я так понимаю мы получаем общее пространство. То есть в свой программе я пишу функция которая получается общее адресное пространство для обеих программ, и я таким образом могу обратиться к нужной мне переменой по её имении и потом вернуть её значение в свою программу? Или я не правильно все понял? И вопрос после вызова функции я продолжаю с ней работать как обычным потоком? |
![]() |
![]() |
![]() |
#4 | ||
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]() Цитата:
1. программы скомпилированы разными компиляторами 2. одна программа ничего не знает об устройстве другой. Вы можете получить значение из адреса в АП в чужой программе, и это максимум. Так примерно работают игровые трейнеры,когда ищут значения и меняют их. Цитата:
И функция не вернет вам управление, пока не отработает CreateRemoteThread(Если не ошибаюсь). Если программу на шарпе писали вы, то Memory Mapped Files могут решить проблему. Если это чисто кудато выводится, его тоже можно получить. Можно для программы создать dll в которой будет происходить генерация числа и функция получения уже сгенерированного числа, тогда CreateRemoteThread будет иметь смысл, т.к. вы сможете вызвать функцию из этой DLL в АП чужого процесса, и вернуть к себе результат. Последний раз редактировалось Человек_Борща; 20.02.2012 в 12:07. |
||
![]() |
![]() |
![]() |
#5 |
Регистрация: 01.01.2010
Сообщений: 5
|
![]()
По поводу dll если я правильно понял мне проще запихнуть программу генерации числа в библиотеку и уже из Delphi работать не с исполняемой программой, а с библиотекой?
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
В целом, да. Зависит от задачи.
Я предложил вам варианты. |
![]() |
![]() |
![]() |
#7 |
Регистрация: 01.01.2010
Сообщений: 5
|
![]()
И последний вопрос. Если я сделаю библиотеку, то я могу просто вызвать из нее функцию, которая мне нужна или все таки из-за того что языки разные прийдеться использовать CreateRemoteThread?
|
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
Вам нужно переписать программу на c#, таким образом, чтобы вынести генерацию числа и функцию получения сгенерированного числа в DLL.
Ваша программа на delphi, создаёт RemoteThread который вызвает функцию получения уже готового числа, из этой dll в чужом адресном пространстве, и возвращает его вам. |
![]() |
![]() |
![]() |
#9 |
Регистрация: 01.01.2010
Сообщений: 5
|
![]()
Спасибо огромное, вы очень помогли.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создание программы для управления некоторыми функциями другой программы | Юрий1991 | Общие вопросы Delphi | 6 | 03.02.2012 15:32 |
запуск программы из под другой программы | fomikadze | Общие вопросы C/C++ | 8 | 13.06.2011 14:47 |
Копия программы на другой компьютер | Ayubkhon | Безопасность, Шифрование | 5 | 15.06.2010 14:43 |
Вызов другой программы | Anatoly555 | Помощь студентам | 1 | 18.03.2010 08:08 |
Запуск программы на выполнение из другой программы. | ViNcHeStEr | Паскаль, Turbo Pascal, PascalABC.NET | 6 | 18.06.2008 14:33 |