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

RusFAQ.ru: Win API


Информационный Канал Subscribe.Ru


RusFAQ.ru: Win API

Выпуск № 042
от 17.01.2004, 01:10

Администратор:
Имя: Калашников О. А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 107
Отправлено ответов: 180
Активность: 168.2 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Pawel
Статус: Доверительный
Общий рейтинг: 167.21
[Подробней >>]
Neomant
Статус: Начальный
Общий рейтинг: 117.54
[Подробней >>]
chebv
Статус: Доверительный
Общий рейтинг: 114.61
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 96. Эксперту Pawel. Я пишу на С.Пытаюсь записать тело exe-шника в конец моей проги,чтобы она могла потом... (ответов: 1)
Вопрос № 98. Приветствую вас, знатоки! Задача: на сервере в определённый момент запоминается текущее время. Клиен... (ответов: 1)
Вопрос № 99. Hi,All! По поводу вопроса N74 (не срабатывает стиль DS_CENTER). Информация к размышлению: При измене... (ответов: 1)
Вопрос № 100. Здравствуйте, я хотела бы узнать как с помощью функций WinIPI можно узнать содержимое конкретного п... (ответов: 2)
Вопрос № 101. По моей задумке следующая ф-ия, должна найти окно с хэндлом Wnd, затем вписать в первое после комбоб... (ответов: 1)
Вопрос № 103. Ув эксперты! Проблема.Есть массив указателей,он объявлен глобально. char *szFiles[] = { "t... (ответов: 2)

Вопросов: 6, ответов: 8


 Вопрос № 96

Эксперту Pawel.
Я пишу на С.Пытаюсь записать тело exe-шника в конец моей проги,чтобы она могла потом его 'родить'.Но есть ряд проблем.Во-первых,не получается прочитать из своей работающей проги в нее же записанный exe-шник.Во-вторых,не могу скопировать тело exe-шника в конец этой проги.Все делаю правильно,но копируется только три символа: MZђ
Когда эти символы не присутствуют,а есть другой текст - все копируется нормально.Мне предложили присоединить exe-шник к своей проге в виде бинарного ресурса,но как конкретно это сделать я не соображу.И как им потом воспользоваться.Вот такие проблемы.



Вопрос отправлен: 11.01.2004, 02:22
Отправитель: Alex

[Следующий вопрос >>] [Список вопросов]

Отвечает Pawel

Приветствую Вас, Alex!
Чтобы прочитать из своего ехе нужно его откопировать потом прочитать и удалить.
Если я правельно помню (книги по С нет под рукой) то есть функция для работы с текстовыми фаилами, а есть для работы с двоичными. Попробуй воспользоваться функциями С а не WinApi.
C бинарным ресурсом всё конечно проще.
1Тебе нужен компилятор ресурсов например Brcc32.exe
2Далее создаём RС фаил и пишем туда, допустим
ARJ EXEFILE C:UTILARJ.EXE
имя тип_фаила путь_к_фаилу
3Запустим Brcc32.exe с параметром: путь к RC фаилу.
4 В программе находим ресурс с помощью Api функций
См приложение.


Приложение:

Ответ отправлен: 11.01.2004, 10:34
Отправитель: Pawel


 Вопрос № 98

Приветствую вас, знатоки!
Задача: на сервере в определённый момент запоминается текущее время. Клиентская программа может считать запомненное время и сравнить его с текущим. Если разница составляет более 15 минут, то необходимо сделать определённые действия...
Проблема: сервер находится во временнОй зоне, в которой учитывается переход на летнее время (обязательно учитывается). Клиентская часть может находиться в любой временнОй зоне (как с переходом на летнее время, так и без него). НО клиентская часть не может оределить, по летнему или зимнему времени работает сервер, поскольку функция GetTimeZoneInformation даёт только характеристики локальной временнОй зоны.
Из-за этого невозможно достоверно определить ту самую разницу в 15 минут...
Вот и сам вопрос: как определить, перешёл ли сервер на летнее время или нет?



Вопрос отправлен: 11.01.2004, 03:29
Отправитель: Артём Шегеда

[Следующий вопрос >>] [Список вопросов]

Отвечает Pawel

Доброе время суток, Артём Шегеда!
Попробуй использовать функцию GetSystemTime().
Она возвращает время по Гринвечу вне зависемости от зоны.

Ответ отправлен: 11.01.2004, 10:48
Отправитель: Pawel


 Вопрос № 99

Hi,All!
По поводу вопроса N74 (не срабатывает стиль DS_CENTER).
Информация к размышлению: При изменении Susbystem Windows GUI с версии 3.10 (tasm устанавливает по умолчанию, насчет masm не знаю) на 4.0 окно центруется. Для исправления сего досадного недоразумения достаточно при линковке (tlink/tlink32) добавить ключик -V4.0.
Ну и разумеется задам еще пару вопросиков:
1. Чем отличается PostMessage от SendMessage? Вроде такой вопрос уже задавали, но я его не нашел.
2. При работе с MapViewOfFile (см. приложение) при попытке задать "смещение в файле" отличное от 0 функция возвращает ошибку. А почему?
P.S. Брат мой, "вопрошающий", да не поленись ты оставить свой email суровый, в рассылке сей полезной. Дабы могли братья твои, "разумеющие", всем миром помочь тебе. И да прибудет с нами Отец наш, Великий АССЕМБЛЕР.


Приложение:


Вопрос отправлен: 11.01.2004, 12:09
Отправитель: Germsoft (germsoft@krovatka.net)

[Следующий вопрос >>] [Список вопросов]

Отвечает Pawel

Добрый день, Germsoft!
Function PostMessage(Wnd: HWnd; Msg, wParam: Word; lParam: Longint): Bool;
Напpавляет сообщение окну пpикладной задачи.
Function SendMessage(Wnd: HWnd; Msg, wParam: Word; lParam: Longint): Longint;
Посылает сообщение оконной функции указанного окна. Возвpат из функции осуществляется только после обpаботки сообщения.




Ответ отправлен: 11.01.2004, 14:53
Отправитель: Pawel


 Вопрос № 100

Здравствуйте, я хотела бы узнать как с помощью функций WinIPI можно узнать содержимое конкретного пула в памяти.



Вопрос отправлен: 11.01.2004, 14:37
Отправитель: Елена (svalx@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Pawel

Добрый день, Елена!
Можно по точнее.

Ответ отправлен: 11.01.2004, 14:58
Отправитель: Pawel


Отвечает Neomant

Доброе время суток, Уважаемая Елена!
Ваш вопрос задан не совсем корректно, переформулируйте свой вопрос и возможно Вы получите на него ответ.

Ответ отправлен: 13.01.2004, 01:36
Отправитель: Neomant


 Вопрос № 101

По моей задумке следующая ф-ия, должна найти окно с хэндлом Wnd, затем вписать в первое после комбобокса
поле Edit пробел(в моем случае в окно диалога при подключении к сети в Int.exp). Почему она не находит поле Edit? В чем моя ошибка?


Приложение:


Вопрос отправлен: 11.01.2004, 20:16
Отправитель: Frre

[Следующий вопрос >>] [Список вопросов]

Отвечает Pawel

Здравствуйте, Frre!
Программа находит хоть что то?
По мойму должна работать.
Можно развечто в строке
Wnd = GetWindow(Wnd, GW_CHILD);
использовать другую переменную.

Ответ отправлен: 12.01.2004, 12:35
Отправитель: Pawel


 Вопрос № 103

Ув эксперты!
Проблема.Есть массив указателей,он объявлен глобально.
char *szFiles[] =
{
"test1.exe",
"test2.exe",
"test3.exe",
"test4.exe",
"test5.exe"
};
Если ф-ия не принимает его параметром,а обращается непосрелственно к нему,то sizeof(szFiles)/sizeof(szFiles[0]) показывает 5,как и следует.Но если ф-ия принимает его как параметр
void CreateShortcut(char* szFile[]),то sizeof(szFile)/sizeof(szFile[0]) показывает уже 1.А мне бы не хотелось из ф-ии обращаться к глобальным переменным.
Принять размер массива как параметр я тоже не могу,в ф-ии будет свой массив и его размер должен быть размером szFiles,а для этого компилятор требует константное выражение,т.е.
void CreateShortcut(char* szFile[],int iArraySize)
{
IShellLink *SLink[iArraySize]; //не годится
Как можно выйти из положения?
Спасибо.



Вопрос отправлен: 12.01.2004, 14:53
Отправитель: Alex

[Следующий вопрос >>] [Список вопросов]

Отвечает chebv

Здравствуйте, Alex!
IShellLink *SLink[iArraySize]; - так действительно, не получится (компилятор тоже не знает, какой будет размер массива:). Используй динамическое выделение памяти.
sizeof(szFile)/sizeof(szFile[0]) - показывает размер 1. Опять же, в объявлении функции стоит CreateShortcut(char* szFile[]) - нет ни слова о размере, szFile - это просто указатель на указатель, который имеет размер 4 байта. 4/4=1.
Можно размер массива подсчитывать в теле функции. Признаком последнего элемента в массиве можно указать NULL.

Ответ отправлен: 13.01.2004, 09:14
Отправитель: chebv


Отвечает Pawel

Добрый день, Alex!
Необходимо указать размер массива, или динамически или в функции.
Как это сделать в С я не знаю.


Ответ отправлен: 13.01.2004, 12:25
Отправитель: Pawel



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


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


Получить ответов:


 Выбор рассылки

Программисту
Assembler (24)
C / C++ (17)
Perl (4)
Builder / Delphi (18)
Pascal (19)
Basic / VBA (5)
Java / JavaScript (5)
PHP (13)
Криптография (5)
WinAPI (12)
Пользователю
Windows 95/98/Me (40)
Windows NT/2000/XP (58)
"Железо" (30)
Поиск информации (20)
Администратору
Windows NT/2000/XP (28)
Linux / Unix (10)
Юристу
Гражданское право (13)
Семейное право (10)
Трудовое право (11)
КоАП (10)

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




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2004 Россия, Москва. Авторское право: Калашников О.А.

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное