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

RFpro.ru: Консультации по функциям WinAPI


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

Лучшие эксперты по данной тематике

Коцюрбенко Алексей aka Жерар
Статус: Мастер-Эксперт
Рейтинг: 1886
∙ повысить рейтинг »
CradleA
Статус: Профессионал
Рейтинг: 770
∙ повысить рейтинг »
Орловский Дмитрий
Статус: Мастер-Эксперт
Рейтинг: 0
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / WinAPI

Номер выпуска:630
Дата выхода:11.03.2016, 16:21
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:7 / 7
Вопросов / ответов:3 / 6

Консультация # 18268: Ув эксперты! Подскажите,плз,каким образом можно читать содержимое doc и xls файлов,например,для поиска строки? Спасибо....
Консультация # 114004: Здравствуйте уважаемые эксперты! Обнаружил проблему утечки памяти. Не знаю в чём проблема, изходя из WIN API, кажется всё правильно При однократном нажатии на кнопку теряется около 500 - 700 кб....
Консультация # 48580: Здравствуйте Эксперты! Помогите советом... 1) Можно ли перехватить любое событие, например WM_DESTROY, какому бы оно окну не адресовалось. Если можно, поясните кодом. Я так понимаю, этот "шпион" должен располагаться в цикле обработки сообщений, созданной мной программы. 2) Я так понимаю, что программа должна пропускать через себя ...

Консультация # 18268:

Ув эксперты!
Подскажите,плз,каким образом можно читать содержимое doc и xls файлов,например,для поиска строки?
Спасибо.

Дата отправки: 14.03.2005, 16:29
Вопрос задал: Ling
Всего ответов: 2
Страница онлайн-консультации »


Консультирует vitya:

Здравствуйте, Ling!
Используйте Automation. В MSDN есть много примеров на VB, как работать с Word и Excel документами. Кроме того, можете поискать формат файлов - тогда можно будет экстрактировать текст и искать уже ручками.

Консультировал: vitya
Дата отправки: 14.03.2005, 16:35
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Shizuku Tsukishima:

Здравствуйте, Ling!
Текстовое содержимое doc файла можно прочитать установив кодировку unicode при просмотре. Отсюда вывод: читать можно как обычный текстовый файл, но предварительно нужно установить юникодный шрифт, а там и строчка найдётся...
Есть ещё один способ, возможно он понравится Вам больше. Используйте компонент OleContainer из палитры System.
Есть и третий способ (тяжёлый). Вы подключаетесь к Word или Excel как к com серверу и делаете всё, что хотите. Такой способ позволяет, например, часть ваших функций реализовать на VBA.

Консультировал: Shizuku Tsukishima
Дата отправки: 15.03.2005, 12:46
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 114004:

Здравствуйте уважаемые эксперты!

Обнаружил проблему утечки памяти. Не знаю в чём проблема, изходя из WIN API, кажется всё правильно

При однократном нажатии на кнопку теряется около 500 - 700 кб.

Дата отправки: 14.12.2007, 15:41
Вопрос задал: Кутубаев Нурлан Юсупович
Всего ответов: 3
Страница онлайн-консультации »


Консультирует Geograph:

Здравствуйте, Кутубаев Нурлан Юсупович!
Возможно не хватает CloseHandle(hdib);

Консультировал: Geograph
Дата отправки: 14.12.2007, 16:06
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Mihail Yarlykov:

Здравствуйте, Кутубаев Нурлан Юсупович!
Для любой функции Create должна быть вызвана функция Delete.
В данном случае необходимо удалять создаваемый HBITMAP:
DeleteObject( hbm );

Консультировал: Mihail Yarlykov
Дата отправки: 14.12.2007, 16:13
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Mitya86:

Здравствуйте, Кутубаев Нурлан Юсупович!

Нужно удалять битмапу с помощью DeleteObject, т.к. это объект GDI.
А утечки памяти можно искать с точностью до строки в коде, которая создала неудаленный объект. Для этого надо сделать такие объявления в главном файле проекта(ну или в том модуле, где надо найти утечку):

#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>

А затем вызвать метод _CrtDumpMemoryLeaks();
Только после этого метода начнется обнаружение утечек. При обнаружении утечки компилятор будет выдавать подобные предупреждения во время выполнения:

Detected memory leaks!
Dumping objects ->
C:\PROGRAM FILES\VISUAL STUDIO\MyProjects\leaktest\leaktest.cpp(20) : {18}
normal block at 0x00780E80, 64 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
Object dump complete.

Все это применимо к Microsoft Visual Studio 2005, может будет работать и в более ранних версиях, лично не проверял.

Консультировал: Mitya86
Дата отправки: 14.12.2007, 18:39
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 48580:

Здравствуйте Эксперты! Помогите советом...
1) Можно ли перехватить любое событие, например WM_DESTROY, какому бы оно окну не адресовалось. Если можно, поясните кодом. Я так понимаю, этот "шпион" должен располагаться в цикле обработки сообщений, созданной мной программы.
2) Я так понимаю, что программа должна пропускать через себя все сообщения в системе, вероятно, это может стать причиной снижения производительности, а если ли альтернативные этому способы ожидания события?

Дата отправки: 09.07.2006, 00:25
Вопрос задал: Rodion
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Решетник Д:

Здравствуйте, Rodion!
Немного не так Вы рассуждаете. В цикл приложению передаются только ЕГО сообщения. и таким образом в нем можно перехватить сообщение WM_DESTROY только разрушении данного окна (Вашего).
Для решения Вашей задачи нужно использовать ГЛОБАЛЬНУЮ ЛОВУШКУ.
Для ее создания ищите в справке по ключевым словам: SetWindowsHookEx, UnhookWindowsHookEx.
При этом ловушки бывают разного назначения, о чем написано в !любой справке Win32 SDK (хотя бы даже от Borland).
В Вашем случае нужно использовать тип WH_SHELL.
Аспекты реализации самой ловушки можно прочитать в той же документации. Отмечу только, что глобальная ловушка ДОЛЖНА размещаться в отдельной библиотеке (ДЛЛ).
Удачи

Консультировал: Решетник Д
Дата отправки: 09.07.2006, 10:11
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное