Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Win API


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / WinAPI

Выпуск № 300
от 07.09.2006, 15:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 357, Экспертов: 34
В номере:Вопросов: 2, Ответов: 5


Вопрос № 54003: Здравствуйте, уважаемые эксперты! Вопрос: есть две программы, нужно, чтобы они пользвались (могли получать и изменять значения) одними переменными: какие функции? События не пойдут... Спасибо!...
Вопрос № 54076: Доброго времени суток уважаемые эксперты. Подскажите пожалуйста API функцию поиска файлов. Заранее спасибо....

Вопрос № 54.003
Здравствуйте, уважаемые эксперты!
Вопрос: есть две программы, нужно, чтобы они пользвались (могли получать и изменять значения) одними переменными: какие функции? События не пойдут...
Спасибо!
Отправлен: 01.09.2006, 16:28
Вопрос задал: Наумов Сергей Александрович / snov (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: 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


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.36 от 06.09.2006
Яндекс Rambler's Top100

В избранное