Вопрос № 54003: Здравствуйте, уважаемые эксперты!
Вопрос: есть две программы, нужно, чтобы они пользвались (могли получать и изменять значения) одними переменными: какие функции? События не пойдут...
Спасибо!...Вопрос № 54076: Доброго времени суток уважаемые эксперты.
Подскажите пожалуйста API функцию поиска файлов.
Заранее спасибо....
Вопрос № 54.003
Здравствуйте, уважаемые эксперты!
Вопрос: есть две программы, нужно, чтобы они пользвались (могли получать и изменять значения) одними переменными: какие функции? События не пойдут...
Спасибо!
Отвечает: Vaga
Здравствуйте, Наумов Сергей Александрович / snov!
Не уверен, что понял вопрос.
Если речь идет об обмене данными между программами, то можно посмотреть здесь http://www.firststeps.ru/, Шаг 117.
--------- Вольному - воля
Ответ отправил: Vaga (статус: 2-ой класс)
Ответ отправлен: 01.09.2006, 18:03
Отвечает: Яруллин Азат Рифкатович
Здравствуйте, Наумов Сергей Александрович / snov!
1. С помощью DLL.
Все процессы, загрузившие одну и у ту же библиотеку (dll) будут использовать общую область памяти.
Это можно сделать следующим образом:
#pragma data_seg(".myseg")
int sharedlnts[10];
// другие переменные общего пользования
#pragma data_seg()
#pragma comment(lib, "msvcrt" "-SECTION:.myseg,rws");
Массив sharedlnts будет использоваться всеми процессами, загрузившими данную библиотеку.
подробнее здесь:
http://www.realcoding.net/article/view/2713?ShmID=e2abb6f172de14b33bd7d4d6bbf130f4
2. Клиент - сервер (можно сделать передачу данных в 2 направлениях).
Это можно реализовать с помощью:
- сокетов, подробнее здесь:
http://www.rsdn.ru/article/files/progs/inetd.xml
http://sources.ru/cpp/cpp_network.shtml#3
http://www.realcoding.net/article/view/2232?ShmID=554616e5c2822e365c71f6f654e37fb9
- каналы (named pipes)
http://www.excode.ru/art6065p1.html
3. Разделяемые файлы.
Смысл такой, что один процесс записывает информацию в файл, другой читает.
По моему, это легко реализовать с помощью ini файлов.
работа с ini файлами:
http://firststeps.ru/mfc/ini/ini1.html
Это вроде все основные способы... выбирайте...
Удачи!
Ответ отправил: Яруллин Азат Рифкатович (статус: Студент)
Ответ отправлен: 01.09.2006, 21:24 Оценка за ответ: 5
Отвечает: Falcao
Здравствуйте, Наумов Сергей Александрович / snov!
коммент: static int sharedlnts[10];
Помоему, стоит объявить static.
Ответ отправил: Falcao (статус: 1-ый класс)
Ответ отправлен: 01.09.2006, 21:32 Оценка за ответ: 2 Комментарий оценки: при объявлении переменной через static переменная не становится глобальной, но выгружается она только по окончании существования программы, то есть выделяет система место под нее 1 раз. for(..){ if(..){ static int m = 0; if (m == 0) m = 5; else MessageBox(NULL,"!","",NULL); } } уже на второй проход программа попадет на MessageBox.
Отвечает: Zubex
Здравствуйте, Наумов Сергей Александрович / snov!
Я бы посоветовал Вам посмотреть в MSDN в сторону FindWindow и WM_COPYDATA!
--------- Если не знаешь что сказать - лучше промолчи...
Ответ отправил: Zubex (статус: 6-ой класс)
Ответ отправлен: 04.09.2006, 09:41
Вопрос № 54.076
Доброго времени суток уважаемые эксперты.
Подскажите пожалуйста API функцию поиска файлов.
Заранее спасибо.
Отправлен: 02.09.2006, 13:11
Вопрос задал: ENS (статус: 1-ый класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Яруллин Азат Рифкатович
Здравствуйте, ENS!
FindFirstFile - Функция возвращает указатель на найденный файл, если нет то возврат будет типа ERROR_NO_MORE_FILES.
С/С++:
HANDLE FindFirstFile(
LPCTSTR lpFileName, // Строка содержащая путь для поиска файлов.
LPWIN32_FIND_DATA lpFindFileData // Информация о файле
);
Delphi:
function FindFirstFile(
lpFileName: PChar; // Строка содержащая путь для поиска файлов.
var lpFindFileData: TWIN32FindData // Информация о файле
): THandle; stdcall;
lpFileName - строка содержащая путь для поиска файла. Эта строка может указывать на конкретный файл типа 'c:\filename.txt' или может хранить шаблон 'c:\*.txt'. Если Вы указываете шаблон, то это даёт возможность перечислить все файлы удовлетворяющие шаблону.
lpFindFileData - структура WIN32_FIND_DATA, в которую будет записана информация о найденном файле.
typedef struct _WIN32_FIND_DATA {
DWORD dwFileAttributes; // Атрибуты файла
FILETIME ftCreationTime; // Время создания
FILETIME ftLastAccessTime; //Время последнего доступа
FILETIME ftLastWriteTime; //Время последней записи в файл
DWORD nFileSizeHigh; //Верхний байт размера файла
DWORD nFileSizeLow; //Нижний байт размера файла
DWORD dwReserved0; //Зарезервировано
DWORD dwReserved1; //Зарезервировано
TCHAR cFileName[ MAX_PATH ]; //Имя файла
TCHAR cAlternateFileName[ 14 ]; //Имя файла для отображения в DOS (8:3)
} WIN32_FIND_DATA;
FindNextFile - Функция продолжает поиск начатый с помощью FindFirstFile.
С/С++:
BOOL FindNextFile(
HANDLE hFindFile, // Указатель на файл из предыдущего поиска
LPWIN32_FIND_DATA lpFindFileData // Информация о файле
);
Delphi:
function FindNextFile(
hFindFile: THandle; // Указатель на файл из предыдущего поиска
var lpFindFileData: TWIN32FindData // Информация о файле
): BOOL; stdcall;
HANDLE hFindFile - это указатель на файл из предыдущего поиска. Он нужен, чтобы функция FindNextFile знала на каком файле Вы остановили поиск и какой надо найти следующим.
FindClose - Функция завершает поиск файлов.
С/С++:
BOOL FindClose(
HANDLE hFindFile // Указатель на последний найденный файл
);
Delphi:
function FindClose(
hFindFile: THandle // Указатель на последний найденный файл
): BOOL; stdcall;
Пример использования:
http://www.firststeps.ru/mfc/winapi/r.php?158
Удачи!
Ответ отправил: Яруллин Азат Рифкатович (статус: Студент)
Ответ отправлен: 02.09.2006, 14:57 Оценка за ответ: 5